-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore(deps): update dependency anyio to v4 #404
base: next
Are you sure you want to change the base?
Conversation
c5288bb
to
5fdb7cd
Compare
5fdb7cd
to
7485a71
Compare
⚠ Artifact update problemRenovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is. ♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
The artifact failure details are included below: File name: Pipfile.lock
|
7485a71
to
3d4516f
Compare
3d4516f
to
c3a629f
Compare
c3a629f
to
f603e46
Compare
f603e46
to
199aa5b
Compare
|
32af190
to
b2acb9e
Compare
d033c06
to
f171325
Compare
f171325
to
704789b
Compare
704789b
to
bae78a9
Compare
This PR contains the following updates:
==3.7.1
->==4.8.0
Release Notes
agronholm/anyio (anyio)
v4.8.0
Compare Source
copy()
,copy_into()
,move()
andmove_into()
methods inanyio.Path
, available in Python 3.14TaskGroup
on asyncio to always spawn tasks non-eagerly, even if using a task factory created viaasyncio.create_eager_task_factory()
, to preserve expected Trio-like task scheduling semantics (PR by @agronholm and @graingert)SO_RCVBUF
,SO_SNDBUF
andTCP_NODELAY
on the selector thread waker socket pair (this should improve the performance ofwait_readable()
andwait_writable()
when using theProactorEventLoop
) (#836; PR by @graingert)AssertionError
when usingnest-asyncio
(#840)__exit__
method (#847; PR by @Enegg)v4.7.0
Compare Source
TaskGroup
to work with asyncio's eager task factories (#764)wait_readable()
andwait_writable()
functions which will accept an object with a.fileno()
method or an integer handle, and deprecated their now obsolete versions (wait_socket_readable()
andwait_socket_writable()
) (PR by @davidbrochart)EventAdapter
(anEvent
with no bound async backend) to allowset()
to work even before an async backend is bound to it (#819)wait_readable()
andwait_writable()
onProactorEventLoop
(used on asyncio + Windows by default)ValueError
in the context of DNS failures (#815; PR by @graingert)readinto()
andreadinto1()
methods in theanyio.AsyncFile
class (#825)TaskInfo.has_pending_cancellation()
on asyncio returning false positives in cleanup code on Python >= 3.11 (#832; PR by @gschaffner)asyncio.Task.uncancel
when propagating aCancelledError
on exit to a cancelled parent scope (#790; PR by @gschaffner)v4.6.2.post1
Compare Source
v4.6.2
Compare Source
v4.6.1
Compare Source
This release contains all the changes from both v4.5.1 and v4.6.0, plus:
v4.6.0
Compare Source
CancelledError
on exit when the enclosing cancel scope has been effectively cancelled (#698)v4.5.2
Compare Source
v4.5.1
Compare Source
As Python 3.8 support was dropped in v4.6.0, this interim release was created to bring a regression fix to Python 3.8, and adds a few other fixes also present in v4.6.1.
RuntimeError
(#798)self
being different than the test'sself
in class-based tests (#633) (PR by @agronholm and @graingert)TypeError
withTLSStream
on Windows when a certificate verification error occurs when using a truststore SSL certificate (#795)anyio.Path
regarding the limitations imposed by the current Python version on several of its methods, and made theis_junction
method unavailable on Python versions earlier than 3.12 (#794)v4.5.0
Compare Source
anyio.Lock
andanyio.Semaphore
on asyncio (even up to 50 %)fast_acquire
parameter toanyio.Lock
andanyio.Semaphore
to further boost performance at the expense of safety (acquire()
will not yield control back if there is no contention)from_uri()
,full_match()
,parser
methods/properties inanyio.Path
, newly added in Python 3.13 (#737)run_process()
andopen_process()
:startupinfo
,creationflags
,pass_fds
,user
,group
,extra_groups
andumask
(#742)PathLike
inrun_process()
andopen_process()
to allow for path-like arguments, just likesubprocess.Popen
ResourceWarning
from an unclosed memory object stream to include its address for easier identificationstart_blocking_portal()
to always use daemonic threads, to accommodate the "loitering event loop" use case__repr__()
ofMemoryObjectItemReceiver
, whenitem
is not defined (#767; PR by @Danipulok)to_process.run_sync()
failing to initialize if__main__.__file__
pointed to a file in a nonexistent directory (#696)AssertionError: feed_data after feed_eof
on asyncio when a subprocess is closed early, before its output has been read (#490)TaskInfo.has_pending_cancellation()
on asyncio not respecting shielded scopes (#771; PR by @gschaffner)SocketStream.receive()
returningbytearray
instead ofbytes
when using asyncio withProactorEventLoop
(Windows) (#776)KeyboardInterrupt
(ctrl+c) hanging the asyncio pytest runnerv4.4.0
Compare Source
BlockingPortalProvider
class to aid with constructing synchronous counterparts to asynchronous interfaces that would otherwise require multiple blocking portals__slots__
toAsyncResource
so that child classes can use__slots__
(#733; PR by Justin Su)TaskInfo.has_pending_cancellation()
methodRuntimeError: called 'started' twice on the same task status
when cancelling a task in a TaskGroup created with thestart()
method before the first checkpoint is reached after callingtask_status.started()
(#706; PR by Dominik Schwabe)TaskGroup.start()
on asyncio:RuntimeError: called 'started' twice on the same task status
when cancelling a task in a TaskGroup created with thestart()
method before the first checkpoint is reached after callingtask_status.started()
(#706; PR by Dominik Schwabe)TaskGroup.start()
call gets cancelled (#685, #710)TypedAttributeLookupError
if a typed attribute getter raisesKeyError
PYTHONASYNCIODEBUG
environment variable when setting thedebug
flag inanyio.run()
SocketStream.receive()
not detecting EOF on asyncio if there is also data in the read buffer (#701)MemoryObjectStream
dropping an item if the item is delivered to a recipient that is waiting to receive an item but has a cancellation pending (#728)ResourceWarning
forMemoryObjectReceiveStream
andMemoryObjectSendStream
that were garbage collected without being closed (PR by Andrey Kazantcev)MemoryObjectSendStream.send()
not raisingBrokenResourceError
when the last correspondingMemoryObjectReceiveStream
is closed while waiting to send a falsey item (#731; PR by Ganden Schaffner)v4.3.0
Compare Source
Added support for the Python 3.12
walk_up
keyword argument inanyio.Path.relative_to()
(PR by Colin Taylor)Fixed passing
total_tokens
toanyio.CapacityLimiter()
as a keyword argument not working on thetrio
backend (#515)Fixed
Process.aclose()
not performing the minimum level of necessary cleanup when cancelled. Previously:Process.aclose()
could leak an orphan processrun_process()
could very briefly leak an orphan process.Process.aclose()
orrun_process()
on Trio could leave standard streams unclosed(PR by Ganden Schaffner)
Fixed
Process.stdin.aclose()
,Process.stdout.aclose()
, andProcess.stderr.aclose()
not including a checkpoint on asyncio (PR by Ganden Schaffner)Fixed documentation on how to provide your own typed attributes
v4.2.0
Compare Source
Add support for
byte
-based paths inconnect_unix
,create_unix_listeners
,create_unix_datagram_socket
, andcreate_connected_unix_datagram_socket
. (PR by Lura Skye)Enabled the
Event
andCapacityLimiter
classes to be instantiated outside an event loop threadBroadly improved/fixed the type annotations. Among other things, many functions and methods that take variadic positional arguments now make use of PEP 646
TypeVarTuple
to allow the positional arguments to be validated by static type checkers. These changes affected numerous methods and functions, including:anyio.run()
TaskGroup.start_soon()
anyio.from_thread.run()
anyio.from_thread.run_sync()
anyio.to_thread.run_sync()
anyio.to_process.run_sync()
BlockingPortal.call()
BlockingPortal.start_task_soon()
BlockingPortal.start_task()
(also resolves #560)
Fixed various type annotations of
anyio.Path
to match Typeshed:anyio.Path.__lt__()
anyio.Path.__le__()
anyio.Path.__gt__()
anyio.Path.__ge__()
anyio.Path.__truediv__()
anyio.Path.__rtruediv__()
anyio.Path.hardlink_to()
anyio.Path.samefile()
anyio.Path.symlink_to()
anyio.Path.with_segments()
(PR by Ganden Schaffner)
Fixed adjusting the total number of tokens in a
CapacityLimiter
on asyncio failing to wake up tasks waiting to acquire the limiter in certain edge cases (fixed with help from Egor Blagov)Fixed
loop_factory
anduse_uvloop
options not being used on the asyncio backend (#643)Fixed cancellation propagating on asyncio from a task group to child tasks if the task hosting the task group is in a shielded cancel scope (#642)
v4.1.0
Compare Source
trio.to_thread.run_sync()
using theabandon_on_cancel
keyword argument instead ofcancellable
cancellable
argument inanyio.to_thread.run_sync()
toabandon_on_cancel
(and deprecated the old parameter name)anyio.from_thread.check_cancelled()
ResourceGuard
class in the public API (#627)RuntimeError: Runner is closed
when running higher-scoped async generator fixtures in some cases (#619)asyncio
andtrio
where reraising a cancellation exception in anexcept*
block would incorrectly bubble out of its cancel scope (#634)v4.0.0
Compare Source
ExceptionGroup
class with the PEP 654BaseExceptionGroup
andExceptionGroup
ExceptionGroup
(orBaseExceptionGroup
if one or moreBaseException
were included)TaskGroup
always hits a yield point, regardless of whether there are running child tasks to be waited onanyio.Path.relative_to()
andanyio.Path.is_relative_to()
to only accept one argument, as passing multiple arguments is deprecated as of Python 3.12@asyncio.coroutine
)policy
option on theasyncio
backend was changed toloop_factory
to accommodateasyncio.Runner
anyio.run()
to useasyncio.Runner
(or a back-ported version of it on Pythons older than 3.11) on theasyncio
backendanyio.Path.is_junction()
andanyio.Path.walk()
methodscreate_unix_datagram_socket
andcreate_connected_unix_datagram_socket
to create UNIX datagram sockets (PR by Jean Hominal)from_thread.run
andfrom_thread.run_sync
not setting sniffio on asyncio. As a result:from_thread.run_sync
failing when used to call sniffio-dependent functions on asynciofrom_thread.run
failing when used to call sniffio-dependent functions on asyncio from a thread running trio or curiofrom_thread.start_blocking_portal(backend="asyncio")
in a thread running trio or curio (PR by Ganden Schaffner)item_type
argument ofcreate_memory_object_stream
was deprecated. To indicate the item type handled by the stream, usecreate_memory_object_stream[T_Item]()
instead. Type checking should no longer fail when annotating memory object streams with uninstantiable item types (PR by Ganden Schaffner)CancelScope.cancelled_caught
property which tells users if the cancel scope suppressed a cancellation exceptionfail_after()
raising an unwarrantedTimeoutError
when the cancel scope was cancelled before reaching its deadlineMemoryObjectReceiveStream.receive()
causing the receiving task on asyncio to remain in a cancelled state if the operation was cancelled after an item was queued to be received by the task (but before the task could actually receive the item)TaskGroup.start()
on asyncio not responding to cancellation from the outsideBlockingPortal
not notifying synchronous listeners (concurrent.futures.wait()
) when they're cancelledEvent.wait()
on asyncio in the case where the event was not yet setanyio.to_process()
being "lost" as unusable to the process pool when processes that have idled over 5 minutes are pruned at part of theto_process.run_sync()
call, leading to increased memory consumption (PR by Anael Gorfinkel)Changes since 4.0.0rc1:
TaskGroup.start_soon()
to accept any awaitables (already in v3.7.0 but was missing from 4.0.0rc1)CancelScope
to also consider the cancellation count (in addition to the cancel message) on asyncio to determine if a cancellation exception should be swallowed on scope exit, to combat issues where third party libraries catch theCancelledError
and raise another, thus erasing the original cancel messageTLSListener.handle_handshake_error()
on asyncio to log"NoneType: None"
instead of the error (PR by Ganden Schaffner)item_type
argument tocreate_memory_object_stream()
(but using it raises a deprecation warning and does nothing with regards to the static types of the returned streams)anyio.to_process()
being "lost" as unusable to the process pool when processes that have idled over 5 minutes are pruned at part of theto_process.run_sync()
call, leading to increased memory consumption (PR by Anael Gorfinkel)Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.