Releases: python/typing_extensions
Release list
4.13.0
New features:
- Add
typing_extensions.TypeFormfrom PEP 747. Patch by
Jelle Zijlstra. - Add
typing_extensions.get_annotations, a backport of
inspect.get_annotationsthat adds features specified
by PEP 649. Patches by Jelle Zijlstra and Alex Waygood. - Backport
evaluate_forward_reffrom CPython PR
#119891 to evaluateForwardRefs.
Patch by Daraan, backporting a CPython PR by Jelle Zijlstra.
Bugfixes and changed features:
- Update PEP 728 implementation to a newer version of the PEP. Patch by Jelle Zijlstra.
- Copy the coroutine status of functions and methods wrapped
with@typing_extensions.deprecated. Patch by Sebastian Rittau. - Fix bug where
TypeAliasTypeinstances could be subscripted even
where they were not generic. Patch by Daraan. - Fix bug where a subscripted
TypeAliasTypeinstance did not have all
attributes of the originalTypeAliasTypeinstance on older Python versions.
Patch by Daraan and Alex Waygood. - Fix bug where subscripted
TypeAliasTypeinstances (and some other
subscripted objects) had wrong parameters if they were directly
subscripted with anUnpackobject.
Patch by Daraan. - Backport to Python 3.10 the ability to substitute
...in genericCallable
aliases that have aConcatenatespecial form as their argument.
Patch by Daraan. - Extended the
Concatenatebackport for Python 3.8-3.10 to now accept
Ellipsisas an argument. Patch by Daraan. - Fix backport of
get_type_hintsto reflect Python 3.11+ behavior which does not add
Union[..., NoneType]to annotations that have aNonedefault value anymore.
This fixes wrapping ofAnnotatedin an unwantedOptionalin such cases.
Patch by Daraan. - Fix error in subscription of
Unpackaliases causing nested Unpacks
to not be resolved correctly. Patch by Daraan. - Backport CPython PR #124795:
fixTypeAliasTypenot raising an error on non-tuple inputs fortype_params.
Patch by Daraan. - Fix that lists and
...could not be used for parameter expressions forTypeAliasType
instances before Python 3.11.
Patch by Daraan. - Fix error on Python 3.10 when using
typing.Concatenateand
typing_extensions.Concatenatetogether. Patch by Daraan. - Backport of CPython PR #109544
to reflect Python 3.13+ behavior: A value assigned to__total__in the class body of a
TypedDictwill be overwritten by thetotalargument of theTypedDictconstructor.
Patch by Daraan, backporting a CPython PR by Jelle Zijlstra. isinstance(typing_extensions.Unpack[...], TypeVar)now evaluates toFalseon Python 3.11
and newer, but remainsTrueon versions before 3.11.
Patch by Daraan.
4.13.0rc1
New features:
- Add
typing_extensions.TypeFormfrom PEP 747. Patch by
Jelle Zijlstra. - Add
typing_extensions.get_annotations, a backport of
inspect.get_annotationsthat adds features specified
by PEP 649. Patches by Jelle Zijlstra and Alex Waygood. - Backport
evaluate_forward_reffrom CPython PR
#119891 to evaluateForwardRefs.
Patch by Daraan, backporting a CPython PR by Jelle Zijlstra.
Bugfixes and changed features:
- Update PEP 728 implementation to a newer version of the PEP. Patch by Jelle Zijlstra.
- Copy the coroutine status of functions and methods wrapped
with@typing_extensions.deprecated. Patch by Sebastian Rittau. - Fix bug where
TypeAliasTypeinstances could be subscripted even
where they were not generic. Patch by Daraan. - Fix bug where a subscripted
TypeAliasTypeinstance did not have all
attributes of the originalTypeAliasTypeinstance on older Python versions.
Patch by Daraan and Alex Waygood. - Fix bug where subscripted
TypeAliasTypeinstances (and some other
subscripted objects) had wrong parameters if they were directly
subscripted with anUnpackobject.
Patch by Daraan. - Backport to Python 3.10 the ability to substitute
...in genericCallable
aliases that have aConcatenatespecial form as their argument.
Patch by Daraan. - Extended the
Concatenatebackport for Python 3.8-3.10 to now accept
Ellipsisas an argument. Patch by Daraan. - Fix backport of
get_type_hintsto reflect Python 3.11+ behavior which does not add
Union[..., NoneType]to annotations that have aNonedefault value anymore.
This fixes wrapping ofAnnotatedin an unwantedOptionalin such cases.
Patch by Daraan. - Fix error in subscription of
Unpackaliases causing nested Unpacks
to not be resolved correctly. Patch by Daraan. - Backport CPython PR #124795:
fixTypeAliasTypenot raising an error on non-tuple inputs fortype_params.
Patch by Daraan. - Fix that lists and ... could not be used for parameter expressions for
TypeAliasType
instances before Python 3.11.
Patch by Daraan. - Fix error on Python 3.10 when using
typing.Concatenateand
typing_extensions.Concatenatetogether. Patch by Daraan. - Backport of CPython PR #109544
to reflect Python 3.13+ behavior: A value assigned to__total__in the class body of a
TypedDictwill be overwritten by thetotalargument of theTypedDictconstructor.
Patch by Daraan, backporting a CPython PR by Jelle Zijlstra. - Fix for Python 3.11 that now
isinstance(typing_extensions.Unpack[...], TypeVar)
evaluates toFalse, however stillTruefor <3.11.
Patch by Daraan
4.12.2
- Fix regression in v4.12.0 where specialization of certain generics with an overridden
__eq__method would raise errors. Patch by Jelle Zijlstra. - Fix tests so they pass on 3.13.0b2
4.12.1
- Preliminary changes for compatibility with the draft implementation
of PEP 649 in Python 3.14. Patch by Jelle Zijlstra. - Fix regression in v4.12.0 where nested
Annotatedtypes would cause
TypeErrorto be raised if the nestedAnnotatedtype had unhashable
metadata. Patch by Alex Waygood.
4.12.0
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.ParamSpecon 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 usingsys.setprofile. Patch by Alex Waygood.
Changes included in 4.12.0rc1:
- Improve the implementation of type parameter defaults (PEP 696)
- Backport the
typing.NoDefaultsentinel 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, matchingtyping.TypeVar,typing.ParamSpecand
typing.TypeVarTupleon Python 3.13+. - TypeVars, ParamSpecs and TypeVarTuples with
default=Nonepassed to
their constructors now have their__default__attribute set toNone
at runtime rather thantypes.NoneType. - Fix most tests for
TypeVar,ParamSpecandTypeVarTupleon 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
TypeVarwith a default value after a
TypeVarTuplein 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.
- Backport the
- Fix
Protocoltests 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
AttributeErrorwhen usingtyping_extensions.runtime_checkable
in combination withtyping.Protocolon Python 3.12.2 or newer.
Patch by Alex Waygood. - At runtime,
assert_nevernow includes the repr of the argument
in theAssertionError. Patch by Hashem, backporting of the original
fix python/cpython#91720 by Jelle Zijlstra. - The second and third parameters of
typing_extensions.Generator,
and the second parameter oftyping_extensions.AsyncGenerator,
now default toNone. This matches the behaviour oftyping.Generator
andtyping.AsyncGeneratoron Python 3.13+. typing_extensions.ContextManagerand
typing_extensions.AsyncContextManagernow have an optional second
parameter, which defaults toOptional[bool]. The new parameter
signifies the return type of the__(a)exit__method, matching
typing.ContextManagerandtyping.AsyncContextManageron Python
3.13+.- Backport
types.CapsuleTypefrom Python 3.13. - Releases are now made using Trusted Publishers
improving the security of the release process. Patch by Jelle Zijlstra.
4.12.0rc1
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.NoDefaultsentinel 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, matchingtyping.TypeVar,typing.ParamSpecand
typing.TypeVarTupleon Python 3.13+. - TypeVars, ParamSpecs and TypeVarTuples with
default=Nonepassed to
their constructors now have their__default__attribute set toNone
at runtime rather thantypes.NoneType. - Fix most tests for
TypeVar,ParamSpecandTypeVarTupleon 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
TypeVarwith a default value after a
TypeVarTuplein 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.
- Backport the
- Fix
Protocoltests 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
AttributeErrorwhen usingtyping_extensions.runtime_checkable
in combination withtyping.Protocolon Python 3.12.2 or newer.
Patch by Alex Waygood. - At runtime,
assert_nevernow includes the repr of the argument
in theAssertionError. Patch by Hashem, backporting of the original
fix python/cpython#91720 by Jelle Zijlstra. - The second and third parameters of
typing_extensions.Generator,
and the second parameter oftyping_extensions.AsyncGenerator,
now default toNone. This matches the behaviour oftyping.Generator
andtyping.AsyncGeneratoron Python 3.13+. typing_extensions.ContextManagerand
typing_extensions.AsyncContextManagernow have an optional second
parameter, which defaults toOptional[bool]. The new parameter
signifies the return type of the__(a)exit__method, matching
typing.ContextManagerandtyping.AsyncContextManageron Python
3.13+.- Backport
types.CapsuleTypefrom Python 3.13. - Releases are now made using Trusted Publishers
improving the security of the release process. Patch by Jelle Zijlstra.
4.12.0a2
This is another alpha release to test the new release workflow.
4.12.0a1
This release primarily tests a revised release workflow. If all goes
well, release 4.12.0rc1 will follow soon.
- Backport the
typing.NoDefaultsentinel 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, matchingtyping.TypeVar,typing.ParamSpecand
typing.TypeVarTupleon Python 3.13+. - TypeVars, ParamSpecs and TypeVarTuples with
default=Nonepassed to
their constructors now have their__default__attribute set toNone
at runtime rather thantypes.NoneType. - Fix most tests for
TypeVar,ParamSpecandTypeVarTupleon 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
TypeVarwith a default value after a
TypeVarTuplein a type parameter list. This matches the CPython
implementation of PEP 696 on Python 3.13+. - Fix bug in PEP-696 implementation where default values for
ParamSpecs
would be cast to tuples if a list was provided as the default value.
Patch by Alex Waygood. - Fix
Protocoltests 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
AttributeErrorwhen usingtyping_extensions.runtime_checkable
in combination withtyping.Protocolon Python 3.12.2 or newer.
Patch by Alex Waygood. - At runtime,
assert_nevernow includes the repr of the argument
in theAssertionError. Patch by Hashem, backporting of the original
fix python/cpython#91720 by Jelle Zijlstra. - The second and third parameters of
typing_extensions.Generator,
and the second parameter oftyping_extensions.AsyncGenerator,
now default toNone. This matches the behaviour oftyping.Generator
andtyping.AsyncGeneratoron Python 3.13+. typing_extensions.ContextManagerand
typing_extensions.AsyncContextManagernow have an optional second
parameter, which defaults toOptional[bool]. The new parameter
signifies the return type of the__(a)exit__method, matching
typing.ContextManagerandtyping.AsyncContextManageron Python
3.13+.- Backport
types.CapsuleTypefrom Python 3.13.
4.11.0
Release 4.11.0 (April 5, 2024)
This feature release provides improvements to various recently
added features, most importantly type parameter defaults (PEP 696).
There are no changes since 4.11.0rc1.
Changes since 4.10.0:
- Fix tests on Python 3.13.0a5. Patch by Jelle Zijlstra.
- Fix the runtime behavior of type parameters with defaults (PEP 696).
Patch by Nadir Chowdhury. - Fix minor discrepancy between error messages produced by
typing
andtyping_extensionson Python 3.10. Patch by Jelle Zijlstra. - When
include_extra=False,get_type_hints()now stripsReadOnlyfrom the annotation.
4.11.0rc1
- Fix tests on Python 3.13.0a5. Patch by Jelle Zijlstra.
- Fix the runtime behavior of type parameters with defaults (PEP 696).
Patch by Nadir Chowdhury. - Fix minor discrepancy between error messages produced by
typing
andtyping_extensionson Python 3.10. Patch by Jelle Zijlstra. - When
include_extra=False,get_type_hints()now stripsReadOnlyfrom the annotation.