Dropped support for Python 3.8 (as #698 cannot be resolved without cancel message support)
Fixed 100% CPU use on asyncio while waiting for an exiting task group to finish while said task group is within a cancelled cancel scope (#695)
Fixed cancel scopes on asyncio not propagating CancelledError on exit when the enclosing cancel scope has been effectively cancelled (#698)
Fixed asyncio task groups not yielding control to the event loop at exit if there were no child tasks to wait on
Fixed inconsistent task uncancellation with asyncio cancel scopes belonging to a task group when said task group has child tasks running
4.5.0
Improved the performance of anyio.Lock and anyio.Semaphore on asyncio (even up to 50 %)
Added the fast_acquire parameter to anyio.Lock and anyio.Semaphore to further boost performance at the expense of safety (acquire() will not yield control back if there is no contention)
Added support for the from_uri(), full_match(), parser methods/properties in anyio.Path, newly added in Python 3.13 (#737)
Added support for more keyword arguments for run_process() and open_process(): startupinfo, creationflags, pass_fds, user, group, extra_groups and umask (#742)
Improved the type annotations and support for PathLike in run_process() and open_process() to allow for path-like arguments, just like subprocess.Popen
Changed the ResourceWarning from an unclosed memory object stream to include its address for easier identification
Changed start_blocking_portal() to always use daemonic threads, to accommodate the "loitering event loop" use case
Bumped the minimum version of Trio to v0.26.1
Fixed __repr__() of MemoryObjectItemReceiver, when item is not defined (#767; PR by @Danipulok)
Fixed to_process.run_sync() failing to initialize if __main__.__file__ pointed to a file in a nonexistent directory (#696)
Fixed AssertionError: feed_data after feed_eof on asyncio when a subprocess is closed early, before its output has been read (#490)
Fixed TaskInfo.has_pending_cancellation() on asyncio not respecting shielded scopes (#771; PR by @gschaffner)
Fixed SocketStream.receive() returning bytearray instead of bytes when using asyncio with ProactorEventLoop (Windows) (#776)
Fixed quitting the debugger in a pytest test session while in an active task group failing the test instead of exiting the test session (because the exit exception arrives in an exception group)
This library adheres to Semantic Versioning 2.0 <http://semver.org/>_.
4.6.0
Dropped support for Python 3.8
(as [#698](https://github.com/agronholm/anyio/issues/698) <https://github.com/agronholm/anyio/issues/698>_ cannot be resolved
without cancel message support)
Fixed 100% CPU use on asyncio while waiting for an exiting task group to finish while
said task group is within a cancelled cancel scope
([#695](https://github.com/agronholm/anyio/issues/695) <https://github.com/agronholm/anyio/issues/695>_)
Fixed cancel scopes on asyncio not propagating CancelledError on exit when the
enclosing cancel scope has been effectively cancelled
([#698](https://github.com/agronholm/anyio/issues/698) <https://github.com/agronholm/anyio/issues/698>_)
Fixed asyncio task groups not yielding control to the event loop at exit if there were
no child tasks to wait on
Fixed inconsistent task uncancellation with asyncio cancel scopes belonging to a
task group when said task group has child tasks running
4.5.0
Improved the performance of anyio.Lock and anyio.Semaphore on asyncio (even up
to 50 %)
Added the fast_acquire parameter to anyio.Lock and anyio.Semaphore to
further boost performance at the expense of safety (acquire() will not yield
control back if there is no contention)
Added support for the from_uri(), full_match(), parser methods/properties
in anyio.Path, newly added in Python 3.13
([#737](https://github.com/agronholm/anyio/issues/737) <https://github.com/agronholm/anyio/issues/737>_)
Added support for more keyword arguments for run_process() and open_process():
startupinfo, creationflags, pass_fds, user, group,
extra_groups and umask
([#742](https://github.com/agronholm/anyio/issues/742) <https://github.com/agronholm/anyio/issues/742>_)
Improved the type annotations and support for PathLike in run_process() and
open_process() to allow for path-like arguments, just like subprocess.Popen
Changed the ResourceWarning from an unclosed memory object stream to include its
address for easier identification
Changed start_blocking_portal() to always use daemonic threads, to accommodate the
"loitering event loop" use case
Bumped the minimum version of Trio to v0.26.1
Fixed __repr__() of MemoryObjectItemReceiver, when item is not defined
([#767](https://github.com/agronholm/anyio/issues/767) <https://github.com/agronholm/anyio/pulls/767>_; PR by @Danipulok)
Fixed to_process.run_sync() failing to initialize if __main__.__file__ pointed
to a file in a nonexistent directory
([#696](https://github.com/agronholm/anyio/issues/696) <https://github.com/agronholm/anyio/issues/696>_)
Fixed AssertionError: feed_data after feed_eof on asyncio when a subprocess is
closed early, before its output has been read
([#490](https://github.com/agronholm/anyio/issues/490) <https://github.com/agronholm/anyio/issues/490>_)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps anyio from 4.4.0 to 4.6.0.
Release notes
Sourced from anyio's releases.
Changelog
Sourced from anyio's changelog.
... (truncated)
Commits
8cce749
Bumped up the version01a37c6
Fixed TaskGroup and CancelScope exit issues on asyncio (#774)7f35ce7
Bumped up the version108cc83
[pre-commit.ci] pre-commit autoupdate (#788)d1aea98
Fixed KeyboardInterrupt hanging the asyncio test runner (#779)c1aff53
[pre-commit.ci] pre-commit autoupdate (#785)89d8b4c
Use sphinx_rtd_theme also as an extension4e9f18d
Enabled uvloop to be used in the test suite on Python 3.137de6441
Pin Sphinx to a compatible version with sphinx-rtd-theme41647f4
Fixed feed_data after feed_eof assertion errors on asyncio (#752)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show