summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-piglet <[email protected]>2025-09-11 08:06:39 +0300
committerrobot-piglet <[email protected]>2025-09-11 08:16:10 +0300
commit3d074bf38508aeeb55ffd8d0e36c77cf8333b93a (patch)
tree9d503a148abec97b4ab7b2e6514be355a2736c66
parent922003ece4579a034cc70774503977e67ee70e95 (diff)
Intermediate changes
commit_hash:e45b03361aed37ad274db5c4f814e688c27a2598
-rw-r--r--contrib/python/typing-extensions/py3/.dist-info/METADATA8
-rw-r--r--contrib/python/typing-extensions/py3/README.md6
-rw-r--r--contrib/python/typing-extensions/py3/typing_extensions.py109
-rw-r--r--contrib/python/typing-extensions/py3/ya.make2
4 files changed, 103 insertions, 22 deletions
diff --git a/contrib/python/typing-extensions/py3/.dist-info/METADATA b/contrib/python/typing-extensions/py3/.dist-info/METADATA
index b1fe93ff44d..b09cb50e1f9 100644
--- a/contrib/python/typing-extensions/py3/.dist-info/METADATA
+++ b/contrib/python/typing-extensions/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: typing_extensions
-Version: 4.14.1
+Version: 4.15.0
Summary: Backported and Experimental Type Hints for Python 3.9+
Keywords: annotations,backport,checker,checking,function,hinting,hints,type,typechecking,typehinting,typehints,typing
Author-email: "Guido van Rossum, Jukka Lehtosalo, Ɓukasz Langa, Michael Lee" <[email protected]>
@@ -53,8 +53,12 @@ way as equivalent forms in `typing`.
[Semantic Versioning](https://semver.org/). The
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)`,
+on `typing_extensions` like this: `typing_extensions ~=x.y`,
where `x.y` is the first version that includes all features you need.
+[This](https://packaging.python.org/en/latest/specifications/version-specifiers/#compatible-release)
+is equivalent to `typing_extensions >=x.y, <(x+1)`. Do not depend on `~= x.y.z`
+unless you really know what you're doing; that defeats the purpose of
+semantic versioning.
## Included items
diff --git a/contrib/python/typing-extensions/py3/README.md b/contrib/python/typing-extensions/py3/README.md
index 1eddb2a14b6..106e83b19c6 100644
--- a/contrib/python/typing-extensions/py3/README.md
+++ b/contrib/python/typing-extensions/py3/README.md
@@ -23,8 +23,12 @@ way as equivalent forms in `typing`.
[Semantic Versioning](https://semver.org/). The
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)`,
+on `typing_extensions` like this: `typing_extensions ~=x.y`,
where `x.y` is the first version that includes all features you need.
+[This](https://packaging.python.org/en/latest/specifications/version-specifiers/#compatible-release)
+is equivalent to `typing_extensions >=x.y, <(x+1)`. Do not depend on `~= x.y.z`
+unless you really know what you're doing; that defeats the purpose of
+semantic versioning.
## Included items
diff --git a/contrib/python/typing-extensions/py3/typing_extensions.py b/contrib/python/typing-extensions/py3/typing_extensions.py
index efa09d55236..77f33e1614f 100644
--- a/contrib/python/typing-extensions/py3/typing_extensions.py
+++ b/contrib/python/typing-extensions/py3/typing_extensions.py
@@ -14,6 +14,7 @@ import types as _types
import typing
import warnings
+# Breakpoint: https://github.com/python/cpython/pull/119891
if sys.version_info >= (3, 14):
import annotationlib
@@ -70,6 +71,7 @@ __all__ = [
'clear_overloads',
'dataclass_transform',
'deprecated',
+ 'disjoint_base',
'Doc',
'evaluate_forward_ref',
'get_overloads',
@@ -100,6 +102,7 @@ __all__ = [
'TypeGuard',
'TypeIs',
'TYPE_CHECKING',
+ 'type_repr',
'Never',
'NoReturn',
'ReadOnly',
@@ -151,6 +154,7 @@ __all__ = [
# for backward compatibility
PEP_560 = True
GenericMeta = type
+# Breakpoint: https://github.com/python/cpython/pull/116129
_PEP_696_IMPLEMENTED = sys.version_info >= (3, 13, 0, "beta")
# Added with bpo-45166 to 3.10.1+ and some 3.9 versions
@@ -168,6 +172,7 @@ class _Sentinel:
_marker = _Sentinel()
+# Breakpoint: https://github.com/python/cpython/pull/27342
if sys.version_info >= (3, 10):
def _should_collect_from_parameters(t):
return isinstance(
@@ -189,6 +194,7 @@ T_co = typing.TypeVar('T_co', covariant=True) # Any type covariant containers.
T_contra = typing.TypeVar('T_contra', contravariant=True) # Ditto contravariant.
+# Breakpoint: https://github.com/python/cpython/pull/31841
if sys.version_info >= (3, 11):
from typing import Any
else:
@@ -277,6 +283,7 @@ class _ExtensionsSpecialForm(typing._SpecialForm, _root=True):
Final = typing.Final
+# Breakpoint: https://github.com/python/cpython/pull/30530
if sys.version_info >= (3, 11):
final = typing.final
else:
@@ -315,11 +322,39 @@ else:
return f
+if hasattr(typing, "disjoint_base"): # 3.15
+ disjoint_base = typing.disjoint_base
+else:
+ def disjoint_base(cls):
+ """This decorator marks a class as a disjoint base.
+
+ Child classes of a disjoint base cannot inherit from other disjoint bases that are
+ not parent classes of the disjoint base.
+
+ For example:
+
+ @disjoint_base
+ class Disjoint1: pass
+
+ @disjoint_base
+ class Disjoint2: pass
+
+ class Disjoint3(Disjoint1, Disjoint2): pass # Type checker error
+
+ Type checkers can use knowledge of disjoint bases to detect unreachable code
+ and determine when two types can overlap.
+
+ See PEP 800."""
+ cls.__disjoint_base__ = True
+ return cls
+
+
def IntVar(name):
return typing.TypeVar(name)
# A Literal bug was fixed in 3.11.0, 3.10.1 and 3.9.8
+# Breakpoint: https://github.com/python/cpython/pull/29334
if sys.version_info >= (3, 10, 1):
Literal = typing.Literal
else:
@@ -480,6 +515,7 @@ Text = typing.Text
TYPE_CHECKING = typing.TYPE_CHECKING
+# Breakpoint: https://github.com/python/cpython/pull/118681
if sys.version_info >= (3, 13, 0, "beta"):
from typing import AsyncContextManager, AsyncGenerator, ContextManager, Generator
else:
@@ -590,6 +626,7 @@ def _caller(depth=1, default='__main__'):
# `__match_args__` attribute was removed from protocol members in 3.13,
# we want to backport this change to older Python versions.
+# Breakpoint: https://github.com/python/cpython/pull/110683
if sys.version_info >= (3, 13):
Protocol = typing.Protocol
else:
@@ -770,6 +807,7 @@ else:
cls.__init__ = _no_init
+# Breakpoint: https://github.com/python/cpython/pull/113401
if sys.version_info >= (3, 13):
runtime_checkable = typing.runtime_checkable
else:
@@ -830,6 +868,7 @@ runtime = runtime_checkable
# Our version of runtime-checkable protocols is faster on Python <=3.11
+# Breakpoint: https://github.com/python/cpython/pull/112717
if sys.version_info >= (3, 12):
SupportsInt = typing.SupportsInt
SupportsFloat = typing.SupportsFloat
@@ -1159,6 +1198,7 @@ else:
mutable_keys.add(annotation_key)
readonly_keys.discard(annotation_key)
+ # Breakpoint: https://github.com/python/cpython/pull/119891
if sys.version_info >= (3, 14):
def __annotate__(format):
annos = {}
@@ -1249,6 +1289,7 @@ else:
raise TypeError("TypedDict takes either a dict or keyword arguments,"
" but not both")
if kwargs:
+ # Breakpoint: https://github.com/python/cpython/pull/104891
if sys.version_info >= (3, 13):
raise TypeError("TypedDict takes no keyword arguments")
warnings.warn(
@@ -1458,6 +1499,7 @@ else: # <=3.13
hint = typing.get_type_hints(
obj, globalns=globalns, localns=localns, include_extras=True
)
+ # Breakpoint: https://github.com/python/cpython/pull/30304
if sys.version_info < (3, 11):
_clean_optional(obj, hint, globalns, localns)
if include_extras:
@@ -1530,7 +1572,8 @@ else: # <=3.13
# Python 3.9 has get_origin() and get_args() but those implementations don't support
# ParamSpecArgs and ParamSpecKwargs, so only Python 3.10's versions will do.
-if sys.version_info[:2] >= (3, 10):
+# Breakpoint: https://github.com/python/cpython/pull/25298
+if sys.version_info >= (3, 10):
get_origin = typing.get_origin
get_args = typing.get_args
# 3.9
@@ -2096,6 +2139,7 @@ def _concatenate_getitem(self, parameters):
# 3.11+; Concatenate does not accept ellipsis in 3.10
+# Breakpoint: https://github.com/python/cpython/pull/30969
if sys.version_info >= (3, 11):
Concatenate = typing.Concatenate
# <=3.10
@@ -2432,7 +2476,9 @@ For more information, see PEP 646 and PEP 692.
"""
-if sys.version_info >= (3, 12): # PEP 692 changed the repr of Unpack[]
+# PEP 692 changed the repr of Unpack[]
+# Breakpoint: https://github.com/python/cpython/pull/104048
+if sys.version_info >= (3, 12):
Unpack = typing.Unpack
def _is_unpack(obj):
@@ -2695,8 +2741,9 @@ else: # <=3.10
raise AssertionError(f"Expected code to be unreachable, but got: {value}")
+# dataclass_transform exists in 3.11 but lacks the frozen_default parameter
+# Breakpoint: https://github.com/python/cpython/pull/99958
if sys.version_info >= (3, 12): # 3.12+
- # dataclass_transform exists in 3.11 but lacks the frozen_default parameter
dataclass_transform = typing.dataclass_transform
else: # <=3.11
def dataclass_transform(
@@ -2827,6 +2874,7 @@ else: # <=3.11
# Python 3.13.3+ contains a fix for the wrapped __new__
+# Breakpoint: https://github.com/python/cpython/pull/132160
if sys.version_info >= (3, 13, 3):
deprecated = warnings.deprecated
else:
@@ -2956,6 +3004,7 @@ else:
return arg(*args, **kwargs)
if asyncio.coroutines.iscoroutinefunction(arg):
+ # Breakpoint: https://github.com/python/cpython/pull/99247
if sys.version_info >= (3, 12):
wrapper = inspect.markcoroutinefunction(wrapper)
else:
@@ -2969,6 +3018,7 @@ else:
f"a class or callable, not {arg!r}"
)
+# Breakpoint: https://github.com/python/cpython/pull/23702
if sys.version_info < (3, 10):
def _is_param_expr(arg):
return arg is ... or isinstance(
@@ -3045,6 +3095,7 @@ if not hasattr(typing, "TypeVarTuple"):
expect_val = f"at least {elen}"
+ # Breakpoint: https://github.com/python/cpython/pull/27515
things = "arguments" if sys.version_info >= (3, 10) else "parameters"
raise TypeError(f"Too {'many' if alen > elen else 'few'} {things}"
f" for {cls}; actual {alen}, expected {expect_val}")
@@ -3238,6 +3289,7 @@ else:
# This was explicitly disallowed in 3.9-3.10, and only half-worked in <=3.8.
# On 3.12, we added __orig_bases__ to call-based NamedTuples
# On 3.13, we deprecated kwargs-based NamedTuples
+# Breakpoint: https://github.com/python/cpython/pull/105609
if sys.version_info >= (3, 13):
NamedTuple = typing.NamedTuple
else:
@@ -3313,6 +3365,7 @@ else:
# using add_note() until py312.
# Making sure exceptions are raised in the same way
# as in "normal" classes seems most important here.
+ # Breakpoint: https://github.com/python/cpython/pull/95915
if sys.version_info >= (3, 12):
e.add_note(msg)
raise
@@ -3461,6 +3514,7 @@ else:
# NewType is a class on Python 3.10+, making it pickleable
# The error message for subclassing instances of NewType was improved on 3.11+
+# Breakpoint: https://github.com/python/cpython/pull/30268
if sys.version_info >= (3, 11):
NewType = typing.NewType
else:
@@ -3513,6 +3567,7 @@ else:
def __reduce__(self):
return self.__qualname__
+ # Breakpoint: https://github.com/python/cpython/pull/21515
if sys.version_info >= (3, 10):
# PEP 604 methods
# It doesn't make sense to have these methods on Python <3.10
@@ -3524,10 +3579,12 @@ else:
return typing.Union[other, self]
+# Breakpoint: https://github.com/python/cpython/pull/124795
if sys.version_info >= (3, 14):
TypeAliasType = typing.TypeAliasType
# <=3.13
else:
+ # Breakpoint: https://github.com/python/cpython/pull/103764
if sys.version_info >= (3, 12):
# 3.12-3.13
def _is_unionable(obj):
@@ -3723,6 +3780,7 @@ else:
def __call__(self):
raise TypeError("Type alias is not callable")
+ # Breakpoint: https://github.com/python/cpython/pull/21515
if sys.version_info >= (3, 10):
def __or__(self, right):
# For forward compatibility with 3.12, reject Unions
@@ -3835,15 +3893,19 @@ if _CapsuleType is not None:
__all__.append("CapsuleType")
-if sys.version_info >= (3,14):
+if sys.version_info >= (3, 14):
from annotationlib import Format, get_annotations
else:
+ # Available since Python 3.14.0a3
+ # PR: https://github.com/python/cpython/pull/124415
class Format(enum.IntEnum):
VALUE = 1
VALUE_WITH_FAKE_GLOBALS = 2
FORWARDREF = 3
STRING = 4
+ # Available since Python 3.14.0a1
+ # PR: https://github.com/python/cpython/pull/119891
def get_annotations(obj, *, globals=None, locals=None, eval_str=False,
format=Format.VALUE):
"""Compute the annotations dict for an object.
@@ -4031,23 +4093,13 @@ else:
# as a way of emulating annotation scopes when calling `eval()`
type_params = getattr(owner, "__type_params__", None)
- # type parameters require some special handling,
- # as they exist in their own scope
- # but `eval()` does not have a dedicated parameter for that scope.
- # For classes, names in type parameter scopes should override
- # names in the global scope (which here are called `localns`!),
- # but should in turn be overridden by names in the class scope
- # (which here are called `globalns`!)
+ # Type parameters exist in their own scope, which is logically
+ # between the locals and the globals. We simulate this by adding
+ # them to the globals.
if type_params is not None:
globals = dict(globals)
- locals = dict(locals)
for param in type_params:
- param_name = param.__name__
- if (
- _FORWARD_REF_HAS_CLASS and not forward_ref.__forward_is_class__
- ) or param_name not in globals:
- globals[param_name] = param
- locals.pop(param_name, None)
+ globals[param.__name__] = param
arg = forward_ref.__forward_arg__
if arg.isidentifier() and not keyword.iskeyword(arg):
@@ -4181,6 +4233,7 @@ class Sentinel:
def __call__(self, *args, **kwargs):
raise TypeError(f"{type(self).__name__!r} object is not callable")
+ # Breakpoint: https://github.com/python/cpython/pull/21515
if sys.version_info >= (3, 10):
def __or__(self, other):
return typing.Union[self, other]
@@ -4192,6 +4245,26 @@ class Sentinel:
raise TypeError(f"Cannot pickle {type(self).__name__!r} object")
+if sys.version_info >= (3, 14, 0, "beta"):
+ type_repr = annotationlib.type_repr
+else:
+ def type_repr(value):
+ """Convert a Python value to a format suitable for use with the STRING format.
+
+ This is intended as a helper for tools that support the STRING format but do
+ not have access to the code that originally produced the annotations. It uses
+ repr() for most objects.
+
+ """
+ if isinstance(value, (type, _types.FunctionType, _types.BuiltinFunctionType)):
+ if value.__module__ == "builtins":
+ return value.__qualname__
+ return f"{value.__module__}.{value.__qualname__}"
+ if value is ...:
+ return "..."
+ return repr(value)
+
+
# Aliases for items that are in typing in all supported versions.
# We use hasattr() checks so this library will continue to import on
# future versions of Python that may remove these names.
diff --git a/contrib/python/typing-extensions/py3/ya.make b/contrib/python/typing-extensions/py3/ya.make
index 76478f5cdfb..7bffd55961d 100644
--- a/contrib/python/typing-extensions/py3/ya.make
+++ b/contrib/python/typing-extensions/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(4.14.1)
+VERSION(4.15.0)
LICENSE(PSF-2.0)