Change deprecated @runtime to formal API @runtime_checkable in the error
message. Patch by Xuehai Pan.
Fix regression in 4.6.0 where attempting to define a Protocol that was
generic over a ParamSpec or a TypeVarTuple would cause TypeError to be
raised. Patch by Alex Waygood.
Add typing_extensions.Buffer, a marker class for buffer types, as proposed
by PEP 688. Equivalent to collections.abc.Buffer in Python 3.12. Patch by
Jelle Zijlstra.
Backport two CPython PRs fixing various issues with typing.Literal:
python/cpython#23294 and
python/cpython#23383. Both CPython PRs were
originally by Yurii Karabas, and both were backported to Python >=3.9.1, but
no earlier. Patch by Alex Waygood.
A side effect of one of the changes is that equality comparisons of Literal
objects will now raise a TypeError if one of the Literal objects being
compared has a mutable parameter. (Using mutable parameters with Literal is
not supported by PEP 586 or by any major static type checkers.)
Literal is now reimplemented on all Python versions <= 3.10.0. The
typing_extensions version does not suffer from the bug that was fixed in
python/cpython#29334. (The CPython bugfix was
backported to CPython 3.10.1 and 3.9.8, but no earlier.)
Backport CPython PR 26067
(originally by Yurii Karabas), ensuring that isinstance() calls on
protocols raise TypeError when the protocol is not decorated with
@runtime_checkable. Patch by Alex Waygood.
Backport several significant performance improvements to runtime-checkable
protocols that have been made in Python 3.12 (see
python/cpython#74690 for details). Patch by Alex
Waygood.
A side effect of one of the performance improvements is that the members of
a runtime-checkable protocol are now considered “frozen” at runtime as soon
as the class has been created. Monkey-patching attributes onto a
runtime-checkable protocol will still work, but will have no impact on
isinstance() checks comparing objects to the protocol. See
"What's New in Python 3.12"
for more details.
isinstance() checks against runtime-checkable protocols now use
inspect.getattr_static() rather than hasattr() to lookup whether
attributes exist (backporting python/cpython#103034).
This means that descriptors and __getattr__ methods are no longer
unexpectedly evaluated during isinstance() checks against runtime-checkable
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 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)
Updates the requirements on typing-extensions to permit the latest version.
Changelog
Sourced from typing-extensions's changelog.
... (truncated)
Commits
f62fa3f
Prepare release 4.6.1 (#186)88a7f68
HaveProtocol
inherit fromtyping.Generic
on 3.8+ (#184)b306e56
Clarify error message for non@runtime_checkable
decorated protocols (#178)356934c
Prepare release 4.6.0 (#177)8054a29
Further simplify the implementations of the TypeVarLikes (#176)773090f
Remove module assignment for TypeVar and friends (#175)bbfd0cc
Extend docs intro (#168)88be907
Improve the repr() of_marker
(#174)9648c6f
add infer_variance for ParamSpec (#172)f2fc4cb
Add references to additional known limitations (#171)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 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)