1# Release 4.12.2 (June 7, 2024) 2 3- Fix regression in v4.12.0 where specialization of certain 4 generics with an overridden `__eq__` method would raise errors. 5 Patch by Jelle Zijlstra. 6- Fix tests so they pass on 3.13.0b2 7 8# Release 4.12.1 (June 1, 2024) 9 10- Preliminary changes for compatibility with the draft implementation 11 of PEP 649 in Python 3.14. Patch by Jelle Zijlstra. 12- Fix regression in v4.12.0 where nested `Annotated` types would cause 13 `TypeError` to be raised if the nested `Annotated` type had unhashable 14 metadata. Patch by Alex Waygood. 15 16# Release 4.12.0 (May 23, 2024) 17 18This release is mostly the same as 4.12.0rc1 but fixes one more 19longstanding bug. 20 21- Fix incorrect behaviour of `typing_extensions.ParamSpec` on Python 3.8 and 22 3.9 that meant that 23 `isinstance(typing_extensions.ParamSpec("P"), typing.TypeVar)` would have a 24 different result in some situations depending on whether or not a profiling 25 function had been set using `sys.setprofile`. Patch by Alex Waygood. 26 27# Release 4.12.0rc1 (May 16, 2024) 28 29This release focuses on compatibility with the upcoming release of 30Python 3.13. Most changes are related to the implementation of type 31parameter defaults (PEP 696). 32 33Thanks to all of the people who contributed patches, especially Alex 34Waygood, who did most of the work adapting typing-extensions to the 35CPython PEP 696 implementation. 36 37Full changelog: 38 39- Improve the implementation of type parameter defaults (PEP 696) 40 - Backport the `typing.NoDefault` sentinel object from Python 3.13. 41 TypeVars, ParamSpecs and TypeVarTuples without default values now have 42 their `__default__` attribute set to this sentinel value. 43 - TypeVars, ParamSpecs and TypeVarTuples now have a `has_default()` 44 method, matching `typing.TypeVar`, `typing.ParamSpec` and 45 `typing.TypeVarTuple` on Python 3.13+. 46 - TypeVars, ParamSpecs and TypeVarTuples with `default=None` passed to 47 their constructors now have their `__default__` attribute set to `None` 48 at runtime rather than `types.NoneType`. 49 - Fix most tests for `TypeVar`, `ParamSpec` and `TypeVarTuple` on Python 50 3.13.0b1 and newer. 51 - Backport CPython PR [#118774](https://github.com/python/cpython/pull/118774), 52 allowing type parameters without default values to follow those with 53 default values in some type parameter lists. Patch by Alex Waygood, 54 backporting a CPython PR by Jelle Zijlstra. 55 - It is now disallowed to use a `TypeVar` with a default value after a 56 `TypeVarTuple` in a type parameter list. This matches the CPython 57 implementation of PEP 696 on Python 3.13+. 58 - Fix bug in PEP-696 implementation where a default value for a `ParamSpec` 59 would be cast to a tuple if a list was provided. 60 Patch by Alex Waygood. 61- Fix `Protocol` tests on Python 3.13.0a6 and newer. 3.13.0a6 adds a new 62 `__static_attributes__` attribute to all classes in Python, 63 which broke some assumptions made by the implementation of 64 `typing_extensions.Protocol`. Similarly, 3.13.0b1 adds the new 65 `__firstlineno__` attribute to all classes. 66- Fix `AttributeError` when using `typing_extensions.runtime_checkable` 67 in combination with `typing.Protocol` on Python 3.12.2 or newer. 68 Patch by Alex Waygood. 69- At runtime, `assert_never` now includes the repr of the argument 70 in the `AssertionError`. Patch by Hashem, backporting of the original 71 fix https://github.com/python/cpython/pull/91720 by Jelle Zijlstra. 72- The second and third parameters of `typing_extensions.Generator`, 73 and the second parameter of `typing_extensions.AsyncGenerator`, 74 now default to `None`. This matches the behaviour of `typing.Generator` 75 and `typing.AsyncGenerator` on Python 3.13+. 76- `typing_extensions.ContextManager` and 77 `typing_extensions.AsyncContextManager` now have an optional second 78 parameter, which defaults to `Optional[bool]`. The new parameter 79 signifies the return type of the `__(a)exit__` method, matching 80 `typing.ContextManager` and `typing.AsyncContextManager` on Python 81 3.13+. 82- Backport `types.CapsuleType` from Python 3.13. 83- Releases are now made using [Trusted Publishers](https://docs.pypi.org/trusted-publishers/) 84 improving the security of the release process. Patch by Jelle Zijlstra. 85 86# Release 4.12.0a1 and 4.12.0a2 (May 16, 2024) 87 88These releases primarily test a revised release workflow. If all goes 89well, release 4.12.0rc1 will follow soon. 90 91# Release 4.11.0 (April 5, 2024) 92 93This feature release provides improvements to various recently 94added features, most importantly type parameter defaults (PEP 696). 95 96There are no changes since 4.11.0rc1. 97 98# Release 4.11.0rc1 (March 24, 2024) 99 100- Fix tests on Python 3.13.0a5. Patch by Jelle Zijlstra. 101- Fix the runtime behavior of type parameters with defaults (PEP 696). 102 Patch by Nadir Chowdhury. 103- Fix minor discrepancy between error messages produced by `typing` 104 and `typing_extensions` on Python 3.10. Patch by Jelle Zijlstra. 105- When `include_extra=False`, `get_type_hints()` now strips `ReadOnly` from the annotation. 106 107# Release 4.10.0 (February 24, 2024) 108 109This feature release adds support for PEP 728 (TypedDict with extra 110items) and PEP 742 (``TypeIs``). 111 112There are no changes since 4.10.0rc1. 113 114# Release 4.10.0rc1 (February 17, 2024) 115 116- Add support for PEP 728, supporting the `closed` keyword argument and the 117 special `__extra_items__` key for TypedDict. Patch by Zixuan James Li. 118- Add support for PEP 742, adding `typing_extensions.TypeIs`. Patch 119 by Jelle Zijlstra. 120- Drop runtime error when a read-only `TypedDict` item overrides a mutable 121 one. Type checkers should still flag this as an error. Patch by Jelle 122 Zijlstra. 123- Speedup `issubclass()` checks against simple runtime-checkable protocols by 124 around 6% (backporting https://github.com/python/cpython/pull/112717, by Alex 125 Waygood). 126- Fix a regression in the implementation of protocols where `typing.Protocol` 127 classes that were not marked as `@runtime_checkable` would be unnecessarily 128 introspected, potentially causing exceptions to be raised if the protocol had 129 problematic members. Patch by Alex Waygood, backporting 130 https://github.com/python/cpython/pull/113401. 131 132# Release 4.9.0 (December 9, 2023) 133 134This feature release adds `typing_extensions.ReadOnly`, as specified 135by PEP 705, and makes various other improvements, especially to 136`@typing_extensions.deprecated()`. 137 138There are no changes since 4.9.0rc1. 139 140# Release 4.9.0rc1 (November 29, 2023) 141 142- Add support for PEP 705, adding `typing_extensions.ReadOnly`. Patch 143 by Jelle Zijlstra. 144- All parameters on `NewType.__call__` are now positional-only. This means that 145 the signature of `typing_extensions.NewType.__call__` now exactly matches the 146 signature of `typing.NewType.__call__`. Patch by Alex Waygood. 147- Fix bug with using `@deprecated` on a mixin class. Inheriting from a 148 deprecated class now raises a `DeprecationWarning`. Patch by Jelle Zijlstra. 149- `@deprecated` now gives a better error message if you pass a non-`str` 150 argument to the `msg` parameter. Patch by Alex Waygood. 151- `@deprecated` is now implemented as a class for better introspectability. 152 Patch by Jelle Zijlstra. 153- Exclude `__match_args__` from `Protocol` members. 154 Backport of https://github.com/python/cpython/pull/110683 by Nikita Sobolev. 155- When creating a `typing_extensions.NamedTuple` class, ensure `__set_name__` 156 is called on all objects that define `__set_name__` and exist in the values 157 of the `NamedTuple` class's class dictionary. Patch by Alex Waygood, 158 backporting https://github.com/python/cpython/pull/111876. 159- Improve the error message when trying to call `issubclass()` against a 160 `Protocol` that has non-method members. Patch by Alex Waygood (backporting 161 https://github.com/python/cpython/pull/112344, by Randolph Scholz). 162 163# Release 4.8.0 (September 17, 2023) 164 165No changes since 4.8.0rc1. 166 167# Release 4.8.0rc1 (September 7, 2023) 168 169- Add `typing_extensions.Doc`, as proposed by PEP 727. Patch by 170 Sebastián Ramírez. 171- Drop support for Python 3.7 (including PyPy-3.7). Patch by Alex Waygood. 172- Fix bug where `get_original_bases()` would return incorrect results when 173 called on a concrete subclass of a generic class. Patch by Alex Waygood 174 (backporting https://github.com/python/cpython/pull/107584, by James 175 Hilton-Balfe). 176- Fix bug where `ParamSpec(default=...)` would raise a `TypeError` on Python 177 versions <3.11. Patch by James Hilton-Balfe 178 179# Release 4.7.1 (July 2, 2023) 180 181- Fix support for `TypedDict`, `NamedTuple` and `is_protocol` on PyPy-3.7 and 182 PyPy-3.8. Patch by Alex Waygood. Note that PyPy-3.7 and PyPy-3.8 are unsupported 183 by the PyPy project. The next feature release of typing-extensions will 184 drop support for PyPy-3.7 and may also drop support for PyPy-3.8. 185 186# Release 4.7.0 (June 28, 2023) 187 188- This is expected to be the last feature release supporting Python 3.7, 189 which reaches its end of life on June 27, 2023. Version 4.8.0 will support 190 only Python 3.8.0 and up. 191- Fix bug where a `typing_extensions.Protocol` class that had one or more 192 non-callable members would raise `TypeError` when `issubclass()` 193 was called against it, even if it defined a custom `__subclasshook__` 194 method. The correct behaviour -- which has now been restored -- is not to 195 raise `TypeError` in these situations if a custom `__subclasshook__` method 196 is defined. Patch by Alex Waygood (backporting 197 https://github.com/python/cpython/pull/105976). 198 199# Release 4.7.0rc1 (June 21, 2023) 200 201- Add `typing_extensions.get_protocol_members` and 202 `typing_extensions.is_protocol` (backport of CPython PR #104878). 203 Patch by Jelle Zijlstra. 204- `typing_extensions` now re-exports all names in the standard library's 205 `typing` module, except the deprecated `ByteString`. Patch by Jelle 206 Zijlstra. 207- Due to changes in the implementation of `typing_extensions.Protocol`, 208 `typing.runtime_checkable` can now be used on `typing_extensions.Protocol` 209 (previously, users had to use `typing_extensions.runtime_checkable` if they 210 were using `typing_extensions.Protocol`). 211- Align the implementation of `TypedDict` with the implementation in the 212 standard library on Python 3.9 and higher. 213 `typing_extensions.TypedDict` is now a function instead of a class. The 214 private functions `_check_fails`, `_dict_new`, and `_typeddict_new` 215 have been removed. `is_typeddict` now returns `False` when called with 216 `TypedDict` itself as the argument. Patch by Jelle Zijlstra. 217- Declare support for Python 3.12. Patch by Jelle Zijlstra. 218- Fix tests on Python 3.13, which removes support for creating 219 `TypedDict` classes through the keyword-argument syntax. Patch by 220 Jelle Zijlstra. 221- Fix a regression introduced in v4.6.3 that meant that 222 ``issubclass(object, typing_extensions.Protocol)`` would erroneously raise 223 ``TypeError``. Patch by Alex Waygood (backporting the CPython PR 224 https://github.com/python/cpython/pull/105239). 225- Allow `Protocol` classes to inherit from `typing_extensions.Buffer` or 226 `collections.abc.Buffer`. Patch by Alex Waygood (backporting 227 https://github.com/python/cpython/pull/104827, by Jelle Zijlstra). 228- Allow classes to inherit from both `typing.Protocol` and `typing_extensions.Protocol` 229 simultaneously. Since v4.6.0, this caused `TypeError` to be raised due to a 230 metaclass conflict. Patch by Alex Waygood. 231- Backport several deprecations from CPython relating to unusual ways to 232 create `TypedDict`s and `NamedTuple`s. CPython PRs #105609 and #105780 233 by Alex Waygood; `typing_extensions` backport by Jelle Zijlstra. 234 - Creating a `NamedTuple` using the functional syntax with keyword arguments 235 (`NT = NamedTuple("NT", a=int)`) is now deprecated. 236 - Creating a `NamedTuple` with zero fields using the syntax `NT = NamedTuple("NT")` 237 or `NT = NamedTuple("NT", None)` is now deprecated. 238 - Creating a `TypedDict` with zero fields using the syntax `TD = TypedDict("TD")` 239 or `TD = TypedDict("TD", None)` is now deprecated. 240- Fix bug on Python 3.7 where a protocol `X` that had a member `a` would not be 241 considered an implicit subclass of an unrelated protocol `Y` that only has a 242 member `a`. Where the members of `X` are a superset of the members of `Y`, 243 `X` should always be considered a subclass of `Y` iff `Y` is a 244 runtime-checkable protocol that only has callable members. Patch by Alex 245 Waygood (backporting CPython PR 246 https://github.com/python/cpython/pull/105835). 247 248# Release 4.6.3 (June 1, 2023) 249 250- Fix a regression introduced in v4.6.0 in the implementation of 251 runtime-checkable protocols. The regression meant 252 that doing `class Foo(X, typing_extensions.Protocol)`, where `X` was a class that 253 had `abc.ABCMeta` as its metaclass, would then cause subsequent 254 `isinstance(1, X)` calls to erroneously raise `TypeError`. Patch by 255 Alex Waygood (backporting the CPython PR 256 https://github.com/python/cpython/pull/105152). 257- Sync the repository's LICENSE file with that of CPython. 258 `typing_extensions` is distributed under the same license as 259 CPython itself. 260- Skip a problematic test on Python 3.12.0b1. The test fails on 3.12.0b1 due to 261 a bug in CPython, which will be fixed in 3.12.0b2. The 262 `typing_extensions` test suite now passes on 3.12.0b1. 263 264# Release 4.6.2 (May 25, 2023) 265 266- Fix use of `@deprecated` on classes with `__new__` but no `__init__`. 267 Patch by Jelle Zijlstra. 268- Fix regression in version 4.6.1 where comparing a generic class against a 269 runtime-checkable protocol using `isinstance()` would cause `AttributeError` 270 to be raised if using Python 3.7. 271 272# Release 4.6.1 (May 23, 2023) 273 274- Change deprecated `@runtime` to formal API `@runtime_checkable` in the error 275 message. Patch by Xuehai Pan. 276- Fix regression in 4.6.0 where attempting to define a `Protocol` that was 277 generic over a `ParamSpec` or a `TypeVarTuple` would cause `TypeError` to be 278 raised. Patch by Alex Waygood. 279 280# Release 4.6.0 (May 22, 2023) 281 282- `typing_extensions` is now documented at 283 https://typing-extensions.readthedocs.io/en/latest/. Patch by Jelle Zijlstra. 284- Add `typing_extensions.Buffer`, a marker class for buffer types, as proposed 285 by PEP 688. Equivalent to `collections.abc.Buffer` in Python 3.12. Patch by 286 Jelle Zijlstra. 287- Backport two CPython PRs fixing various issues with `typing.Literal`: 288 https://github.com/python/cpython/pull/23294 and 289 https://github.com/python/cpython/pull/23383. Both CPython PRs were 290 originally by Yurii Karabas, and both were backported to Python >=3.9.1, but 291 no earlier. Patch by Alex Waygood. 292 293 A side effect of one of the changes is that equality comparisons of `Literal` 294 objects will now raise a `TypeError` if one of the `Literal` objects being 295 compared has a mutable parameter. (Using mutable parameters with `Literal` is 296 not supported by PEP 586 or by any major static type checkers.) 297- `Literal` is now reimplemented on all Python versions <= 3.10.0. The 298 `typing_extensions` version does not suffer from the bug that was fixed in 299 https://github.com/python/cpython/pull/29334. (The CPython bugfix was 300 backported to CPython 3.10.1 and 3.9.8, but no earlier.) 301- Backport [CPython PR 26067](https://github.com/python/cpython/pull/26067) 302 (originally by Yurii Karabas), ensuring that `isinstance()` calls on 303 protocols raise `TypeError` when the protocol is not decorated with 304 `@runtime_checkable`. Patch by Alex Waygood. 305- Backport several significant performance improvements to runtime-checkable 306 protocols that have been made in Python 3.12 (see 307 https://github.com/python/cpython/issues/74690 for details). Patch by Alex 308 Waygood. 309 310 A side effect of one of the performance improvements is that the members of 311 a runtime-checkable protocol are now considered “frozen” at runtime as soon 312 as the class has been created. Monkey-patching attributes onto a 313 runtime-checkable protocol will still work, but will have no impact on 314 `isinstance()` checks comparing objects to the protocol. See 315 ["What's New in Python 3.12"](https://docs.python.org/3.12/whatsnew/3.12.html#typing) 316 for more details. 317- `isinstance()` checks against runtime-checkable protocols now use 318 `inspect.getattr_static()` rather than `hasattr()` to lookup whether 319 attributes exist (backporting https://github.com/python/cpython/pull/103034). 320 This means that descriptors and `__getattr__` methods are no longer 321 unexpectedly evaluated during `isinstance()` checks against runtime-checkable 322 protocols. However, it may also mean that some objects which used to be 323 considered instances of a runtime-checkable protocol on older versions of 324 `typing_extensions` may no longer be considered instances of that protocol 325 using the new release, and vice versa. Most users are unlikely to be affected 326 by this change. Patch by Alex Waygood. 327- Backport the ability to define `__init__` methods on Protocol classes, a 328 change made in Python 3.11 (originally implemented in 329 https://github.com/python/cpython/pull/31628 by Adrian Garcia Badaracco). 330 Patch by Alex Waygood. 331- Speedup `isinstance(3, typing_extensions.SupportsIndex)` by >10x on Python 332 <3.12. Patch by Alex Waygood. 333- Add `typing_extensions` versions of `SupportsInt`, `SupportsFloat`, 334 `SupportsComplex`, `SupportsBytes`, `SupportsAbs` and `SupportsRound`. These 335 have the same semantics as the versions from the `typing` module, but 336 `isinstance()` checks against the `typing_extensions` versions are >10x faster 337 at runtime on Python <3.12. Patch by Alex Waygood. 338- Add `__orig_bases__` to non-generic TypedDicts, call-based TypedDicts, and 339 call-based NamedTuples. Other TypedDicts and NamedTuples already had the attribute. 340 Patch by Adrian Garcia Badaracco. 341- Add `typing_extensions.get_original_bases`, a backport of 342 [`types.get_original_bases`](https://docs.python.org/3.12/library/types.html#types.get_original_bases), 343 introduced in Python 3.12 (CPython PR 344 https://github.com/python/cpython/pull/101827, originally by James 345 Hilton-Balfe). Patch by Alex Waygood. 346 347 This function should always produce correct results when called on classes 348 constructed using features from `typing_extensions`. However, it may 349 produce incorrect results when called on some `NamedTuple` or `TypedDict` 350 classes that use `typing.{NamedTuple,TypedDict}` on Python <=3.11. 351- Constructing a call-based `TypedDict` using keyword arguments for the fields 352 now causes a `DeprecationWarning` to be emitted. This matches the behaviour 353 of `typing.TypedDict` on 3.11 and 3.12. 354- Backport the implementation of `NewType` from 3.10 (where it is implemented 355 as a class rather than a function). This allows user-defined `NewType`s to be 356 pickled. Patch by Alex Waygood. 357- Fix tests and import on Python 3.12, where `typing.TypeVar` can no longer be 358 subclassed. Patch by Jelle Zijlstra. 359- Add `typing_extensions.TypeAliasType`, a backport of `typing.TypeAliasType` 360 from PEP 695. Patch by Jelle Zijlstra. 361- Backport changes to the repr of `typing.Unpack` that were made in order to 362 implement [PEP 692](https://peps.python.org/pep-0692/) (backport of 363 https://github.com/python/cpython/pull/104048). Patch by Alex Waygood. 364 365# Release 4.5.0 (February 14, 2023) 366 367- Runtime support for PEP 702, adding `typing_extensions.deprecated`. Patch 368 by Jelle Zijlstra. 369- Add better default value for TypeVar `default` parameter, PEP 696. Enables 370 runtime check if `None` was passed as default. Patch by Marc Mueller (@cdce8p). 371- The `@typing_extensions.override` decorator now sets the `.__override__` 372 attribute. Patch by Steven Troxler. 373- Fix `get_type_hints()` on cross-module inherited `TypedDict` in 3.9 and 3.10. 374 Patch by Carl Meyer. 375- Add `frozen_default` parameter on `dataclass_transform`. Patch by Erik De Bonte. 376 377# Release 4.4.0 (October 6, 2022) 378 379- Add `typing_extensions.Any` a backport of python 3.11's Any class which is 380 subclassable at runtime. (backport from python/cpython#31841, by Shantanu 381 and Jelle Zijlstra). Patch by James Hilton-Balfe (@Gobot1234). 382- Add initial support for TypeVarLike `default` parameter, PEP 696. 383 Patch by Marc Mueller (@cdce8p). 384- Runtime support for PEP 698, adding `typing_extensions.override`. Patch by 385 Jelle Zijlstra. 386- Add the `infer_variance` parameter to `TypeVar`, as specified in PEP 695. 387 Patch by Jelle Zijlstra. 388 389# Release 4.3.0 (July 1, 2022) 390 391- Add `typing_extensions.NamedTuple`, allowing for generic `NamedTuple`s on 392 Python <3.11 (backport from python/cpython#92027, by Serhiy Storchaka). Patch 393 by Alex Waygood (@AlexWaygood). 394- Adjust `typing_extensions.TypedDict` to allow for generic `TypedDict`s on 395 Python <3.11 (backport from python/cpython#27663, by Samodya Abey). Patch by 396 Alex Waygood (@AlexWaygood). 397 398# Release 4.2.0 (April 17, 2022) 399 400- Re-export `typing.Unpack` and `typing.TypeVarTuple` on Python 3.11. 401- Add `ParamSpecArgs` and `ParamSpecKwargs` to `__all__`. 402- Improve "accepts only single type" error messages. 403- Improve the distributed package. Patch by Marc Mueller (@cdce8p). 404- Update `typing_extensions.dataclass_transform` to rename the 405 `field_descriptors` parameter to `field_specifiers` and accept 406 arbitrary keyword arguments. 407- Add `typing_extensions.get_overloads` and 408 `typing_extensions.clear_overloads`, and add registry support to 409 `typing_extensions.overload`. Backport from python/cpython#89263. 410- Add `typing_extensions.assert_type`. Backport from bpo-46480. 411- Drop support for Python 3.6. Original patch by Adam Turner (@AA-Turner). 412 413# Release 4.1.1 (February 13, 2022) 414 415- Fix importing `typing_extensions` on Python 3.7.0 and 3.7.1. Original 416 patch by Nikita Sobolev (@sobolevn). 417 418# Release 4.1.0 (February 12, 2022) 419 420- Runtime support for PEP 646, adding `typing_extensions.TypeVarTuple` 421 and `typing_extensions.Unpack`. 422- Add interaction of `Required` and `NotRequired` with `__required_keys__`, 423 `__optional_keys__` and `get_type_hints()`. Patch by David Cabot (@d-k-bo). 424- Runtime support for PEP 675 and `typing_extensions.LiteralString`. 425- Add `Never` and `assert_never`. Backport from bpo-46475. 426- `ParamSpec` args and kwargs are now equal to themselves. Backport from 427 bpo-46676. Patch by Gregory Beauregard (@GBeauregard). 428- Add `reveal_type`. Backport from bpo-46414. 429- Runtime support for PEP 681 and `typing_extensions.dataclass_transform`. 430- `Annotated` can now wrap `ClassVar` and `Final`. Backport from 431 bpo-46491. Patch by Gregory Beauregard (@GBeauregard). 432- Add missed `Required` and `NotRequired` to `__all__`. Patch by 433 Yuri Karabas (@uriyyo). 434- The `@final` decorator now sets the `__final__` attribute on the 435 decorated object to allow runtime introspection. Backport from 436 bpo-46342. 437- Add `is_typeddict`. Patch by Chris Moradi (@chrismoradi) and James 438 Hilton-Balfe (@Gobot1234). 439 440# Release 4.0.1 (November 30, 2021) 441 442- Fix broken sdist in release 4.0.0. Patch by Adam Turner (@AA-Turner). 443- Fix equality comparison for `Required` and `NotRequired`. Patch by 444 Jelle Zijlstra (@jellezijlstra). 445- Fix usage of `Self` as a type argument. Patch by Chris Wesseling 446 (@CharString) and James Hilton-Balfe (@Gobot1234). 447 448# Release 4.0.0 (November 14, 2021) 449 450- Starting with version 4.0.0, typing_extensions uses Semantic Versioning. 451 See the README for more information. 452- Dropped support for Python versions 3.5 and older, including Python 2.7. 453- Simplified backports for Python 3.6.0 and newer. Patch by Adam Turner (@AA-Turner). 454 455## Added in version 4.0.0 456 457- Runtime support for PEP 673 and `typing_extensions.Self`. Patch by 458 James Hilton-Balfe (@Gobot1234). 459- Runtime support for PEP 655 and `typing_extensions.Required` and `NotRequired`. 460 Patch by David Foster (@davidfstr). 461 462## Removed in version 4.0.0 463 464The following non-exported but non-private names have been removed as they are 465unneeded for supporting Python 3.6 and newer. 466 467- TypingMeta 468- OLD_GENERICS 469- SUBS_TREE 470- HAVE_ANNOTATED 471- HAVE_PROTOCOLS 472- V_co 473- VT_co 474 475# Previous releases 476 477Prior to release 4.0.0 we did not provide a changelog. Please check 478the Git history for details. 479