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
protocols. However, it may also mean that some objects which used to be
considered instances of a runtime-checkable protocol on older versions of
typing_extensions may no longer be considered instances of that protocol
using the new release, and vice versa. Most users are unlikely to be affected
by this change. Patch by Alex Waygood.
Backport the ability to define __init__ methods on Protocol classes, a
change made in Python 3.11 (originally implemented in
python/cpython#31628 by Adrian Garcia Badaracco).
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
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)3534900
Shorten README, link to docs page (#169)52c53f8
Slightly cleanup implementation of typevarlikes (#170)024d465
Add documentation page for typing-extensions (#166)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)