This release focuses on compatibility with the upcoming release of
Python 3.13. Most changes are related to the implementation of type
parameter defaults (PEP 696).
Thanks to all of the people who contributed patches, especially Alex
Waygood, who did most of the work adapting typing-extensions to the
CPython PEP 696 implementation.
There is a single change since 4.12.0rc1:
Fix incorrect behaviour of typing_extensions.ParamSpec on Python 3.8 and
3.9 that meant that
isinstance(typing_extensions.ParamSpec("P"), typing.TypeVar) would have a
different result in some situations depending on whether or not a profiling
function had been set using sys.setprofile. Patch by Alex Waygood.
Changes included in 4.12.0rc1:
Improve the implementation of type parameter defaults (PEP 696)
Backport the typing.NoDefault sentinel object from Python 3.13.
TypeVars, ParamSpecs and TypeVarTuples without default values now have
their __default__ attribute set to this sentinel value.
TypeVars, ParamSpecs and TypeVarTuples now have a has_default()
method, matching typing.TypeVar, typing.ParamSpec and
typing.TypeVarTuple on Python 3.13+.
TypeVars, ParamSpecs and TypeVarTuples with default=None passed to
their constructors now have their __default__ attribute set to None
at runtime rather than types.NoneType.
Fix most tests for TypeVar, ParamSpec and TypeVarTuple on Python
3.13.0b1 and newer.
Backport CPython PR #118774,
allowing type parameters without default values to follow those with
default values in some type parameter lists. Patch by Alex Waygood,
backporting a CPython PR by Jelle Zijlstra.
It is now disallowed to use a TypeVar with a default value after a
TypeVarTuple in a type parameter list. This matches the CPython
implementation of PEP 696 on Python 3.13+.
Fix bug in PEP-696 implementation where a default value for a ParamSpec
would be cast to a tuple if a list was provided.
Patch by Alex Waygood.
Fix Protocol tests on Python 3.13.0a6 and newer. 3.13.0a6 adds a new
__static_attributes__ attribute to all classes in Python,
which broke some assumptions made by the implementation of
typing_extensions.Protocol. Similarly, 3.13.0b1 adds the new
__firstlineno__ attribute to all classes.
Fix AttributeError when using typing_extensions.runtime_checkable
in combination with typing.Protocol on Python 3.12.2 or newer.
Patch by Alex Waygood.
At runtime, assert_never now includes the repr of the argument
This release is mostly the same as 4.12.0rc1 but fixes one more
longstanding bug.
Fix incorrect behaviour of typing_extensions.ParamSpec on Python 3.8 and
3.9 that meant that
isinstance(typing_extensions.ParamSpec("P"), typing.TypeVar) would have a
different result in some situations depending on whether or not a profiling
function had been set using sys.setprofile. Patch by Alex Waygood.
Release 4.12.0rc1 (May 16, 2024)
This release focuses on compatibility with the upcoming release of
Python 3.13. Most changes are related to the implementation of type
parameter defaults (PEP 696).
Thanks to all of the people who contributed patches, especially Alex
Waygood, who did most of the work adapting typing-extensions to the
CPython PEP 696 implementation.
Full changelog:
Improve the implementation of type parameter defaults (PEP 696)
Backport the typing.NoDefault sentinel object from Python 3.13.
TypeVars, ParamSpecs and TypeVarTuples without default values now have
their __default__ attribute set to this sentinel value.
TypeVars, ParamSpecs and TypeVarTuples now have a has_default()
method, matching typing.TypeVar, typing.ParamSpec and
typing.TypeVarTuple on Python 3.13+.
TypeVars, ParamSpecs and TypeVarTuples with default=None passed to
their constructors now have their __default__ attribute set to None
at runtime rather than types.NoneType.
Fix most tests for TypeVar, ParamSpec and TypeVarTuple on Python
3.13.0b1 and newer.
Backport CPython PR #118774,
allowing type parameters without default values to follow those with
default values in some type parameter lists. Patch by Alex Waygood,
backporting a CPython PR by Jelle Zijlstra.
It is now disallowed to use a TypeVar with a default value after a
TypeVarTuple in a type parameter list. This matches the CPython
implementation of PEP 696 on Python 3.13+.
Fix bug in PEP-696 implementation where a default value for a ParamSpec
would be cast to a tuple if a list was provided.
Patch by Alex Waygood.
Fix Protocol tests on Python 3.13.0a6 and newer. 3.13.0a6 adds a new
__static_attributes__ attribute to all classes in Python,
which broke some assumptions made by the implementation of
typing_extensions.Protocol. Similarly, 3.13.0b1 adds the new
__firstlineno__ attribute to all classes.
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)
This library adheres to Semantic Versioning 2.0 <http://semver.org/>_.
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)
Fixed MemoryObjectSendStream.send() not raising BrokenResourceError when the
last corresponding MemoryObjectReceiveStream is closed while waiting to send a
falsey item ([#731](https://github.com/agronholm/anyio/issues/731) <https://github.com/agronholm/anyio/issues/731>_; PR by Ganden
Schaffner)
Fix: nested matches of exclude patterns could exclude too much code, as
reported in issue 1779_. This is now fixed.
Changed: previously, coverage.py would consider a module docstring to be an
executable statement if it appeared after line 1 in the file, but not
executable if it was the first line. Now module docstrings are never counted
as executable statements. This can change coverage.py's count of the number
of statements in a file, which can slightly change the coverage percentage
reported.
In the HTML report, the filter term and "hide covered" checkbox settings are
remembered between viewings, thanks to Daniel Diniz <pull 1776_>_.
Python 3.13.0b1 is supported.
Fix: parsing error handling is improved to ensure bizarre source files are
handled gracefully, and to unblock oss-fuzz fuzzing, thanks to Liam DeVoe <pull 1788_>. Closes issue 1787.
v0.4.5 marks the official Beta release of ruff server, an integrated language server built into Ruff. ruff server supports the same feature set as ruff-lsp, powering linting, formatting, and code fixes in Ruff's editor integrations -- but with superior performance and no installation required. We'd love your feedback!
v0.4.5 marks the official Beta release of ruff server, an integrated language server built into Ruff.
ruff server supports the same feature set as ruff-lsp, powering linting, formatting, and
code fixes in Ruff's editor integrations -- but with superior performance and
no installation required. We'd love your feedback!
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 minor-and-patch group with 5 updates:
4.11.0
4.12.0
4.3.0
4.4.0
2.2.6
2.3.0
7.5.1
7.5.2
0.4.4
0.4.5
Updates
typing-extensions
from 4.11.0 to 4.12.0Release notes
Sourced from typing-extensions's releases.
... (truncated)
Changelog
Sourced from typing-extensions's changelog.
... (truncated)
Commits
f90a8dc
Prepare release 4.12.0 (#408)118e1a6
Make sureisinstance(typing_extensions.ParamSpec("P"), typing.TypeVar)
is u...910141a
Add security documentation (#403)0dbc7c9
Prepare release 4.12.0rc1 (#402)1da5d3d
Update actions/setup-python (#401)72298f0
4.12.0a2 (#400)465ba78
Fix publish workflow (#399)21fde1f
Prepare releaes 4.12.0a1 (#398)63d8277
Add workflow for Trusted Publishing (#395)074d053
Backport PEP-696 specialisation on Python >=3.11.1 (#397)Updates
anyio
from 4.3.0 to 4.4.0Release notes
Sourced from anyio's releases.
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
codespell
from 2.2.6 to 2.3.0Release notes
Sourced from codespell's releases.
... (truncated)
Commits
193cd7d
[pre-commit.ci] pre-commit autoupdate5c0343b
Materials science-related corrections 3 (#3424)f1b41a2
Addarragne->arrange
typo (#3421)a2c7564
[pre-commit.ci] pre-commit autoupdateb841705
Add coverage files to .gitignore10c2abc
[pre-commit.ci] pre-commit autoupdate0b09d75
mian->main (#3339)d64c476
insstance typo (#3418)0c63f96
Add netflify typo (#3417)5875f4f
[pre-commit.ci] pre-commit autoupdateUpdates
coverage
from 7.5.1 to 7.5.2Changelog
Sourced from coverage's changelog.
Commits
242adea
build: don't claim pre-alpha-1 in classifiers7f33622
docs: sample HTML for 7.5.2946fa3a
docs: prep for 7.5.2535ddc3
build: pylint can run in parallel60a5d65
docs: explain partial coverage reports on generator expressions (#1789)0700018
docs: changelog for #1788 #1787. Thanks Liam DeVoe364282e
fix: catch TokenError on parse (#1788)81089de
fix: module docstrings are never counted as statements96bd930
fix: rework exclusion parsing to fix #177975f9d51
test(build): when running metacov, create json reportUpdates
ruff
from 0.4.4 to 0.4.5Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
... (truncated)
Commits
550aa87
Bump version tov0.4.5
(#11502)3c22a3b
Minor edits toruff server
docs (#11500)6263923
Update documentation forruff server
with new migration guide (#11499)94abea4
ruff server
: Fix multiple issues with Neovim and Helix (#11497)519a650
Mark quotes as unnecessary for non-evaluated annotations (#11485)573facd
Fix automatic configuration reloading for text and notebook documents (#11492)3cb2e67
ruff.applyFormat
now formats an entire notebook document (#11493)f0046ab
Movehas_comments
toCommentRanges
(#11495)5bb9720
Avoid multiline quotes warning withquote-style = preserve
(#11490)9ff18bf
Simplify Neovim docs for the LSP setup (#11489)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