Releases: python/typing_extensions
Releases · python/typing_extensions
4.16.0rc1
- Make
typing_extensions.TypeAliasType's__module__attribute writable. Backport of CPython PR #149172. - Fix setting of
__required_keys__and__optional_keys__when inheriting keys with the same name. - Add support for
AsyncIterator,io.Reader,io.Writerandos.PathLikeprotocols as bases for other protocols. - Fix incorrect behaviour on Python 3.9 and Python 3.10 that meant that calling
isinstancewithtyping_extensions.Concatenate[...]ortyping_extensions.Unpack[...]as the first argument could have a different result in some situations depending on whether or not a profiling function had been set usingsys.setprofile. This affected both CPython and PyPy implementations. Patch by Brian Schubert. - Fix
__init_subclass__()behavior in the presence of multiple inheritance involving an@deprecated-decorated base class. Backport of CPython PR #138210 by Brian Schubert. - Raise
TypeErrorwhen attempting to subclasstyping_extensions.ParamSpecon Python 3.9. Thetypingimplementation has always raised an error, and thetyping_extensionsimplementation has raised an error on Python 3.10+ sincetyping_extensionsv4.6.0. Patch by Brian Schubert. - Add the
bound,covariant,contravariant, andinfer_varianceparameters toTypeVarTuple. - Officially support the
bound,covariant,contravariantandinfer_varianceparameters toParamSpec. Improve the validation of these parameters at runtime. - Rename
typing_extensions.Sentineltotyping_extensions.sentinel, following the name that has been adopted forbuiltins.sentinelon Python 3.15.typing_extensions.Sentinelis retained as a soft-deprecated alias for backwards compatibility. - Add support for pickling sentinels.
- Sentinels now preserve their identity when copied or deep-copied.
- Deprecate passing
nameas a keyword argument orrepras a positional argument to thesentinelconstructor. - The default repr of a sentinel
X = sentinel("X")is nowXrather than<X>. - Deprecate arbitrary attribute assignments to sentinels.
- Deprecate subclassing sentinels.
- Add support for Python 3.15.
4.15.0
No user-facing changes since 4.15.0rc1.
New features since 4.14.1:
- Add the
@typing_extensions.disjoint_basedecorator, as specified
in PEP 800. Patch by Jelle Zijlstra. - Add
typing_extensions.type_repr, a backport of
annotationlib.type_repr,
introduced in Python 3.14 (CPython PR #124551,
originally by Jelle Zijlstra). Patch by Semyon Moroz. - Fix behavior of type params in
typing_extensions.evaluate_forward_ref. Backport of
CPython PR #137227 by Jelle Zijlstra.
4.15.0rc1
- Add the
@typing_extensions.disjoint_basedecorator, as specified
in PEP 800. Patch by Jelle Zijlstra. - Add
typing_extensions.type_repr, a backport of
annotationlib.type_repr,
introduced in Python 3.14 (CPython PR #124551,
originally by Jelle Zijlstra). Patch by Semyon Moroz. - Fix behavior of type params in
typing_extensions.evaluate_forward_ref. Backport of
CPython PR #137227 by Jelle Zijlstra.
4.14.1
Release 4.14.1 (July 4, 2025)
- Fix usage of
typing_extensions.TypedDictnested inside other types
(e.g.,typing.Type[typing_extensions.TypedDict]). This is not allowed by the
type system but worked on older versions, so we maintain support.
4.14.0
This release adds several new features, including experimental support for inline typed dictionaries (PEP 764) and sentinels (PEP 661), and support for changes in Python 3.14. In addition, Python 3.8 is no longer supported.
Changes since 4.14.0rc1:
- Remove
__or__and__ror__methods fromtyping_extensions.Sentinel
on Python versions <3.10. PEP 604 was introduced in Python 3.10, and
typing_extensionsdoes not generally attempt to backport PEP-604 methods
to prior versions. - Further update
typing_extensions.evaluate_forward_refwith changes in Python 3.14.
Changes included in 4.14.0rc1:
- Drop support for Python 3.8 (including PyPy-3.8). Patch by Victorien Plot.
- Do not attempt to re-export names that have been removed from
typing,
anticipating the removal oftyping.no_type_check_decoratorin Python 3.15.
Patch by Jelle Zijlstra. - Update
typing_extensions.Format,typing_extensions.evaluate_forward_ref, and
typing_extensions.TypedDictto align
with changes in Python 3.14. Patches by Jelle Zijlstra. - Fix tests for Python 3.14 and 3.15. Patches by Jelle Zijlstra.
New features:
- Add support for inline typed dictionaries (PEP 764).
Patch by Victorien Plot. - Add
typing_extensions.Readerandtyping_extensions.Writer. Patch by
Sebastian Rittau. - Add support for sentinels (PEP 661). Patch by
Victorien Plot.
4.14.0rc1
Major changes:
- Drop support for Python 3.8 (including PyPy-3.8). Patch by Victorien Plot.
- Do not attempt to re-export names that have been removed from
typing,
anticipating the removal oftyping.no_type_check_decoratorin Python 3.15.
Patch by Jelle Zijlstra. - Update
typing_extensions.Format,typing_extensions.evaluate_forward_ref, and
typing_extensions.TypedDictto align
with changes in Python 3.14. Patches by Jelle Zijlstra. - Fix tests for Python 3.14 and 3.15. Patches by Jelle Zijlstra.
New features:
- Add support for inline typed dictionaries (PEP 764).
Patch by Victorien Plot. - Add
typing_extensions.Readerandtyping_extensions.Writer. Patch by
Sebastian Rittau. - Add support for sentinels (PEP 661). Patch by
Victorien Plot.
4.13.2
- Fix
TypeErrorwhen taking the union oftyping_extensions.TypeAliasTypeand a
typing.TypeAliasTypeon Python 3.12 and 3.13.
Patch by Joren Hammudoglu. - Backport from CPython PR #132160
to avoid having user arguments shadowed in generated__new__by
@typing_extensions.deprecated.
Patch by Victorien Plot.
4.13.1
This is a bugfix release fixing two edge cases that appear on old bugfix releases of CPython.
Bugfixes:
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