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 major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Bumps the dependencies group with 3 updates: anyio, platformdirs and ruff.
Updates
anyio
from 4.4.0 to 4.6.0Release 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)Updates
platformdirs
from 4.3.3 to 4.3.6Release notes
Sourced from platformdirs's releases.
Commits
bc0405c
Fix readme download target (#307)c076da9
Split build and publish for release (#306)30199ec
Use upstream setup-uv with uv python (#305)3ce64d0
Bump astral-sh/setup-uv from 2 to 3 (#304)67691e2
[pre-commit.ci] pre-commit autoupdate (#303)Updates
ruff
from 0.6.5 to 0.6.7Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
Commits
17c4690
Bump version to v0.6.7 (#13439)f06d44e
Useforget
for module resolver database (#13438)653c090
Use an empty vendored file system in Ruff (#13436)8921fbb
vendored_typeshed_versions
should usedb.vendored
(#13434)3018303
Avoid parsing with Salsa (#13437)6c303b2
red-knot: Add not unary operator for boolean literals (#13422)7579a79
Add test coverage for non-Python globs (#13430)0bbc138
Upgrade to latestcargo-dist
version (#13416)ff11db6
Add Python version support to ruff analyze CLI (#13426)2823487
Respectlint.exclude
in ruff check--add-noqa
(#13427)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