From a2ae448de3bf68dae5078aa06fce298e846d24d7 Mon Sep 17 00:00:00 2001 From: donbarbos Date: Mon, 24 Aug 2026 12:30:51 +0400 Subject: [PATCH 1/2] [typing] Remove keyword arguments for NamedTuple in Python 3.15 Source: https://github.com/python/cpython/pull/133822 --- stdlib/typing.pyi | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index 14f3df9b59d2..213346ab5fe2 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -1055,11 +1055,14 @@ class NamedTuple(tuple[Any, ...]): if sys.version_info >= (3, 12): __orig_bases__: ClassVar[tuple[Any, ...]] - @overload - def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ... - @overload - @deprecated("Creating a typing.NamedTuple using keyword arguments is deprecated and support will be removed in Python 3.15") - def __init__(self, typename: str, fields: None = None, /, **kwargs: Any) -> None: ... + if sys.version_info >= (3, 15): + def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ... + else: + @overload + def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ... + @overload + @deprecated("Creating a typing.NamedTuple using keyword arguments is deprecated; support removed in Python 3.15") + def __init__(self, typename: str, fields: None = None, /, **kwargs: Any) -> None: ... @final @classmethod From f05d2a713ef4580c75cb14d8439f285ebef70c71 Mon Sep 17 00:00:00 2001 From: donbarbos Date: Mon, 24 Aug 2026 12:35:54 +0400 Subject: [PATCH 2/2] miss fallback --- stdlib/_typeshed/_type_checker_internals.pyi | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/stdlib/_typeshed/_type_checker_internals.pyi b/stdlib/_typeshed/_type_checker_internals.pyi index a8411192a898..9dad80591006 100644 --- a/stdlib/_typeshed/_type_checker_internals.pyi +++ b/stdlib/_typeshed/_type_checker_internals.pyi @@ -69,13 +69,16 @@ class NamedTupleFallback(tuple[Any, ...]): if sys.version_info >= (3, 12): __orig_bases__: ClassVar[tuple[Any, ...]] - @overload - def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ... - @overload - @typing_extensions.deprecated( - "Creating a typing.NamedTuple using keyword arguments is deprecated and support will be removed in Python 3.15" - ) - def __init__(self, typename: str, fields: None = None, /, **kwargs: Any) -> None: ... + if sys.version_info >= (3, 15): + def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ... + else: + @overload + def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ... + @overload + @typing_extensions.deprecated( + "Creating a typing.NamedTuple using keyword arguments is deprecated; support removed in Python 3.15" + ) + def __init__(self, typename: str, fields: None = None, /, **kwargs: Any) -> None: ... @classmethod def _make(cls, iterable: Iterable[Any]) -> typing_extensions.Self: ...