You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Changed all functions currently raising the private NoCurrentAsyncBackend exception (since v4.12.0) to instead raise the public NoEventLoopError exception (#1048)
Fixed anyio.functools.lru_cache not working with instance methods (#1042)
Added support for asyncio's task call graphs on Python 3.14 and later when using AnyIO's task groups (#1025)
Added an asynchronous implementation of the functools module (#1001)
Added support for uvloop=True on Windows via the winloop implementation (#960; PR by @Vizonex)
Added support for use as a context manager to anyio.lowlevel.RunVar (#1003)
Added __all__ declarations to public submodules (anyio.lowlevel etc.) (#1009)
Added the ability to set the token count of a CapacityLimiter to zero (#1019; requires Python 3.10 or later when using Trio)
Added parameters case_sensitive and recurse_symlinks along with support for path-like objects to anyio.Path.glob() and anyio.Path.rglob() (#1033; PR by @northisup)
Dropped sniffio as a direct dependency and added the get_available_backends() function (#1021)
Fixed Process.stdin.send() not raising ClosedResourceError and BrokenResourceError on asyncio. Previously, a non-AnyIO exception was raised in such cases (#671; PR by @gschaffner)
Fixed Process.stdin.send() not checkpointing before writing data on asyncio (#1002; PR by @gschaffner)
Fixed a race condition where cancelling a Future from BlockingPortal.start_task_soon() would sometimes not cancel the async function (#1011; PR by @gschaffner)
Fixed the presence of the pytest plugin causing breakage with older versions of pytest (<= 6.1.2) (#1028; PR by @saper)
Fixed a rarely occurring RuntimeError: Set changed size during iteration while shutting down the process pool when using the asyncio backend (#985)
Added support for cancellation reasons (the reason parameter to CancelScope.cancel()) (#975)
Bumped the minimum version of Trio to v0.31.0
Added the ability to enter the event loop from foreign (non-worker) threads by passing the return value of anyio.lowlevel.current_token() to anyio.from_thread.run() and anyio.from_thread.run_sync() as the token keyword argument (#256)
Added pytest option (anyio_mode = "auto") to make the pytest plugin automatically handle all async tests (#971)
Added the anyio.Condition.wait_for() method for feature parity with asyncio (#974)
Changed the default type argument of anyio.abc.TaskStatus from Any to None (#964)
Fixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when local_port=0 (#857; PR by @11kkw and @agronholm)
Fixed inconsistency between Trio and asyncio where a TCP stream that previously raised a BrokenResourceError on send() would still raise BrokenResourceError after the stream was closed on asyncio, but ClosedResourceError on Trio. They now both raise a ClosedResourceError in this scenario. (#671)
Added the feed_data() method to the BufferedByteReceiveStream class, allowing users to inject data directly into the buffer
Added various class methods to wrap existing sockets as listeners or socket streams:
SocketListener.from_socket()
SocketStream.from_socket()
UNIXSocketStream.from_socket()
UDPSocket.from_socket()
ConnectedUDPSocket.from_socket()
UNIXDatagramSocket.from_socket()
ConnectedUNIXDatagramSocket.from_socket()
Added a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects
Added context manager mix-in classes (anyio.ContextManagerMixin and anyio.AsyncContextManagerMixin) to help write classes that embed other context managers, particularly cancel scopes or task groups (#905; PR by @agronholm and @tapetersen)
Added the ability to specify the thread name in start_blocking_portal() (#818; PR by @davidbrochart)
Added anyio.notify_closing to allow waking anyio.wait_readable and anyio.wait_writable before closing a socket. Among other things, this prevents an OSError on the ProactorEventLoop. (#896; PR by @graingert)
Incorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)
Added a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's
Updated the to_interpreters module to use the public concurrent.interpreters API on Python 3.14 or later
Fixed anyio.Path.copy() and anyio.Path.copy_into() failing on Python 3.14.0a7
Fixed return annotation of __aexit__ on async context managers. CMs which can suppress exceptions should return bool, or None otherwise. (#913; PR by @Enegg)
Fixed rollover boundary check in SpooledTemporaryFile so that rollover only occurs when the buffer size exceeds max_size (#915; PR by @11kkw)
Migrated testing and documentation dependencies from extras to dependency groups
Fixed compatibility of anyio.to_interpreter with Python 3.14.0b2 (#926; PR by @hroncok)
Fixed SyntaxWarning on Python 3.14 about return in finally (#816)
Fixed RunVar name conflicts. RunVar instances with the same name should not share storage (#880; PR by @vimfu)
Renamed the BrokenWorkerIntepreter exception to BrokenWorkerInterpreter. The old name is available as a deprecated alias. (#938; PR by @ayussh-verma)
Fixed an edge case in CapacityLimiter on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (#947)
Added async support for temporary file handling (#344; PR by @11kkw)
Added 4 new fixtures for the AnyIO pytest plugin:
free_tcp_port_factory: session scoped fixture returning a callable that generates unused TCP port numbers
free_udp_port_factory: session scoped fixture returning a callable that generates unused UDP port numbers
free_tcp_port: function scoped fixture that invokes the free_tcp_port_factory fixture to generate a free TCP port number
free_udp_port: function scoped fixture that invokes the free_udp_port_factory fixture to generate a free UDP port number
Added stdin argument to anyio.run_process() akin to what anyio.open_process(), asyncio.create_subprocess(), trio.run_process(), and subprocess.run() already accept (PR by @jmehnle)
Added the info property to anyio.Path on Python 3.14
Changed anyio.getaddrinfo() to ignore (invalid) IPv6 name resolution results when IPv6 support is disabled in Python
Changed EndOfStream raised from MemoryObjectReceiveStream.receive() to leave out the AttributeError from the exception chain which was merely an implementation detail and caused some confusion
Fixed traceback formatting growing quadratically with level of TaskGroup nesting on asyncio due to exception chaining when raising ExceptionGroups in TaskGroup.__aexit__ (#863; PR by @tapetersen)
Fixed anyio.Path.iterdir() making a blocking call in Python 3.13 (#873; PR by @cbornet and @agronholm)
Fixed connect_tcp() producing cyclic references in tracebacks when raising exceptions (#809; PR by @graingert)
Fixed 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)
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.
If you want to rebase/retry this PR, check this box
To execute skipped test pipelines write comment /ok-to-test.
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0
chore(deps): update dependency anyio to v4.12.0 - autoclosed
Nov 29, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0 - autoclosed
chore(deps): update dependency anyio to v4.12.0
Dec 1, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0
chore(deps): update dependency anyio to v4.12.0 - autoclosed
Dec 1, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0 - autoclosed
chore(deps): update dependency anyio to v4.12.0
Dec 1, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0
chore(deps): update dependency anyio to v4.12.0 - autoclosed
Dec 2, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0 - autoclosed
chore(deps): update dependency anyio to v4.12.0
Dec 2, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0
chore(deps): update dependency anyio to v4.12.0 - autoclosed
Dec 2, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0 - autoclosed
chore(deps): update dependency anyio to v4.12.0
Dec 2, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0
chore(deps): update dependency anyio to v4.12.0 - autoclosed
Dec 2, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0 - autoclosed
chore(deps): update dependency anyio to v4.12.0
Dec 2, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.0
chore(deps): update dependency anyio to v4.12.0 - autoclosed
Dec 2, 2025
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.1
chore(deps): update dependency anyio to v4.12.1 - autoclosed
Feb 13, 2026
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.1 - autoclosed
chore(deps): update dependency anyio to v4.12.1
Feb 13, 2026
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.1
chore(deps): update dependency anyio to v4.12.1 - autoclosed
Feb 13, 2026
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.1 - autoclosed
chore(deps): update dependency anyio to v4.12.1
Feb 13, 2026
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.1
chore(deps): update dependency anyio to v4.12.1 - autoclosed
Feb 13, 2026
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.1 - autoclosed
chore(deps): update dependency anyio to v4.12.1
Feb 13, 2026
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.1
chore(deps): update dependency anyio to v4.12.1 - autoclosed
Feb 13, 2026
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.1 - autoclosed
chore(deps): update dependency anyio to v4.12.1
Feb 13, 2026
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.1
chore(deps): update dependency anyio to v4.12.1 - autoclosed
Feb 13, 2026
konflux-internal-p02bot
changed the title
chore(deps): update dependency anyio to v4.12.1 - autoclosed
chore(deps): update dependency anyio to v4.12.1
Feb 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.8.0->==4.12.1Release Notes
agronholm/anyio (anyio)
v4.12.1Compare Source
NoCurrentAsyncBackendexception (since v4.12.0) to instead raise the publicNoEventLoopErrorexception (#1048)anyio.functools.lru_cachenot working with instance methods (#1042)v4.12.0Compare Source
functoolsmodule (#1001)uvloop=Trueon Windows via the winloop implementation (#960; PR by @Vizonex)anyio.lowlevel.RunVar(#1003)__all__declarations to public submodules (anyio.lowleveletc.) (#1009)CapacityLimiterto zero (#1019; requires Python 3.10 or later when using Trio)case_sensitiveandrecurse_symlinksalong with support for path-like objects toanyio.Path.glob()andanyio.Path.rglob()(#1033; PR by @northisup)sniffioas a direct dependency and added theget_available_backends()function (#1021)Process.stdin.send()not raisingClosedResourceErrorandBrokenResourceErroron asyncio. Previously, a non-AnyIO exception was raised in such cases (#671; PR by @gschaffner)Process.stdin.send()not checkpointing before writing data on asyncio (#1002; PR by @gschaffner)FuturefromBlockingPortal.start_task_soon()would sometimes not cancel the async function (#1011; PR by @gschaffner)RuntimeError: Set changed size during iterationwhile shutting down the process pool when using the asyncio backend (#985)v4.11.0Compare Source
reasonparameter toCancelScope.cancel()) (#975)anyio.lowlevel.current_token()toanyio.from_thread.run()andanyio.from_thread.run_sync()as thetokenkeyword argument (#256)anyio_mode = "auto") to make the pytest plugin automatically handle all async tests (#971)anyio.Condition.wait_for()method for feature parity with asyncio (#974)anyio.abc.TaskStatusfromAnytoNone(#964)local_port=0(#857; PR by @11kkw and @agronholm)BrokenResourceErroronsend()would still raiseBrokenResourceErrorafter the stream was closed on asyncio, butClosedResourceErroron Trio. They now both raise aClosedResourceErrorin this scenario. (#671)v4.10.0Compare Source
feed_data()method to theBufferedByteReceiveStreamclass, allowing users to inject data directly into the bufferSocketListener.from_socket()SocketStream.from_socket()UNIXSocketStream.from_socket()UDPSocket.from_socket()ConnectedUDPSocket.from_socket()UNIXDatagramSocket.from_socket()ConnectedUNIXDatagramSocket.from_socket()anyio.ContextManagerMixinandanyio.AsyncContextManagerMixin) to help write classes that embed other context managers, particularly cancel scopes or task groups (#905; PR by @agronholm and @tapetersen)start_blocking_portal()(#818; PR by @davidbrochart)anyio.notify_closingto allow wakinganyio.wait_readableandanyio.wait_writablebefore closing a socket. Among other things, this prevents an OSError on theProactorEventLoop. (#896; PR by @graingert)to_interpretersmodule to use the publicconcurrent.interpretersAPI on Python 3.14 or lateranyio.Path.copy()andanyio.Path.copy_into()failing on Python 3.14.0a7__aexit__on async context managers. CMs which can suppress exceptions should returnbool, orNoneotherwise. (#913; PR by @Enegg)SpooledTemporaryFileso that rollover only occurs when the buffer size exceedsmax_size(#915; PR by @11kkw)anyio.to_interpreterwith Python 3.14.0b2 (#926; PR by @hroncok)SyntaxWarningon Python 3.14 aboutreturninfinally(#816)BrokenWorkerIntepreterexception toBrokenWorkerInterpreter. The old name is available as a deprecated alias. (#938; PR by @ayussh-verma)CapacityLimiteron asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (#947)v4.9.0Compare Source
pytestplugin: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_factoryfixture to generate a free TCP port numberfree_udp_port: function scoped fixture that invokes thefree_udp_port_factoryfixture to generate a free UDP port numberstdinargument toanyio.run_process()akin to whatanyio.open_process(),asyncio.create_subprocess(),trio.run_process(), andsubprocess.run()already accept (PR by @jmehnle)infoproperty toanyio.Pathon Python 3.14anyio.getaddrinfo()to ignore (invalid) IPv6 name resolution results when IPv6 support is disabled in PythonEndOfStreamraised fromMemoryObjectReceiveStream.receive()to leave out theAttributeErrorfrom the exception chain which was merely an implementation detail and caused some confusionTaskGroupnesting on asyncio due to exception chaining when raisingExceptionGroupsinTaskGroup.__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)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.
To execute skipped test pipelines write comment
/ok-to-test.Documentation
Find out how to configure dependency updates in MintMaker documentation or see all available configuration options in Renovate documentation.