Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==4.4.0
->==4.9.0
Release Notes
agronholm/anyio (anyio)
v4.9.0
Compare Source
pytest
plugin:free_tcp_port_factory
: session scoped fixture returning a callable that generates unused TCP port numbersfree_udp_port_factory
: session scoped fixture returning a callable that generates unused UDP port numbersfree_tcp_port
: function scoped fixture that invokes thefree_tcp_port_factory
fixture to generate a free TCP port numberfree_udp_port
: function scoped fixture that invokes thefree_udp_port_factory
fixture to generate a free UDP port numberstdin
argument toanyio.run_process()
akin to whatanyio.open_process()
,asyncio.create_subprocess()
,trio.run_process()
, andsubprocess.run()
already accept (PR by @jmehnle)info
property toanyio.Path
on Python 3.14anyio.getaddrinfo()
to ignore (invalid) IPv6 name resolution results when IPv6 support is disabled in PythonEndOfStream
raised fromMemoryObjectReceiveStream.receive()
to leave out theAttributeError
from the exception chain which was merely an implementation detail and caused some confusionTaskGroup
nesting on asyncio due to exception chaining when raisingExceptionGroups
inTaskGroup.__aexit__
(#863; PR by @tapetersen)anyio.Path.iterdir()
making a blocking call in Python 3.13 (#873; PR by @cbornet and @agronholm)connect_tcp()
producing cyclic references in tracebacks when raising exceptions (#809; PR by @graingert)anyio.to_thread.run_sync()
needlessly holding on to references of the context, function, arguments and others until the next work item on asyncio (PR by @Wankupi)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 runnerConfiguration
📅 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.