Skip to content

Update dependency anyio to v4.14.1#9

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/anyio-4.x
Open

Update dependency anyio to v4.14.1#9
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/anyio-4.x

Conversation

@renovate

@renovate renovate Bot commented Aug 5, 2025

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
anyio (changelog) ==4.9.0==4.14.1 age confidence

Release Notes

agronholm/anyio (anyio)

v4.14.1

Compare Source

  • Fixed teardown of higher-scoped async fixtures failing on asyncio with RuntimeError: Attempted to exit cancel scope in a different task than it was entered in when an async test raise an outcome exception (e.g., pytest.skip(), pytest.xfail(), or pytest.fail()) (#​1179; PR by @​EmmanuelNiyonshuti)
  • Fixed CapacityLimiter.total_tokens rejecting a value of 0 when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (#​1183; PR by @​nyxst4ck)

v4.14.0

Compare Source

  • Added support for Python 3.15

  • Added an asynchronous implementation of the itertools module (#​998; PR by @​11kkw)

  • Added the local_port parameter to connect_tcp() to allow binding to a specific local port before connecting (#​1067; PR by @​nullwiz)

  • Added support for custom capacity limiters in async path and file I/O functions and classes

  • Added the create_task() task group method for easier asyncio migration (returns a TaskHandle) (#​1098)

  • Changed TaskGroup.start_soon() to return a TaskHandle

  • Added an option for TaskGroup.start() to return a TaskHandle (which then contains the start value in the start_value property)

  • Added the cancel() convenience method to TaskGroup as a shortcut for cancelling the task group's cancel scope

  • Improved the error message when a known backend is not installed to suggest the install command (#​1115; PR by @​EmmanuelNiyonshuti)

  • Improved anyio.Path to preserve subclass types by returning Self in methods that return path objects (#​1130; PR by @​EmmanuelNiyonshuti)

  • Changed the parameter type annotation in anyio.Path.write_bytes() to accept any ReadableBuffer, thus allowing it to accept bytearray and memoryview to match pathlib.Path.write_bytes() (#​1135; PR by @​SAY-5)

  • Changed several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:

    • TaskGroup.start_soon()
    • TaskGroup.start()
    • anyio.from_thread.run()

    This reverts an earlier change from v3.7.0 which was made in error. (#​1153)

  • Changed anyio.run to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (#​1171; PR by @​gschaffner)

  • Changed several classes (and their subclasses) to have __slots__ (with __weakref__):

    • anyio.CancelScope
    • anyio.CapacityLimiter
    • anyio.Condition
    • anyio.Event
    • anyio.Lock
    • anyio.ResourceGuard
    • anyio.Semaphore
  • Fixed cancellation exception escaping a cancel scope when triggered via check_cancelled() in a worker thread (#​1113)

  • Fixed TaskGroup raising AttributeError instead of a clear error when entered more than once (#​1109; PR by @​bahtya)

  • Fixed lost type information when passing arguments to lru_cache (#​1104; PR by @​Graeme22)

  • Fixed test resumption after KeyboardInterrupt in async generator fixtures on the asyncio backend (#​1060; PR by @​EmmanuelNiyonshuti)

  • Fixed import of __main__ in to_process workers when entrypoint script doesn't end in .py, such as when using console_script entrypoints. (#​1027; PR by @​tapetersen)

  • Fixed SocketListener.from_socket() returning a TCP listener for AF_UNIX listening sockets, causing accept() to fail with ENOTSUP (#​1132; PR by @​kudato)

  • Fixed UDPSocket.aclose() and ConnectedUDPSocket.aclose() on asyncio returning before the underlying socket FD was actually released (#​1147; PR by @​matias-arrelid)

  • Fixed trio backend test runner hanging indefinitely instead of raising an error when dynamically accessing an async fixture via request.getfixturevalue (#​1148; PR by @​EmmanuelNiyonshuti)

  • Fixed cancelling tasks started through a BlockingPortal after the portal has been stopped (#​1013; PR by @​puneetdixit200)

  • Fixed backend_options being ignored when running the Trio backend via anyio.run(); the options are now passed as keyword arguments to trio.run() again, as documented (a regression from AnyIO 3) (#​1161; PR by @​Zac-HD)

  • Fixed asyncio Lock and Semaphore deadlocks caused by cancelled waiters left queued during release (#​1145; PR by @​rasmusfaber, @​x42005e1f and @​agronholm)

v4.13.0

Compare Source

  • Dropped support for Python 3.9
  • Added a ttl parameter to the anyio.functools.lru_cache wrapper (#​1073; PR by @​Graeme22)
  • Widened the type annotations of file I/O streams to accept IO[bytes] instead of just BinaryIO (#​1078)
  • Fixed anyio.Path not being compatible with Python 3.15 due to the removal of pathlib.Path.is_reserved() and the addition of pathlib.Path.__vfspath__() (#​1061; PR by @​veeceey)
  • Fixed the BrokenResourceError raised by the asyncio SocketStream not having the original exception as its cause (#​1055; PR by @​veeceey)
  • Fixed the TypeError raised when using "func" as a parameter name in pytest.mark.parametrize when using the pytest plugin (#​1068; PR by @​JohnnyDeuss)
  • Fixed the pytest plugin not running tests that had the anyio marker added programmatically via pytest_collection_modifyitems (#​422; PR by @​chbndrhnns)
  • Fixed cancellation exceptions leaking from a CancelScope on asyncio when they are contained in an exception group alongside non-cancellation exceptions (#​1091; PR by @​gschaffner)
  • Fixed Condition.wait() not passing on a notification when the task is cancelled but already received a notification
  • Fixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (#​1074; PR by @​bysiber)

v4.12.1

Compare Source

  • 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)

v4.12.0

Compare Source

  • 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)

v4.11.0

Compare Source

  • 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)

v4.10.0

Compare Source

  • 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)

Configuration

📅 Schedule: (UTC)

  • 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

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot changed the title Update dependency anyio to v4.10.0 Update dependency anyio to v4.11.0 Sep 24, 2025
@renovate renovate Bot force-pushed the renovate/anyio-4.x branch from f3ebff6 to f717b2e Compare September 24, 2025 23:55
@renovate renovate Bot changed the title Update dependency anyio to v4.11.0 Update dependency anyio to v4.12.0 Nov 29, 2025
@renovate renovate Bot force-pushed the renovate/anyio-4.x branch from f717b2e to 391c63d Compare November 29, 2025 11:53
@renovate renovate Bot changed the title Update dependency anyio to v4.12.0 Update dependency anyio to v4.12.1 Jan 7, 2026
@renovate renovate Bot force-pushed the renovate/anyio-4.x branch from 391c63d to 6194b75 Compare January 7, 2026 12:12
@renovate renovate Bot changed the title Update dependency anyio to v4.12.1 Update dependency anyio to v4.13.0 Mar 31, 2026
@renovate renovate Bot force-pushed the renovate/anyio-4.x branch from 6194b75 to 7338869 Compare March 31, 2026 18:07
@renovate renovate Bot force-pushed the renovate/anyio-4.x branch from 7338869 to d254c60 Compare June 20, 2026 07:52
@renovate renovate Bot changed the title Update dependency anyio to v4.13.0 Update dependency anyio to v4.14.0 Jun 20, 2026
@renovate renovate Bot changed the title Update dependency anyio to v4.14.0 Update dependency anyio to v4.14.1 Jun 27, 2026
@renovate renovate Bot force-pushed the renovate/anyio-4.x branch from d254c60 to b2522ca Compare June 27, 2026 12:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants