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.1.0
->==4.7.0
Release Notes
agronholm/anyio (anyio)
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)
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.