Projects
openEuler:24.03
python-typing-extensions
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 3
View file
_service:tar_scm:python-typing-extensions.spec
Changed
@@ -1,12 +1,11 @@ %global _empty_manifest_terminate_build 0 Name: python-typing-extensions -Version: 4.5.0 +Version: 4.10.0 Release: 2 Summary: Backported and Experimental Type Hints for Python 3.5+ License: PSF-2.0 URL: https://github.com/python/typing/blob/master/typing_extensions/README.rst -Source0: https://files.pythonhosted.org/packages/d3/20/06270dac7316220643c32ae61694e451c98f8caf4c8eab3aa80a2bedf0df/typing_extensions-4.5.0.tar.gz -patch0: Make-tests-pass-on-conda-builds.patch +Source0: https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz BuildArch: noarch %description Typing Extensions - Backported and Experimental Type Hints for Python. @@ -84,6 +83,17 @@ %{_docdir}/* %changelog +* Mon Mar 4 2024 Han Guangyu <hanguangyu@uniontech.com> - 4.10.0-2 +- Remove unused `Make-tests-pass-on-conda-builds.patch` to fix ci_failed. + +* Mon Mar 4 2024 Dongxing Wang <dongxing.wang_a@thundersoft.com> - 4.10.0-1 +- Update package with version 4.10.0 + Add support for PEP 728, PEP 742 + Drop runtime error when a read-only TypedDict item overrides a mutable one. + Speedup issubclass() checks against simple runtime-checkable protocols by around 6%. + Add support for PEP 705, adding typing_extensions.ReadOnly. + Drop support for Python 3.7 (including PyPy-3.7). + * Fri Feb 2 2024 liyanan <liyanan61@h-partners.com> - 4.5.0-2 - Make tests pass on conda builds
View file
_service:tar_scm:Make-tests-pass-on-conda-builds.patch
Deleted
@@ -1,255 +0,0 @@ -From 41a828801a60e8e20bd2d9b172b2e3fbd9604d87 Mon Sep 17 00:00:00 2001 -From: Alex Waygood <Alex.Waygood@Gmail.com> -Date: Sun, 23 Apr 2023 15:57:36 -0600 -Subject: PATCH Make tests pass on conda builds (#151) - ---- - src/test_typing_extensions.py | 178 +++++++++++++++++++++++++++++----- - 1 file changed, 153 insertions(+), 25 deletions(-) - -diff --git a/src/test_typing_extensions.py b/src/test_typing_extensions.py ---- a/src/test_typing_extensions.py 2023-02-15 08:13:43.620018500 +0800 -+++ b/src/test_typing_extensions.py 2024-02-02 14:31:02.474690860 +0800 -@@ -7,19 +7,23 @@ - import collections.abc - import copy - from functools import lru_cache -+import importlib - import inspect - import pickle - import subprocess -+import tempfile - import types -+from pathlib import Path - from unittest import TestCase, main, skipUnless, skipIf - from unittest.mock import patch --from test import ann_module, ann_module2, ann_module3 - import typing - from typing import TypeVar, Optional, Union, AnyStr - from typing import T, KT, VT # Not in __all__. - from typing import Tuple, List, Dict, Iterable, Iterator, Callable - from typing import Generic - from typing import no_type_check -+import warnings -+ - import typing_extensions - from typing_extensions import NoReturn, Any, ClassVar, Final, IntVar, Literal, Type, NewType, TypedDict, Self - from typing_extensions import TypeAlias, ParamSpec, Concatenate, ParamSpecArgs, ParamSpecKwargs, TypeGuard -@@ -31,7 +35,6 @@ - from typing_extensions import NamedTuple - from typing_extensions import override, deprecated - from _typed_dict_test_helper import Foo, FooGeneric --import warnings - - # Flags used to mark tests that only apply after a specific - # version of the typing module. -@@ -46,6 +49,112 @@ - # versions, but not all - HAS_FORWARD_MODULE = "module" in inspect.signature(typing._type_check).parameters - -+ANN_MODULE_SOURCE = '''\ -+from typing import Optional -+from functools import wraps -+ -+__annotations__1 = 2 -+ -+class C: -+ -+ x = 5; y: Optional'C' = None -+ -+from typing import Tuple -+x: int = 5; y: str = x; f: Tupleint, int -+ -+class M(type): -+ -+ __annotations__'123' = 123 -+ o: type = object -+ -+(pars): bool = True -+ -+class D(C): -+ j: str = 'hi'; k: str= 'bye' -+ -+from types import new_class -+h_class = new_class('H', (C,)) -+j_class = new_class('J') -+ -+class F(): -+ z: int = 5 -+ def __init__(self, x): -+ pass -+ -+class Y(F): -+ def __init__(self): -+ super(F, self).__init__(123) -+ -+class Meta(type): -+ def __new__(meta, name, bases, namespace): -+ return super().__new__(meta, name, bases, namespace) -+ -+class S(metaclass = Meta): -+ x: str = 'something' -+ y: str = 'something else' -+ -+def foo(x: int = 10): -+ def bar(y: Liststr): -+ x: str = 'yes' -+ bar() -+ -+def dec(func): -+ @wraps(func) -+ def wrapper(*args, **kwargs): -+ return func(*args, **kwargs) -+ return wrapper -+''' -+ -+ANN_MODULE_2_SOURCE = '''\ -+from typing import no_type_check, ClassVar -+ -+i: int = 1 -+j: int -+x: float = i/10 -+ -+def f(): -+ class C: ... -+ return C() -+ -+f().new_attr: object = object() -+ -+class C: -+ def __init__(self, x: int) -> None: -+ self.x = x -+ -+c = C(5) -+c.new_attr: int = 10 -+ -+__annotations__ = {} -+ -+ -+@no_type_check -+class NTC: -+ def meth(self, param: complex) -> None: -+ ... -+ -+class CV: -+ var: ClassVar'CV' -+ -+CV.var = CV() -+''' -+ -+ANN_MODULE_3_SOURCE = '''\ -+def f_bad_ann(): -+ __annotations__1 = 2 -+ -+class C_OK: -+ def __init__(self, x: int) -> None: -+ self.x: no_such_name = x # This one is OK as proposed by Guido -+ -+class D_bad_ann: -+ def __init__(self, x: int) -> None: -+ sfel.y: int = 0 -+ -+def g_bad_ann(): -+ no_such_name.attr: int = 0 -+''' -+ - - class BaseTestCase(TestCase): - def assertIsSubclass(self, cls, class_or_tuple, msg=None): -@@ -375,8 +484,13 @@ - else: - mod_name = 'typing_extensions' - self.assertEqual(repr(Any), f"{mod_name}.Any") -- if sys.version_info < (3, 11): # skip for now on 3.11+ see python/cpython#95987 -- self.assertEqual(repr(self.SubclassesAny), "<class 'test_typing_extensions.AnyTests.SubclassesAny'>") -+ -+ @skipIf(sys.version_info:3 == (3, 11, 0), "A bug was fixed in 3.11.1") -+ def test_repr_on_Any_subclass(self): -+ self.assertEqual( -+ repr(self.SubclassesAny), -+ f"<class '{self.SubclassesAny.__module__}.AnyTests.SubclassesAny'>" -+ ) - - def test_instantiation(self): - with self.assertRaises(TypeError): -@@ -898,28 +1012,42 @@ - - - class GetTypeHintTests(BaseTestCase): -+ @classmethod -+ def setUpClass(cls): -+ with tempfile.TemporaryDirectory() as tempdir: -+ sys.path.append(tempdir) -+ Path(tempdir, "ann_module.py").write_text(ANN_MODULE_SOURCE) -+ Path(tempdir, "ann_module2.py").write_text(ANN_MODULE_2_SOURCE) -+ Path(tempdir, "ann_module3.py").write_text(ANN_MODULE_3_SOURCE) -+ cls.ann_module = importlib.import_module("ann_module") -+ cls.ann_module2 = importlib.import_module("ann_module2") -+ cls.ann_module3 = importlib.import_module("ann_module3") -+ sys.path.pop() -+ -+ @classmethod -+ def tearDownClass(cls): -+ for modname in "ann_module", "ann_module2", "ann_module3": -+ delattr(cls, modname) -+ del sys.modulesmodname -+ - def test_get_type_hints_modules(self): - ann_module_type_hints = {1: 2, 'f': Tupleint, int, 'x': int, 'y': str} -- if (TYPING_3_11_0
View file
_service:tar_scm:typing_extensions-4.5.0.tar.gz/CHANGELOG.md -> _service:tar_scm:typing_extensions-4.10.0.tar.gz/CHANGELOG.md
Changed
@@ -1,3 +1,261 @@ +# Release 4.10.0 (February 24, 2024) + +This feature release adds support for PEP 728 (TypedDict with extra +items) and PEP 742 (``TypeIs``). + +There are no changes since 4.10.0rc1. + +# Release 4.10.0rc1 (February 17, 2024) + +- Add support for PEP 728, supporting the `closed` keyword argument and the + special `__extra_items__` key for TypedDict. Patch by Zixuan James Li. +- Add support for PEP 742, adding `typing_extensions.TypeIs`. Patch + by Jelle Zijlstra. +- Drop runtime error when a read-only `TypedDict` item overrides a mutable + one. Type checkers should still flag this as an error. Patch by Jelle + Zijlstra. +- Speedup `issubclass()` checks against simple runtime-checkable protocols by + around 6% (backporting https://github.com/python/cpython/pull/112717, by Alex + Waygood). +- Fix a regression in the implementation of protocols where `typing.Protocol` + classes that were not marked as `@runtime_checkable` would be unnecessarily + introspected, potentially causing exceptions to be raised if the protocol had + problematic members. Patch by Alex Waygood, backporting + https://github.com/python/cpython/pull/113401. + +# Release 4.9.0 (December 9, 2023) + +This feature release adds `typing_extensions.ReadOnly`, as specified +by PEP 705, and makes various other improvements, especially to +`@typing_extensions.deprecated()`. + +There are no changes since 4.9.0rc1. + +# Release 4.9.0rc1 (November 29, 2023) + +- Add support for PEP 705, adding `typing_extensions.ReadOnly`. Patch + by Jelle Zijlstra. +- All parameters on `NewType.__call__` are now positional-only. This means that + the signature of `typing_extensions.NewType.__call__` now exactly matches the + signature of `typing.NewType.__call__`. Patch by Alex Waygood. +- Fix bug with using `@deprecated` on a mixin class. Inheriting from a + deprecated class now raises a `DeprecationWarning`. Patch by Jelle Zijlstra. +- `@deprecated` now gives a better error message if you pass a non-`str` + argument to the `msg` parameter. Patch by Alex Waygood. +- `@deprecated` is now implemented as a class for better introspectability. + Patch by Jelle Zijlstra. +- Exclude `__match_args__` from `Protocol` members. + Backport of https://github.com/python/cpython/pull/110683 by Nikita Sobolev. +- When creating a `typing_extensions.NamedTuple` class, ensure `__set_name__` + is called on all objects that define `__set_name__` and exist in the values + of the `NamedTuple` class's class dictionary. Patch by Alex Waygood, + backporting https://github.com/python/cpython/pull/111876. +- Improve the error message when trying to call `issubclass()` against a + `Protocol` that has non-method members. Patch by Alex Waygood (backporting + https://github.com/python/cpython/pull/112344, by Randolph Scholz). + +# Release 4.8.0 (September 17, 2023) + +No changes since 4.8.0rc1. + +# Release 4.8.0rc1 (September 7, 2023) + +- Add `typing_extensions.Doc`, as proposed by PEP 727. Patch by + Sebastián Ramírez. +- Drop support for Python 3.7 (including PyPy-3.7). Patch by Alex Waygood. +- Fix bug where `get_original_bases()` would return incorrect results when + called on a concrete subclass of a generic class. Patch by Alex Waygood + (backporting https://github.com/python/cpython/pull/107584, by James + Hilton-Balfe). +- Fix bug where `ParamSpec(default=...)` would raise a `TypeError` on Python + versions <3.11. Patch by James Hilton-Balfe + +# Release 4.7.1 (July 2, 2023) + +- Fix support for `TypedDict`, `NamedTuple` and `is_protocol` on PyPy-3.7 and + PyPy-3.8. Patch by Alex Waygood. Note that PyPy-3.7 and PyPy-3.8 are unsupported + by the PyPy project. The next feature release of typing-extensions will + drop support for PyPy-3.7 and may also drop support for PyPy-3.8. + +# Release 4.7.0 (June 28, 2023) + +- This is expected to be the last feature release supporting Python 3.7, + which reaches its end of life on June 27, 2023. Version 4.8.0 will support + only Python 3.8.0 and up. +- Fix bug where a `typing_extensions.Protocol` class that had one or more + non-callable members would raise `TypeError` when `issubclass()` + was called against it, even if it defined a custom `__subclasshook__` + method. The correct behaviour -- which has now been restored -- is not to + raise `TypeError` in these situations if a custom `__subclasshook__` method + is defined. Patch by Alex Waygood (backporting + https://github.com/python/cpython/pull/105976). + +# Release 4.7.0rc1 (June 21, 2023) + +- Add `typing_extensions.get_protocol_members` and + `typing_extensions.is_protocol` (backport of CPython PR #104878). + Patch by Jelle Zijlstra. +- `typing_extensions` now re-exports all names in the standard library's + `typing` module, except the deprecated `ByteString`. Patch by Jelle + Zijlstra. +- Due to changes in the implementation of `typing_extensions.Protocol`, + `typing.runtime_checkable` can now be used on `typing_extensions.Protocol` + (previously, users had to use `typing_extensions.runtime_checkable` if they + were using `typing_extensions.Protocol`). +- Align the implementation of `TypedDict` with the implementation in the + standard library on Python 3.9 and higher. + `typing_extensions.TypedDict` is now a function instead of a class. The + private functions `_check_fails`, `_dict_new`, and `_typeddict_new` + have been removed. `is_typeddict` now returns `False` when called with + `TypedDict` itself as the argument. Patch by Jelle Zijlstra. +- Declare support for Python 3.12. Patch by Jelle Zijlstra. +- Fix tests on Python 3.13, which removes support for creating + `TypedDict` classes through the keyword-argument syntax. Patch by + Jelle Zijlstra. +- Fix a regression introduced in v4.6.3 that meant that + ``issubclass(object, typing_extensions.Protocol)`` would erroneously raise + ``TypeError``. Patch by Alex Waygood (backporting the CPython PR + https://github.com/python/cpython/pull/105239). +- Allow `Protocol` classes to inherit from `typing_extensions.Buffer` or + `collections.abc.Buffer`. Patch by Alex Waygood (backporting + https://github.com/python/cpython/pull/104827, by Jelle Zijlstra). +- Allow classes to inherit from both `typing.Protocol` and `typing_extensions.Protocol` + simultaneously. Since v4.6.0, this caused `TypeError` to be raised due to a + metaclass conflict. Patch by Alex Waygood. +- Backport several deprecations from CPython relating to unusual ways to + create `TypedDict`s and `NamedTuple`s. CPython PRs #105609 and #105780 + by Alex Waygood; `typing_extensions` backport by Jelle Zijlstra. + - Creating a `NamedTuple` using the functional syntax with keyword arguments + (`NT = NamedTuple("NT", a=int)`) is now deprecated. + - Creating a `NamedTuple` with zero fields using the syntax `NT = NamedTuple("NT")` + or `NT = NamedTuple("NT", None)` is now deprecated. + - Creating a `TypedDict` with zero fields using the syntax `TD = TypedDict("TD")` + or `TD = TypedDict("TD", None)` is now deprecated. +- Fix bug on Python 3.7 where a protocol `X` that had a member `a` would not be + considered an implicit subclass of an unrelated protocol `Y` that only has a + member `a`. Where the members of `X` are a superset of the members of `Y`, + `X` should always be considered a subclass of `Y` iff `Y` is a + runtime-checkable protocol that only has callable members. Patch by Alex + Waygood (backporting CPython PR + https://github.com/python/cpython/pull/105835). + +# Release 4.6.3 (June 1, 2023) + +- Fix a regression introduced in v4.6.0 in the implementation of + runtime-checkable protocols. The regression meant + that doing `class Foo(X, typing_extensions.Protocol)`, where `X` was a class that + had `abc.ABCMeta` as its metaclass, would then cause subsequent + `isinstance(1, X)` calls to erroneously raise `TypeError`. Patch by + Alex Waygood (backporting the CPython PR + https://github.com/python/cpython/pull/105152). +- Sync the repository's LICENSE file with that of CPython. + `typing_extensions` is distributed under the same license as + CPython itself. +- Skip a problematic test on Python 3.12.0b1. The test fails on 3.12.0b1 due to + a bug in CPython, which will be fixed in 3.12.0b2. The + `typing_extensions` test suite now passes on 3.12.0b1. + +# Release 4.6.2 (May 25, 2023) + +- Fix use of `@deprecated` on classes with `__new__` but no `__init__`. + Patch by Jelle Zijlstra. +- Fix regression in version 4.6.1 where comparing a generic class against a + runtime-checkable protocol using `isinstance()` would cause `AttributeError` + to be raised if using Python 3.7. + +# Release 4.6.1 (May 23, 2023) + +- 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. + +# Release 4.6.0 (May 22, 2023) + +- `typing_extensions` is now documented at + https://typing-extensions.readthedocs.io/en/latest/. Patch by Jelle Zijlstra. +- 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`: + https://github.com/python/cpython/pull/23294 and + https://github.com/python/cpython/pull/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 + https://github.com/python/cpython/pull/29334. (The CPython bugfix was + backported to CPython 3.10.1 and 3.9.8, but no earlier.) +- Backport CPython PR 26067(https://github.com/python/cpython/pull/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
View file
_service:tar_scm:typing_extensions-4.5.0.tar.gz/LICENSE -> _service:tar_scm:typing_extensions-4.10.0.tar.gz/LICENSE
Changed
@@ -2,12 +2,12 @@ ========================== Python was created in the early 1990s by Guido van Rossum at Stichting -Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands +Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands as a successor of a language called ABC. Guido remains Python's principal author, although it includes many contributions from others. In 1995, Guido continued his work on Python at the Corporation for -National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) +National Research Initiatives (CNRI, see https://www.cnri.reston.va.us) in Reston, Virginia where he released several versions of the software. @@ -19,7 +19,7 @@ created specifically to own Python-related Intellectual Property. Zope Corporation was a sponsoring member of the PSF. -All Python releases are Open Source (see http://www.opensource.org for +All Python releases are Open Source (see https://opensource.org for the Open Source Definition). Historically, most, but not all, Python releases have also been GPL-compatible; the table below summarizes the various releases. @@ -59,6 +59,17 @@ B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON =============================================================== +Python software and documentation are licensed under the +Python Software Foundation License Version 2. + +Starting with Python 3.8.6, examples, recipes, and other code in +the documentation are dual licensed under the PSF License Version 2 +and the Zero-Clause BSD license. + +Some software incorporated into Python is under different licenses. +The licenses are listed with code falling under that license. + + PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 -------------------------------------------- @@ -73,7 +84,7 @@ distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Python Software Foundation; +2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee. @@ -252,3 +263,17 @@ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION +---------------------------------------------------------------------- + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE.
View file
_service:tar_scm:typing_extensions-4.5.0.tar.gz/PKG-INFO -> _service:tar_scm:typing_extensions-4.10.0.tar.gz/PKG-INFO
Changed
@@ -1,10 +1,10 @@ Metadata-Version: 2.1 Name: typing_extensions -Version: 4.5.0 -Summary: Backported and Experimental Type Hints for Python 3.7+ +Version: 4.10.0 +Summary: Backported and Experimental Type Hints for Python 3.8+ Keywords: annotations,backport,checker,checking,function,hinting,hints,type,typechecking,typehinting,typehints,typing Author-email: "Guido van Rossum, Jukka Lehtosalo, Łukasz Langa, Michael Lee" <levkivskyi@gmail.com> -Requires-Python: >=3.7 +Requires-Python: >=3.8 Description-Content-Type: text/markdown Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console @@ -13,15 +13,15 @@ Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 Classifier: Topic :: Software Development Project-URL: Bug Tracker, https://github.com/python/typing_extensions/issues Project-URL: Changes, https://github.com/python/typing_extensions/blob/main/CHANGELOG.md -Project-URL: Documentation, https://typing.readthedocs.io/ +Project-URL: Documentation, https://typing-extensions.readthedocs.io/ Project-URL: Home, https://github.com/python/typing_extensions Project-URL: Q & A, https://github.com/python/typing/discussions Project-URL: Repository, https://github.com/python/typing_extensions @@ -30,6 +30,9 @@ !Chat at https://gitter.im/python/typing(https://badges.gitter.im/python/typing.svg)(https://gitter.im/python/typing) +Documentation(https://typing-extensions.readthedocs.io/en/latest/#) – +PyPI(https://pypi.org/project/typing-extensions/) + ## Overview The `typing_extensions` module serves two related purposes: @@ -40,151 +43,24 @@ - Enable experimentation with new type system PEPs before they are accepted and added to the `typing` module. -New features may be added to `typing_extensions` as soon as they are specified -in a PEP that has been added to the python/peps(https://github.com/python/peps) -repository. If the PEP is accepted, the feature will then be added to `typing` -for the next CPython release. No typing PEP has been rejected so far, so we -haven't yet figured out how to deal with that possibility. +`typing_extensions` is treated specially by static type checkers such as +mypy and pyright. Objects defined in `typing_extensions` are treated the same +way as equivalent forms in `typing`. -Starting with version 4.0.0, `typing_extensions` uses +`typing_extensions` uses Semantic Versioning(https://semver.org/). The -major version is incremented for all backwards-incompatible changes. +major version will be incremented only for backwards-incompatible changes. Therefore, it's safe to depend on `typing_extensions` like this: `typing_extensions >=x.y, <(x+1)`, where `x.y` is the first version that includes all features you need. -`typing_extensions` supports Python versions 3.7 and higher. In the future, -support for older Python versions will be dropped some time after that version -reaches end of life. - ## Included items -This module currently contains the following: - -- Experimental features - - - `override` (see PEP 698(https://peps.python.org/pep-0698/)) - - The `default=` argument to `TypeVar`, `ParamSpec`, and `TypeVarTuple` (see PEP 696(https://peps.python.org/pep-0696/)) - - The `infer_variance=` argument to `TypeVar` (see PEP 695(https://peps.python.org/pep-0695/)) - - The `@deprecated` decorator (see PEP 702(https://peps.python.org/pep-0702/)) - -- In `typing` since Python 3.11 - - - `assert_never` - - `assert_type` - - `clear_overloads` - - `@dataclass_transform()` (see PEP 681(https://peps.python.org/pep-0681/)) - - `get_overloads` - - `LiteralString` (see PEP 675(https://peps.python.org/pep-0675/)) - - `Never` - - `NotRequired` (see PEP 655(https://peps.python.org/pep-0655/)) - - `reveal_type` - - `Required` (see PEP 655(https://peps.python.org/pep-0655/)) - - `Self` (see PEP 673(https://peps.python.org/pep-0673/)) - - `TypeVarTuple` (see PEP 646(https://peps.python.org/pep-0646/); the `typing_extensions` version supports the `default=` argument from PEP 696(https://peps.python.org/pep-0696/)) - - `Unpack` (see PEP 646(https://peps.python.org/pep-0646/)) - -- In `typing` since Python 3.10 - - - `Concatenate` (see PEP 612(https://peps.python.org/pep-0612/)) - - `ParamSpec` (see PEP 612(https://peps.python.org/pep-0612/); the `typing_extensions` version supports the `default=` argument from PEP 696(https://peps.python.org/pep-0696/)) - - `ParamSpecArgs` (see PEP 612(https://peps.python.org/pep-0612/)) - - `ParamSpecKwargs` (see PEP 612(https://peps.python.org/pep-0612/)) - - `TypeAlias` (see PEP 613(https://peps.python.org/pep-0613/)) - - `TypeGuard` (see PEP 647(https://peps.python.org/pep-0647/)) - - `is_typeddict` - -- In `typing` since Python 3.9 - - - `Annotated` (see PEP 593(https://peps.python.org/pep-0593/)) - -- In `typing` since Python 3.8 - - - `final` (see PEP 591(https://peps.python.org/pep-0591/)) - - `Final` (see PEP 591(https://peps.python.org/pep-0591/)) - - `Literal` (see PEP 586(https://peps.python.org/pep-0586/)) - - `Protocol` (see PEP 544(https://peps.python.org/pep-0544/)) - - `runtime_checkable` (see PEP 544(https://peps.python.org/pep-0544/)) - - `TypedDict` (see PEP 589(https://peps.python.org/pep-0589/)) - - `get_origin` (`typing_extensions` provides this function only in Python 3.7+) - - `get_args` (`typing_extensions` provides this function only in Python 3.7+) - -- In `typing` since Python 3.7 - - - `OrderedDict` - -- In `typing` since Python 3.5 or 3.6 (see the typing documentation(https://docs.python.org/3.10/library/typing.html) for details) - - - `AsyncContextManager` - - `AsyncGenerator` - - `AsyncIterable` - - `AsyncIterator` - - `Awaitable` - - `ChainMap` - - `ClassVar` (see PEP 526(https://peps.python.org/pep-0526/)) - - `ContextManager` - - `Coroutine` - - `Counter` - - `DefaultDict` - - `Deque` - - `NewType` - - `NoReturn` - - `overload` - - `Text` - - `Type` - - `TYPE_CHECKING` - - `get_type_hints` - -- The following have always been present in `typing`, but the `typing_extensions` versions provide - additional features: - - - `Any` (supports inheritance since Python 3.11) - - `NamedTuple` (supports multiple inheritance with `Generic` since Python 3.11) - - `TypeVar` (see PEPs 695(https://peps.python.org/pep-0695/) and 696(https://peps.python.org/pep-0696/)) - -# Other Notes and Limitations - -Certain objects were changed after they were added to `typing`, and -`typing_extensions` provides a backport even on newer Python versions: - -- `TypedDict` does not store runtime information - about which (if any) keys are non-required in Python 3.8, and does not - honor the `total` keyword with old-style `TypedDict()` in Python - 3.9.0 and 3.9.1. `TypedDict` also does not support multiple inheritance - with `typing.Generic` on Python <3.11. -- `get_origin` and `get_args` lack support for `Annotated` in - Python 3.8 and lack support for `ParamSpecArgs` and `ParamSpecKwargs` - in 3.9. -- `@final` was changed in Python 3.11 to set the `.__final__` attribute. -- `@overload` was changed in Python 3.11 to make function overloads - introspectable at runtime. In order to access overloads with - `typing_extensions.get_overloads()`, you must use - `@typing_extensions.overload`. -- `NamedTuple` was changed in Python 3.11 to allow for multiple inheritance - with `typing.Generic`. -- Since Python 3.11, it has been possible to inherit from `Any` at - runtime. `typing_extensions.Any` also provides this capability. -- `TypeVar` gains two additional parameters, `default=` and `infer_variance=`, - in the draft PEPs 695(https://peps.python.org/pep-0695/) and 696(https://peps.python.org/pep-0696/), which are being considered for inclusion - in Python 3.12. - -There are a few types whose interface was modified between different -versions of typing. For example, `typing.Sequence` was modified to -subclass `typing.Reversible` as of Python 3.5.3. - -These changes are _not_ backported to prevent subtle compatibility -issues when mixing the differing implementations of modified classes. - -Certain types have incorrect runtime behavior due to limitations of older -versions of the typing module: - -- `ParamSpec` and `Concatenate` will not work with `get_args` and - `get_origin`. Certain PEP 612(https://peps.python.org/pep-0612/) special cases in user-defined - `Generic`s are also not available. +See the documentation(https://typing-extensions.readthedocs.io/en/latest/#) for a +complete listing of module contents. -These types are only guaranteed to work for static type checking. +## Contributing -## Running tests +See CONTRIBUTING.md(https://github.com/python/typing_extensions/blob/main/CONTRIBUTING.md)
View file
_service:tar_scm:typing_extensions-4.5.0.tar.gz/README.md -> _service:tar_scm:typing_extensions-4.10.0.tar.gz/README.md
Changed
@@ -2,6 +2,9 @@ !Chat at https://gitter.im/python/typing(https://badges.gitter.im/python/typing.svg)(https://gitter.im/python/typing) +Documentation(https://typing-extensions.readthedocs.io/en/latest/#) – +PyPI(https://pypi.org/project/typing-extensions/) + ## Overview The `typing_extensions` module serves two related purposes: @@ -12,151 +15,23 @@ - Enable experimentation with new type system PEPs before they are accepted and added to the `typing` module. -New features may be added to `typing_extensions` as soon as they are specified -in a PEP that has been added to the python/peps(https://github.com/python/peps) -repository. If the PEP is accepted, the feature will then be added to `typing` -for the next CPython release. No typing PEP has been rejected so far, so we -haven't yet figured out how to deal with that possibility. +`typing_extensions` is treated specially by static type checkers such as +mypy and pyright. Objects defined in `typing_extensions` are treated the same +way as equivalent forms in `typing`. -Starting with version 4.0.0, `typing_extensions` uses +`typing_extensions` uses Semantic Versioning(https://semver.org/). The -major version is incremented for all backwards-incompatible changes. +major version will be incremented only for backwards-incompatible changes. Therefore, it's safe to depend on `typing_extensions` like this: `typing_extensions >=x.y, <(x+1)`, where `x.y` is the first version that includes all features you need. -`typing_extensions` supports Python versions 3.7 and higher. In the future, -support for older Python versions will be dropped some time after that version -reaches end of life. - ## Included items -This module currently contains the following: - -- Experimental features - - - `override` (see PEP 698(https://peps.python.org/pep-0698/)) - - The `default=` argument to `TypeVar`, `ParamSpec`, and `TypeVarTuple` (see PEP 696(https://peps.python.org/pep-0696/)) - - The `infer_variance=` argument to `TypeVar` (see PEP 695(https://peps.python.org/pep-0695/)) - - The `@deprecated` decorator (see PEP 702(https://peps.python.org/pep-0702/)) - -- In `typing` since Python 3.11 - - - `assert_never` - - `assert_type` - - `clear_overloads` - - `@dataclass_transform()` (see PEP 681(https://peps.python.org/pep-0681/)) - - `get_overloads` - - `LiteralString` (see PEP 675(https://peps.python.org/pep-0675/)) - - `Never` - - `NotRequired` (see PEP 655(https://peps.python.org/pep-0655/)) - - `reveal_type` - - `Required` (see PEP 655(https://peps.python.org/pep-0655/)) - - `Self` (see PEP 673(https://peps.python.org/pep-0673/)) - - `TypeVarTuple` (see PEP 646(https://peps.python.org/pep-0646/); the `typing_extensions` version supports the `default=` argument from PEP 696(https://peps.python.org/pep-0696/)) - - `Unpack` (see PEP 646(https://peps.python.org/pep-0646/)) - -- In `typing` since Python 3.10 - - - `Concatenate` (see PEP 612(https://peps.python.org/pep-0612/)) - - `ParamSpec` (see PEP 612(https://peps.python.org/pep-0612/); the `typing_extensions` version supports the `default=` argument from PEP 696(https://peps.python.org/pep-0696/)) - - `ParamSpecArgs` (see PEP 612(https://peps.python.org/pep-0612/)) - - `ParamSpecKwargs` (see PEP 612(https://peps.python.org/pep-0612/)) - - `TypeAlias` (see PEP 613(https://peps.python.org/pep-0613/)) - - `TypeGuard` (see PEP 647(https://peps.python.org/pep-0647/)) - - `is_typeddict` - -- In `typing` since Python 3.9 - - - `Annotated` (see PEP 593(https://peps.python.org/pep-0593/)) - -- In `typing` since Python 3.8 - - - `final` (see PEP 591(https://peps.python.org/pep-0591/)) - - `Final` (see PEP 591(https://peps.python.org/pep-0591/)) - - `Literal` (see PEP 586(https://peps.python.org/pep-0586/)) - - `Protocol` (see PEP 544(https://peps.python.org/pep-0544/)) - - `runtime_checkable` (see PEP 544(https://peps.python.org/pep-0544/)) - - `TypedDict` (see PEP 589(https://peps.python.org/pep-0589/)) - - `get_origin` (`typing_extensions` provides this function only in Python 3.7+) - - `get_args` (`typing_extensions` provides this function only in Python 3.7+) - -- In `typing` since Python 3.7 - - - `OrderedDict` - -- In `typing` since Python 3.5 or 3.6 (see the typing documentation(https://docs.python.org/3.10/library/typing.html) for details) - - - `AsyncContextManager` - - `AsyncGenerator` - - `AsyncIterable` - - `AsyncIterator` - - `Awaitable` - - `ChainMap` - - `ClassVar` (see PEP 526(https://peps.python.org/pep-0526/)) - - `ContextManager` - - `Coroutine` - - `Counter` - - `DefaultDict` - - `Deque` - - `NewType` - - `NoReturn` - - `overload` - - `Text` - - `Type` - - `TYPE_CHECKING` - - `get_type_hints` - -- The following have always been present in `typing`, but the `typing_extensions` versions provide - additional features: - - - `Any` (supports inheritance since Python 3.11) - - `NamedTuple` (supports multiple inheritance with `Generic` since Python 3.11) - - `TypeVar` (see PEPs 695(https://peps.python.org/pep-0695/) and 696(https://peps.python.org/pep-0696/)) - -# Other Notes and Limitations - -Certain objects were changed after they were added to `typing`, and -`typing_extensions` provides a backport even on newer Python versions: - -- `TypedDict` does not store runtime information - about which (if any) keys are non-required in Python 3.8, and does not - honor the `total` keyword with old-style `TypedDict()` in Python - 3.9.0 and 3.9.1. `TypedDict` also does not support multiple inheritance - with `typing.Generic` on Python <3.11. -- `get_origin` and `get_args` lack support for `Annotated` in - Python 3.8 and lack support for `ParamSpecArgs` and `ParamSpecKwargs` - in 3.9. -- `@final` was changed in Python 3.11 to set the `.__final__` attribute. -- `@overload` was changed in Python 3.11 to make function overloads - introspectable at runtime. In order to access overloads with - `typing_extensions.get_overloads()`, you must use - `@typing_extensions.overload`. -- `NamedTuple` was changed in Python 3.11 to allow for multiple inheritance - with `typing.Generic`. -- Since Python 3.11, it has been possible to inherit from `Any` at - runtime. `typing_extensions.Any` also provides this capability. -- `TypeVar` gains two additional parameters, `default=` and `infer_variance=`, - in the draft PEPs 695(https://peps.python.org/pep-0695/) and 696(https://peps.python.org/pep-0696/), which are being considered for inclusion - in Python 3.12. - -There are a few types whose interface was modified between different -versions of typing. For example, `typing.Sequence` was modified to -subclass `typing.Reversible` as of Python 3.5.3. - -These changes are _not_ backported to prevent subtle compatibility -issues when mixing the differing implementations of modified classes. - -Certain types have incorrect runtime behavior due to limitations of older -versions of the typing module: - -- `ParamSpec` and `Concatenate` will not work with `get_args` and - `get_origin`. Certain PEP 612(https://peps.python.org/pep-0612/) special cases in user-defined - `Generic`s are also not available. - -These types are only guaranteed to work for static type checking. +See the documentation(https://typing-extensions.readthedocs.io/en/latest/#) for a +complete listing of module contents. -## Running tests +## Contributing -To run tests, navigate into the appropriate source directory and run -`test_typing_extensions.py`. \ No newline at end of file +See CONTRIBUTING.md(https://github.com/python/typing_extensions/blob/main/CONTRIBUTING.md) +for how to contribute to `typing_extensions`.
View file
_service:tar_scm:typing_extensions-4.5.0.tar.gz/pyproject.toml -> _service:tar_scm:typing_extensions-4.10.0.tar.gz/pyproject.toml
Changed
@@ -6,10 +6,10 @@ # Project metadata project name = "typing_extensions" -version = "4.5.0" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.10.0" +description = "Backported and Experimental Type Hints for Python 3.8+" readme = "README.md" -requires-python = ">=3.7" +requires-python = ">=3.8" license = { file = "LICENSE" } keywords = "annotations", @@ -34,11 +34,11 @@ "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Topic :: Software Development", @@ -46,7 +46,7 @@ Home = "https://github.com/python/typing_extensions" Repository = "https://github.com/python/typing_extensions" Changes = "https://github.com/python/typing_extensions/blob/main/CHANGELOG.md" -Documentation = "https://typing.readthedocs.io/" +Documentation = "https://typing-extensions.readthedocs.io/" "Bug Tracker" = "https://github.com/python/typing_extensions/issues" "Q & A" = "https://github.com/python/typing/discussions" @@ -57,5 +57,5 @@ email = "levkivskyi@gmail.com" tool.flit.sdist -include = "CHANGELOG.md", "README.md", "*/*test*.py" +include = "CHANGELOG.md", "README.md", "tox.ini", "*/*test*.py" exclude =
View file
_service:tar_scm:typing_extensions-4.5.0.tar.gz/src/_typed_dict_test_helper.py -> _service:tar_scm:typing_extensions-4.10.0.tar.gz/src/_typed_dict_test_helper.py
Changed
@@ -1,7 +1,7 @@ from __future__ import annotations from typing import Generic, Optional, T -from typing_extensions import TypedDict +from typing_extensions import TypedDict, Annotated, Required # this class must not be imported into test_typing_extensions.py at top level, otherwise @@ -16,3 +16,7 @@ class FooGeneric(TypedDict, GenericT): a: OptionalT + + +class VeryAnnotated(TypedDict, total=False): + a: AnnotatedAnnotatedAnnotatedRequiredint, "a", "b", "c"
View file
_service:tar_scm:typing_extensions-4.5.0.tar.gz/src/test_typing_extensions.py -> _service:tar_scm:typing_extensions-4.10.0.tar.gz/src/test_typing_extensions.py
Changed
@@ -1,51 +1,175 @@ import sys import os import abc +import gc +import io import contextlib import collections from collections import defaultdict import collections.abc import copy from functools import lru_cache +import importlib import inspect import pickle +import re import subprocess +import tempfile +import textwrap import types +from pathlib import Path from unittest import TestCase, main, skipUnless, skipIf from unittest.mock import patch -from test import ann_module, ann_module2, ann_module3 import typing -from typing import TypeVar, Optional, Union, AnyStr +from typing import Optional, Union, AnyStr from typing import T, KT, VT # Not in __all__. -from typing import Tuple, List, Dict, Iterable, Iterator, Callable +from typing import Tuple, List, Set, Dict, Iterable, Iterator, Callable from typing import Generic from typing import no_type_check +import warnings + import typing_extensions from typing_extensions import NoReturn, Any, ClassVar, Final, IntVar, Literal, Type, NewType, TypedDict, Self from typing_extensions import TypeAlias, ParamSpec, Concatenate, ParamSpecArgs, ParamSpecKwargs, TypeGuard -from typing_extensions import Awaitable, AsyncIterator, AsyncContextManager, Required, NotRequired +from typing_extensions import Awaitable, AsyncIterator, AsyncContextManager, Required, NotRequired, ReadOnly from typing_extensions import Protocol, runtime, runtime_checkable, Annotated, final, is_typeddict from typing_extensions import TypeVarTuple, Unpack, dataclass_transform, reveal_type, Never, assert_never, LiteralString -from typing_extensions import assert_type, get_type_hints, get_origin, get_args +from typing_extensions import assert_type, get_type_hints, get_origin, get_args, get_original_bases from typing_extensions import clear_overloads, get_overloads, overload -from typing_extensions import NamedTuple -from typing_extensions import override, deprecated -from _typed_dict_test_helper import Foo, FooGeneric -import warnings +from typing_extensions import NamedTuple, TypeIs +from typing_extensions import override, deprecated, Buffer, TypeAliasType, TypeVar, get_protocol_members, is_protocol +from typing_extensions import Doc +from _typed_dict_test_helper import Foo, FooGeneric, VeryAnnotated # Flags used to mark tests that only apply after a specific # version of the typing module. -TYPING_3_8_0 = sys.version_info:3 >= (3, 8, 0) TYPING_3_9_0 = sys.version_info:3 >= (3, 9, 0) TYPING_3_10_0 = sys.version_info:3 >= (3, 10, 0) # 3.11 makes runtime type checks (_type_check) more lenient. TYPING_3_11_0 = sys.version_info:3 >= (3, 11, 0) +# 3.12 changes the representation of Unpack (PEP 692) +TYPING_3_12_0 = sys.version_info:3 >= (3, 12, 0) + +# 3.13 drops support for the keyword argument syntax of TypedDict +TYPING_3_13_0 = sys.version_info:3 >= (3, 13, 0) + # https://github.com/python/cpython/pull/27017 was backported into some 3.9 and 3.10 # versions, but not all HAS_FORWARD_MODULE = "module" in inspect.signature(typing._type_check).parameters +skip_if_early_py313_alpha = skipIf( + sys.version_info:4 == (3, 13, 0, 'alpha') and sys.version_info.serial < 3, + "Bugfixes will be released in 3.13.0a3" +) + +ANN_MODULE_SOURCE = '''\ +from typing import Optional +from functools import wraps + +__annotations__1 = 2 + +class C: + + x = 5; y: Optional'C' = None + +from typing import Tuple +x: int = 5; y: str = x; f: Tupleint, int + +class M(type): + + __annotations__'123' = 123 + o: type = object + +(pars): bool = True + +class D(C): + j: str = 'hi'; k: str= 'bye' + +from types import new_class +h_class = new_class('H', (C,)) +j_class = new_class('J') + +class F(): + z: int = 5 + def __init__(self, x): + pass + +class Y(F): + def __init__(self): + super(F, self).__init__(123) + +class Meta(type): + def __new__(meta, name, bases, namespace): + return super().__new__(meta, name, bases, namespace) + +class S(metaclass = Meta): + x: str = 'something' + y: str = 'something else' + +def foo(x: int = 10): + def bar(y: Liststr): + x: str = 'yes' + bar() + +def dec(func): + @wraps(func) + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + return wrapper +''' + +ANN_MODULE_2_SOURCE = '''\ +from typing import no_type_check, ClassVar + +i: int = 1 +j: int +x: float = i/10 + +def f(): + class C: ... + return C() + +f().new_attr: object = object() + +class C: + def __init__(self, x: int) -> None: + self.x = x + +c = C(5) +c.new_attr: int = 10 + +__annotations__ = {} + + +@no_type_check +class NTC: + def meth(self, param: complex) -> None: + ... + +class CV: + var: ClassVar'CV' + +CV.var = CV() +''' + +ANN_MODULE_3_SOURCE = '''\ +def f_bad_ann(): + __annotations__1 = 2 + +class C_OK: + def __init__(self, x: int) -> None: + self.x: no_such_name = x # This one is OK as proposed by Guido + +class D_bad_ann: + def __init__(self, x: int) -> None: + sfel.y: int = 0 + +def g_bad_ann(): + no_such_name.attr: int = 0 +''' + class BaseTestCase(TestCase): def assertIsSubclass(self, cls, class_or_tuple, msg=None): @@ -126,13 +250,7 @@ def some_str(arg: 'NoReturn') -> 'typing.NoReturn': ... expected = {'arg': NoReturn, 'return': NoReturn} - targets = some - - # On 3.7.0 and 3.7.1, https://github.com/python/cpython/pull/10772 - # wasn't applied yet and NoReturn fails _type_check. - if not ((3, 7, 0) <= sys.version_info < (3, 7, 2)): - targets.append(some_str) - for target in targets: + for target in some, some_str: with self.subTest(target=target): self.assertEqual(gth(target), expected)
View file
_service:tar_scm:typing_extensions-4.5.0.tar.gz/src/typing_extensions.py -> _service:tar_scm:typing_extensions-4.10.0.tar.gz/src/typing_extensions.py
Changed
@@ -9,7 +9,6 @@ import typing import warnings - __all__ = # Super-special typing primitives. 'Any', @@ -33,6 +32,7 @@ 'Coroutine', 'AsyncGenerator', 'AsyncContextManager', + 'Buffer', 'ChainMap', # Concrete collection types. @@ -45,7 +45,13 @@ 'TypedDict', # Structural checks, a.k.a. protocols. + 'SupportsAbs', + 'SupportsBytes', + 'SupportsComplex', + 'SupportsFloat', 'SupportsIndex', + 'SupportsInt', + 'SupportsRound', # One-off things. 'Annotated', @@ -54,12 +60,16 @@ 'clear_overloads', 'dataclass_transform', 'deprecated', + 'Doc', 'get_overloads', 'final', 'get_args', 'get_origin', + 'get_original_bases', + 'get_protocol_members', 'get_type_hints', 'IntVar', + 'is_protocol', 'is_typeddict', 'Literal', 'NewType', @@ -71,12 +81,54 @@ 'runtime_checkable', 'Text', 'TypeAlias', + 'TypeAliasType', 'TypeGuard', + 'TypeIs', 'TYPE_CHECKING', 'Never', 'NoReturn', + 'ReadOnly', 'Required', 'NotRequired', + + # Pure aliases, have always been in typing + 'AbstractSet', + 'AnyStr', + 'BinaryIO', + 'Callable', + 'Collection', + 'Container', + 'Dict', + 'ForwardRef', + 'FrozenSet', + 'Generator', + 'Generic', + 'Hashable', + 'IO', + 'ItemsView', + 'Iterable', + 'Iterator', + 'KeysView', + 'List', + 'Mapping', + 'MappingView', + 'Match', + 'MutableMapping', + 'MutableSequence', + 'MutableSet', + 'Optional', + 'Pattern', + 'Reversible', + 'Sequence', + 'Set', + 'Sized', + 'TextIO', + 'Tuple', + 'Union', + 'ValuesView', + 'cast', + 'no_type_check', + 'no_type_check_decorator', # for backward compatibility @@ -86,7 +138,13 @@ # The functions below are modified copies of typing internal helpers. # They are needed by _ProtocolMeta and they provide support for PEP 646. -_marker = object() + +class _Sentinel: + def __repr__(self): + return "<sentinel>" + + +_marker = _Sentinel() def _check_generic(cls, parameters, elen=_marker): @@ -187,36 +245,13 @@ ClassVar = typing.ClassVar -# On older versions of typing there is an internal class named "Final". -# 3.8+ -if hasattr(typing, 'Final') and sys.version_info:2 >= (3, 7): - Final = typing.Final -# 3.7 -else: - class _FinalForm(typing._SpecialForm, _root=True): - - def __repr__(self): - return 'typing_extensions.' + self._name - def __getitem__(self, parameters): - item = typing._type_check(parameters, - f'{self._name} accepts only a single type.') - return typing._GenericAlias(self, (item,)) +class _ExtensionsSpecialForm(typing._SpecialForm, _root=True): + def __repr__(self): + return 'typing_extensions.' + self._name - Final = _FinalForm('Final', - doc="""A special typing construct to indicate that a name - cannot be re-assigned or overridden in a subclass. - For example: - - MAX_SIZE: Final = 9000 - MAX_SIZE += 1 # Error reported by type checker - - class Connection: - TIMEOUT: Finalint = 10 - class FastConnector(Connection): - TIMEOUT = 1 # Error reported by type checker - There is no runtime checking of these properties.""") +Final = typing.Final if sys.version_info >= (3, 11): final = typing.final @@ -260,21 +295,67 @@ return typing.TypeVar(name) -# 3.8+: -if hasattr(typing, 'Literal'): +# A Literal bug was fixed in 3.11.0, 3.10.1 and 3.9.8 +if sys.version_info >= (3, 10, 1): Literal = typing.Literal -# 3.7: else: - class _LiteralForm(typing._SpecialForm, _root=True): + def _flatten_literal_params(parameters): + """An internal helper for Literal creation: flatten Literals among parameters""" + params = + for p in parameters: + if isinstance(p, _LiteralGenericAlias): + params.extend(p.__args__) + else: + params.append(p) + return tuple(params) - def __repr__(self): - return 'typing_extensions.' + self._name + def _value_and_type_iter(params): + for p in params: + yield p, type(p) + + class _LiteralGenericAlias(typing._GenericAlias, _root=True): + def __eq__(self, other): + if not isinstance(other, _LiteralGenericAlias): + return NotImplemented + these_args_deduped = set(_value_and_type_iter(self.__args__)) + other_args_deduped = set(_value_and_type_iter(other.__args__)) + return these_args_deduped == other_args_deduped + + def __hash__(self): + return hash(frozenset(_value_and_type_iter(self.__args__))) + + class _LiteralForm(_ExtensionsSpecialForm, _root=True): + def __init__(self, doc: str): + self._name = 'Literal'
View file
_service:tar_scm:typing_extensions-4.10.0.tar.gz/tox.ini
Added
@@ -0,0 +1,7 @@ +tox +isolated_build = True +envlist = py38, py39, py310, py311, py312, py313 + +testenv +changedir = src +commands = python -m unittest discover
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2