Skip to content

Commit 28b0c4d

Browse files
authored
[typing] Remove keyword arguments for NamedTuple in Python 3.15 (#16292)
1 parent 008f9eb commit 28b0c4d

2 files changed

Lines changed: 18 additions & 12 deletions

File tree

stdlib/_typeshed/_type_checker_internals.pyi

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,16 @@ class NamedTupleFallback(tuple[Any, ...]):
6969
if sys.version_info >= (3, 12):
7070
__orig_bases__: ClassVar[tuple[Any, ...]]
7171

72-
@overload
73-
def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ...
74-
@overload
75-
@typing_extensions.deprecated(
76-
"Creating a typing.NamedTuple using keyword arguments is deprecated and support will be removed in Python 3.15"
77-
)
78-
def __init__(self, typename: str, fields: None = None, /, **kwargs: Any) -> None: ...
72+
if sys.version_info >= (3, 15):
73+
def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ...
74+
else:
75+
@overload
76+
def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ...
77+
@overload
78+
@typing_extensions.deprecated(
79+
"Creating a typing.NamedTuple using keyword arguments is deprecated; support removed in Python 3.15"
80+
)
81+
def __init__(self, typename: str, fields: None = None, /, **kwargs: Any) -> None: ...
7982

8083
@classmethod
8184
def _make(cls, iterable: Iterable[Any]) -> typing_extensions.Self: ...

stdlib/typing.pyi

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,11 +1055,14 @@ class NamedTuple(tuple[Any, ...]):
10551055
if sys.version_info >= (3, 12):
10561056
__orig_bases__: ClassVar[tuple[Any, ...]]
10571057

1058-
@overload
1059-
def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ...
1060-
@overload
1061-
@deprecated("Creating a typing.NamedTuple using keyword arguments is deprecated and support will be removed in Python 3.15")
1062-
def __init__(self, typename: str, fields: None = None, /, **kwargs: Any) -> None: ...
1058+
if sys.version_info >= (3, 15):
1059+
def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ...
1060+
else:
1061+
@overload
1062+
def __init__(self, typename: str, fields: Iterable[tuple[str, Any]], /) -> None: ...
1063+
@overload
1064+
@deprecated("Creating a typing.NamedTuple using keyword arguments is deprecated; support removed in Python 3.15")
1065+
def __init__(self, typename: str, fields: None = None, /, **kwargs: Any) -> None: ...
10631066

10641067
@final
10651068
@classmethod

0 commit comments

Comments
 (0)