4.12.0
Added 7
- Support for asyncio's task call graphs on Python 3.14 and later when using AnyIO's task groups
- Asynchronous implementation of the functools module
- Support for uvloop=True on Windows via the winloop implementation
- Support for use as a context manager to anyio.lowlevel.RunVar
- __all__ declarations to public submodules such as anyio.lowlevel
- Ability to set the token count of a CapacityLimiter to zero
- Parameters case_sensitive and recurse_symlinks along with support for path-like objects to anyio.Path.glob() and anyio.Path.rglob()
Changed 1
- Dropped sniffio as a direct dependency and added the get_available_backends() function
Fixed 5
- Process.stdin.send() not raising ClosedResourceError and BrokenResourceError on asyncio
- Process.stdin.send() not checkpointing before writing data on asyncio
- Race condition where cancelling a Future from BlockingPortal.start_task_soon() would sometimes not cancel the async function
- Pytest plugin causing breakage with older versions of pytest
- RuntimeError: Set changed size during iteration while shutting down the process pool when using the asyncio backend
- 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
functoolsmodule (#1001) - Added support for
uvloop=Trueon 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.lowleveletc.) (#1009) - Added the ability to set the token count of a
CapacityLimiterto zero (#1019; requires Python 3.10 or later when using Trio) - Added parameters
case_sensitiveandrecurse_symlinksalong with support for path-like objects toanyio.Path.glob()andanyio.Path.rglob()(#1033; PR by @northisup) - Dropped
sniffioas a direct dependency and added theget_available_backends()function (#1021) - Fixed
Process.stdin.send()not raisingClosedResourceErrorandBrokenResourceErroron 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
FuturefromBlockingPortal.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 iterationwhile shutting down the process pool when using the asyncio backend (#985)