Fixed regression caused by (#807) that prevented the use of parametrized async fixtures
4.6.1
This release contains all the changes from both v4.5.1 and v4.6.0, plus:
Fixed TaskGroup and CancelScope producing cyclic references in tracebacks when raising exceptions (#806) (PR by @graingert)
4.6.0
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.2
Fixed regression caused by (#807) that prevented the use of parametrized async fixtures.
4.5.1
As Python 3.8 support was dropped in v4.6.0, this interim release was created to bring a regression fix to Python 3.8, and adds a few other fixes also present in v4.6.1.
Fixed acquring a lock twice in the same task on asyncio hanging instead of raising a RuntimeError (#798)
Fixed an async fixture's self being different than the test's self in class-based tests (#633) (PR by @agronholm and @graingert)
Fixed TypeError with TLSStream on Windows when a certificate verification error occurs when using a truststore SSL certificate (#795)
Corrected documentation on anyio.Path regarding the limitations imposed by the current Python version on several of its methods, and made the is_junction method unavailable on Python versions earlier than 3.12 (#794)
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)
Fixed support for Linux abstract namespaces in UNIX sockets that was broken in v4.2 (#781; PR by @tapetersen)
Fixed KeyboardInterrupt (ctrl+c) hanging the asyncio pytest runner
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.2.post1.
Release notes
Sourced from anyio's releases.
Commits
c484425
Bumped up the versionfb81dfe
Fixed a regression in the pytest plugin that broke parametrized async fixtures445e59e
Bumped up the version64f570e
Fixed tox configuration5abc9ec
Updated Path documentation and made is_junction() conditional (#800)ede2029
Fixed TypeError when TLS handshake fails with truststore SSLContext (#801)163f10c
Fixed cyclic garbage that keeps traceback frames alive in task group exceptio...0614b4f
Migrated to native TOML configuration for Tox012a60c
Made test_start_task_soon_cancel_immediately() less flaky65ef48a
Rebind instance method fixtures to the same instance as the test (#807)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