Added the BlockingPortalProvider class to aid with constructing synchronous counterparts to asynchronous interfaces that would otherwise require multiple blocking portals
Added __slots__ to AsyncResource so that child classes can use __slots__ (#733; PR by Justin Su)
Added the TaskInfo.has_pending_cancellation() method
Fixed erroneous RuntimeError: called 'started' twice on the same task status when cancelling a task in a TaskGroup created with the start() method before the first checkpoint is reached after calling task_status.started() (#706; PR by Dominik Schwabe)
Fixed two bugs with TaskGroup.start() on asyncio:
Fixed erroneous RuntimeError: called 'started' twice on the same task status when cancelling a task in a TaskGroup created with the start() method before the first checkpoint is reached after calling task_status.started() (#706; PR by Dominik Schwabe)
Fixed the entire task group being cancelled if a TaskGroup.start() call gets cancelled (#685, #710)
Fixed a race condition that caused crashes when multiple event loops of the same backend were running in separate threads and simultaneously attempted to use AnyIO for their first time (#425; PR by David Jiricek and Ganden Schaffner)
Fixed cancellation delivery on asyncio incrementing the wrong cancel scope's cancellation counter when cascading a cancel operation to a child scope, thus failing to uncancel the host task (#716)
Fixed erroneous TypedAttributeLookupError if a typed attribute getter raises KeyError
Fixed the asyncio backend not respecting the PYTHONASYNCIODEBUG environment variable when setting the debug flag in anyio.run()
Fixed SocketStream.receive() not detecting EOF on asyncio if there is also data in the read buffer (#701)
Fixed MemoryObjectStream dropping an item if the item is delivered to a recipient that is waiting to receive an item but has a cancellation pending (#728)
Emit a ResourceWarning for MemoryObjectReceiveStream and MemoryObjectSendStream that were garbage collected without being closed (PR by Andrey Kazantcev)
Fixed MemoryObjectSendStream.send() not raising BrokenResourceError when the last corresponding MemoryObjectReceiveStream is closed while waiting to send a falsey item (#731; PR by Ganden Schaffner)
4.3.0
Added support for the Python 3.12 walk_up keyword argument in anyio.Path.relative_to() (PR by Colin Taylor)
Fixed passing total_tokens to anyio.CapacityLimiter() as a keyword argument not working on the trio backend (#515)
Fixed Process.aclose() not performing the minimum level of necessary cleanup when cancelled. Previously:
Cancellation of Process.aclose() could leak an orphan process
Cancellation of run_process() could very briefly leak an orphan process.
Cancellation of Process.aclose() or run_process() on Trio could leave standard streams unclosed
(PR by Ganden Schaffner)
Fixed Process.stdin.aclose(), Process.stdout.aclose(), and Process.stderr.aclose() not including a checkpoint on asyncio (PR by Ganden Schaffner)
Fixed documentation on how to provide your own typed attributes
4.2.0
Add support for byte-based paths in connect_unix, create_unix_listeners, create_unix_datagram_socket, and create_connected_unix_datagram_socket. (PR by Lura Skye)
Enabled the Event and CapacityLimiter classes to be instantiated outside an event loop thread
Broadly improved/fixed the type annotations. Among other things, many functions and methods that take variadic positional arguments now make use of PEP 646 TypeVarTuple to allow the positional arguments to be validated by static type checkers. These changes affected numerous methods and functions, including:
This library adheres to Semantic Versioning 2.0 <http://semver.org/>_.
UNRELEASED
Added support for the from_uri(), full_match(), parser methods/properties
in anyio.Path, newly added in Python 3.13
4.4.0
Added the BlockingPortalProvider class to aid with constructing synchronous
counterparts to asynchronous interfaces that would otherwise require multiple blocking
portals
Added __slots__ to AsyncResource so that child classes can use __slots__
([#733](https://github.com/agronholm/anyio/issues/733) <https://github.com/agronholm/anyio/pull/733>_; PR by Justin Su)
Added the TaskInfo.has_pending_cancellation() method
Fixed erroneous RuntimeError: called 'started' twice on the same task status
when cancelling a task in a TaskGroup created with the start() method before
the first checkpoint is reached after calling task_status.started()
([#706](https://github.com/agronholm/anyio/issues/706) <https://github.com/agronholm/anyio/issues/706>_; PR by Dominik Schwabe)
Fixed two bugs with TaskGroup.start() on asyncio:
Fixed erroneous RuntimeError: called 'started' twice on the same task status
when cancelling a task in a TaskGroup created with the start() method before
the first checkpoint is reached after calling task_status.started()
([#706](https://github.com/agronholm/anyio/issues/706) <https://github.com/agronholm/anyio/issues/706>_; PR by Dominik Schwabe)
Fixed the entire task group being cancelled if a TaskGroup.start() call gets
cancelled ([#685](https://github.com/agronholm/anyio/issues/685) <https://github.com/agronholm/anyio/issues/685>,
[#710](https://github.com/agronholm/anyio/issues/710) <https://github.com/agronholm/anyio/issues/710>)
Fixed a race condition that caused crashes when multiple event loops of the same
backend were running in separate threads and simultaneously attempted to use AnyIO for
their first time ([#425](https://github.com/agronholm/anyio/issues/425) <https://github.com/agronholm/anyio/issues/425>_; PR by David
Jiricek and Ganden Schaffner)
Fixed cancellation delivery on asyncio incrementing the wrong cancel scope's
cancellation counter when cascading a cancel operation to a child scope, thus failing
to uncancel the host task ([#716](https://github.com/agronholm/anyio/issues/716) <https://github.com/agronholm/anyio/issues/716>_)
Fixed erroneous TypedAttributeLookupError if a typed attribute getter raises
KeyError
Fixed the asyncio backend not respecting the PYTHONASYNCIODEBUG environment
variable when setting the debug flag in anyio.run()
Fixed SocketStream.receive() not detecting EOF on asyncio if there is also data in
the read buffer ([#701](https://github.com/agronholm/anyio/issues/701) <https://github.com/agronholm/anyio/issues/701>_)
Fixed MemoryObjectStream dropping an item if the item is delivered to a recipient
that is waiting to receive an item but has a cancellation pending
([#728](https://github.com/agronholm/anyio/issues/728) <https://github.com/agronholm/anyio/issues/728>_)
Emit a ResourceWarning for MemoryObjectReceiveStream and
MemoryObjectSendStream that were garbage collected without being closed (PR by
Andrey Kazantcev)
This is a bug fix release for 2.6.0 where the "TuDoor" fix erroneously
suppressed legitimate Truncated exceptions. This caused the stub
resolver to timeout instead of failing over to TCP when a legitimate
truncated response was received over UDP.
This release addresses the potential DoS issue discussed in the
"TuDoor" paper (CVE-2023-29483). The dnspython stub resolver is
vulnerable to a potential DoS if a bad-in-some-way response from the
right address and port forged by an attacker arrives before a
legitimate one on the UDP port dnspython is using for that query. In
this situation, dnspython might switch to querying another resolver or
give up entirely, possibly denying service for that resolution. This
release addresses the issue by adopting the recommended mitigation,
which is ignoring the bad packets and continuing to listen for a
legitimate response until the timeout for the query has expired.
Thank you to all the contributors to this release, and, as usual,
thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian
Wellington.
This release addresses the potential DoS issue discussed in the "TuDoor" paper (CVE-2023-29483). The dnspython stub resolver is vulnerable to a potential DoS if a bad-in-some-way response from the right address and port forged by an attacker arrives before a legitimate one on the UDP port dnspython is using for that query. In this situation, dnspython might switch to querying another resolver or give up entirely, possibly denying service for that resolution. This release addresses the issue by adopting the recommended mitigation, which is ignoring the bad packets and continuing to listen for a legitimate response until the timeout for the query has expired.
Thank you to all the contributors to this release, and, as usual, thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington.
dnspython 2.5.0
See the What's New page for a summary of this release.
Thanks to all the contributors, and, as usual, thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington.
The Tudoor fix ate legitimate Truncated exceptions, preventing the resolver from
failing over to TCP and causing the query to timeout #1053.
2.6.0
As mentioned in the "TuDoor" paper and the associated CVE-2023-29483, the dnspython
stub resolver is vulnerable to a potential DoS if a bad-in-some-way response from the
right address and port forged by an attacker arrives before a legitimate one on the
UDP port dnspython is using for that query.
This release addresses the issue by adopting the recommended mitigation, which is
ignoring the bad packets and continuing to listen for a legitimate response until
the timeout for the query has expired.
Added support for the NSID EDNS option.
Dnspython now looks for version metadata for optional packages and will not
use them if they are too old. This prevents possible exceptions when a
feature like DoH is not desired in dnspython, but an old httpx is installed
along with dnspython for some other purpose.
The DoHNameserver class now allows GET to be used instead of the default POST,
and also passes source and source_port correctly to the underlying query
methods.
2.5.0
Dnspython now uses hatchling for builds.
Asynchronous destinationless sockets now work on Windows.
Cython is no longer supported due to various typing issues.
Dnspython now explicitly canonicalizes IPv4 and IPv6 addresses.
Previously it was possible for non-canonical IPv6 forms to be stored
in a AAAA address, which would work correctly but possibly cause
problmes if the address were used as a key in a dictionary.
The number of messages in a section can be retrieved with
section_count().
Truncation preferences for messages can be specified.
The length of a message can be automatically prepended when
rendering.
This library adheres to Semantic Versioning 2.0 <http://semver.org/>_.
1.2.1
Updated the copying of __notes__ to match CPython behavior (PR by CF Bolz-Tereick)
Corrected the type annotation of the exception handler callback to accept a
BaseExceptionGroup instead of BaseException
Fixed type errors on Python < 3.10 and the type annotation of suppress()
(PR by John Litborn)
1.2.0
Added special monkeypatching if Apport <https://github.com/canonical/apport>_ has
overridden sys.excepthook so it will format exception groups correctly
(PR by John Litborn)
Added a backport of contextlib.suppress() from Python 3.12.1 which also handles
suppressing exceptions inside exception groups
Fixed bare raise in a handler reraising the original naked exception rather than
an exception group which is what is raised when you do a raise in an except*
handler
1.1.3
catch() now raises a TypeError if passed an async exception handler instead of
just giving a RuntimeWarning about the coroutine never being awaited. (#66, PR by
John Litborn)
Fixed plain raise statement in an exception handler callback to work like a
raise in an except* block
Fixed new exception group not being chained to the original exception when raising an
exception group from exceptions raised in handler callbacks
Fixed type annotations of the derive(), subgroup() and split() methods to
match the ones in typeshed
1.1.2
Changed handling of exceptions in exception group handler callbacks to not wrap a
single exception in an exception group, as per
CPython issue 103590 <https://github.com/python/cpython/issues/103590>_
1.1.1
Worked around
CPython issue [#98778](https://github.com/agronholm/exceptiongroup/issues/98778) <https://github.com/python/cpython/issues/98778>_,
urllib.error.HTTPError(..., fp=None) raises KeyError on unknown attribute
access, on affected Python versions. (PR by Zac Hatfield-Dodds)
╭────────── FastAPI CLI - Development mode ───────────╮
│ │
│ Serving at: http://127.0.0.1:8000 │
│ │
│ API docs: http://127.0.0.1:8000/docs │
│ │
│ Running in development mode, for production use: │
│ │
│ fastapi run │
│ │
╰─────────────────────────────────────────────────────╯
INFO: Will watch for changes in these directories: ['/home/user/code/awesomeapp']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [2248755] using WatchFiles
INFO: Started server process [2248757]
INFO: Waiting for application startup.
INFO: Application startup complete.
Refactors
🔧 Add configs and setup for fastapi-slim including optional extras fastapi-slim[standard], and fastapi including by default the same standard extras. PR #11503 by @tiangolo.
0.110.3
Latest Changes
Docs
📝 Update references to Python version, FastAPI supports all the current versions, no need to make the version explicit. PR #11496 by @tiangolo.
✏️ Fix typo in fastapi/security/api_key.py. PR #11481 by @ch33zer.
Bumps the all group with 26 updates in the / directory:
0.6.0
0.7.0
3.7.1
4.4.0
1.23.6
1.26.0
2023.11.17
2024.2.2
2.4.2
2.6.1
1.2.0
1.2.1
0.105.0
0.111.0
1.0.2
1.0.5
0.26.0
0.27.0
3.6
3.7
0.41.1
0.42.0
3.3.2
3.4.0
0.58.1
0.59.1
1.26.2
1.26.4
23.2
24.0
1.3.0
1.5.0
2.5.3
2.7.2
2.14.6
2.18.3
4.6.1
4.7.2
7.4.3
8.2.1
2023.3.post1
2024.1
1.11.4
1.13.1
1.3.0
1.3.1
0.27.0
0.37.2
4.9.0
4.12.0
0.25.0
0.30.0
Updates
annotated-types
from 0.6.0 to 0.7.0Release notes
Sourced from annotated-types's releases.
Commits
0735cd3
Prepare for 0.7.0 release (#70)0757d41
Improve handling of GroupedMetadata (First try) (#69)99dbac8
AddUnit
type (#65)89e3d2e
Fix IsDigit -> IsDigits (#63)59a50d1
Correct misstatement in README (#62)6693037
suggested fix on typo (#60)195e340
add URLs topyproject.toml
(#58)657ded9
Allowtzinfo
objects forTimezone
(#56)Updates
anyio
from 3.7.1 to 4.4.0Release notes
Sourced from anyio's releases.
... (truncated)
Changelog
Sourced from anyio's changelog.
... (truncated)
Commits
053e8f0
Bumped up the versione7f750b
Fixed memory object stream sometimes dropping sent items (#735)9f5f14b
Fixed task group getting cancelled if start() gets cancelled (#717)8b648bc
Adjusted the pull request template3ff5e9a
Rearranged changelog items541d1f8
[pre-commit.ci] pre-commit autoupdate (#734)8a07690
FixMemoryObjectSendStream.send(falsey)
not raisingBrokenResourceError
w...4b3de97
Adjust the headings in the PR templatedfc44cf
Added__slots__
toAsyncResource
(#733)96920b0
Fix typo in PR template (#730)Updates
beanie
from 1.23.6 to 1.26.0Release notes
Sourced from beanie's releases.
... (truncated)
Changelog
Sourced from beanie's changelog.
... (truncated)
Commits
51e73eb
Version/1.26.0 (#927)65c2190
Feature: soft delete (#901)10cb0c0
Update deprecated call of general_plain_validator_function (#897)0e53aa7
fix: allow json_schema_extra as Callable (#884) (#896)7de0303
Annotate decorators that wrapDocument
methods (#679) (#886)fc79936
Update relations.md (#904)4378451
docs: fix typo (#869) (#899)e2d95be
add possibility of leveraging enumerations in find query (#868)cad8960
handle TypeError in validator of PydanticObjectId (#861)72b35f9
Version/1.25.0 (#844)Updates
certifi
from 2023.11.17 to 2024.2.2Commits
45eb611
2024.02.02 (#266)83f4f04
fix leaking certificate issue (#265)bbf2208
Bump actions/upload-artifact from 4.2.0 to 4.3.0 (#264)9e837a5
Bump actions/upload-artifact from 4.1.0 to 4.2.0 (#262)05d071b
Bump actions/upload-artifact from 4.0.0 to 4.1.0 (#261)2a3088a
Bump actions/download-artifact from 4.1.0 to 4.1.1 (#260)d4ca66e
Bump actions/upload-artifact from 3.1.3 to 4.0.0 (#258)5d15663
Bump actions/download-artifact from 3.0.2 to 4.1.0 (#257)d66ef9d
Bump actions/setup-python from 4.7.1 to 5.0.0 (#256)8f0d412
Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11 (#255)Updates
dnspython
from 2.4.2 to 2.6.1Release notes
Sourced from dnspython's releases.
Changelog
Sourced from dnspython's changelog.
... (truncated)
Commits
0a742b9
update CI0ea5ad0
The Tudoor fix should not eat valid Truncated exceptions #1053 (#1054)f12d398
2.6.1 version prepcecb853
Further improve CVE fix coverage to 100% for sync and async.7952e31
test IgnoreErrorse093299
For the Tudoor fix, we also need the UDP nameserver to ignore_unexpected.3af9f78
2.6.0 versioningca63d95
Require cryptography >=41 instead of 42.902cbf3
Create CODE_OF_CONDUCT.mded9795f
github contributing and pull request templateUpdates
exceptiongroup
from 1.2.0 to 1.2.1Release notes
Sourced from exceptiongroup's releases.
Changelog
Sourced from exceptiongroup's changelog.
... (truncated)
Commits
b91b7a3
Added the release version521f02f
Fixed type errors, added type tests (#118)4639b1e
Fixed test failure on Python 3.12.3684b79a
Have tox install the package in editable mode9ebe9f5
Updated GitHub actionse57b07f
[pre-commit.ci] pre-commit autoupdate (#115)8d2f627
[pre-commit.ci] pre-commit autoupdate (#113)ee53e9f
BaseExceptionGroup.derive should not copy notes (#112)2f23259
Corrected the type annotation for the exception handler callback (#109)0c89199
[pre-commit.ci] pre-commit autoupdate (#110)Updates
fastapi
from 0.105.0 to 0.111.0Release notes
Sourced from fastapi's releases.
... (truncated)
Commits
1c3e691
📝 Update release notesab8f557
📝 Update release notes67da3bb
🔖 Release version 0.111.09ed94e4
📝 Update release notesd71be59
✨ Add FastAPI CLI, the newfastapi
command (#11522)a94ef33
📝 Update release notesea1f219
🔧 Add configs and setup forfastapi-slim
including optional extras `fastapi...32be95d
🔖 Release version 0.110.392b67b1
📝 Update release notese0a9692
📝 Update release notesUpdates
httpcore
from 1.0.2 to 1.0.5Release notes
Sourced from httpcore's releases.
Changelog
Sourced from httpcore's changelog.
Commits
1851ac3
Version 1.0.5 (#904)4565838
Update trio dependency... (#903)fbbd909
HandleEndOfStream
for anyio backend (#899)10481ce
Fixed typo inRequest
class docstring. (#898)7b39e6a
Bump the python-packages group with 6 updates (#896)5c9be94
bump to v0.3.0 && format (#895)5518172
Moveunasync.py
toscripts
(#891)14bda52
Version 1.0.4 (#892)80d21ee
Addtarget
request extension (#888)accae7b
Fix support for connection Upgrade and CONNECT when some data in the stream h...Updates
httpx
from 0.26.0 to 0.27.0Release notes
Sourced from httpx's releases.
Changelog
Sourced from httpx's changelog.
Commits
326b943
Version 0.27.0 (#3095)3faa4a8
Improve 'Custom transports' docs (#3081)c51af4b
Extensions docs (#3080)cabd1c0
Deprecateapp=...
in favor of explicitWSGITransport
/ASGITransport
. (#3...6f46152
Bump the python-packages group with 6 updates (#3077)37a2901
Mention NO_PROXY environment variable on Advanced Usage page (#3066)371b6e9
Use__future__.annotations
(#3068)4f6edf3
testparse_header_links
via public api (#3061)c7cd6aa
testobfuscate_sensitive_headers
via public api (#3063)15f9253
Drop outdated section (#3057)Updates
idna
from 3.6 to 3.7Release notes
Sourced from idna's releases.
Changelog
Sourced from idna's changelog.
Commits
1d365e1
Release v3.7c1b3154
Merge pull request #172 from kjd/optimize-contextj0394ec7
Merge branch 'master' into optimize-contextjcd58a23
Merge pull request #152 from elliotwutingfeng/dev5beb28b
More efficient resolution of joiner contexts1b12148
Update ossf/scorecard-action to v2.3.1d516b87
Update Github actions/checkout to v4c095c75
Merge branch 'master' into dev60a0a4c
Fix typo in GitHub Actions workflow key5918a0e
Merge branch 'master' into devUpdates
llvmlite
from 0.41.1 to 0.42.0Commits
b2a26aa
Merge pull request #1029 from stuartarchibald/wip/change_log_0_42_0_final2c3dae0
Update CHANGE_LOG for 0.42.0 final.c0c7726
Initialize 0.42 branchf22420a
Merge pull request #1021 from gmarkall/release-notes-04283a8829
Update CHANGE_LOGab073f5
Add release notes for 0.42.0rc14292eea
Merge pull request #978 from tbennun/type-query-480bb55b
Add test for is_function_vararg on non-function typ... _Description has been truncated_