From 9657872774fe0af17bb638c5a62c2c97eddad80a Mon Sep 17 00:00:00 2001 From: Avasam Date: Mon, 28 Apr 2025 20:54:37 -0400 Subject: [PATCH 1/3] `iter("")` --> `Iterator[Never]` --- stdlib/builtins.pyi | 3 +++ 1 file changed, 3 insertions(+) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index b75250aad3de..a716b14220d4 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -45,6 +45,7 @@ from typing import ( # noqa: Y022,UP035 Mapping, MutableMapping, MutableSequence, + Never, Protocol, Sequence, SupportsAbs, @@ -1470,6 +1471,8 @@ def input(prompt: object = "", /) -> str: ... class _GetItemIterable(Protocol[_T_co]): def __getitem__(self, i: int, /) -> _T_co: ... +@overload +def iter(object: Literal[""], /) -> Iterator[Never]: ... @overload def iter(object: SupportsIter[_SupportsNextT_co], /) -> _SupportsNextT_co: ... @overload From 18d806fd89d62383a8d431be02a3d995a252d370 Mon Sep 17 00:00:00 2001 From: Avasam Date: Mon, 28 Apr 2025 21:00:37 -0400 Subject: [PATCH 2/3] Add tests --- stdlib/@tests/test_cases/builtins/check_iteration.py | 6 +++++- stdlib/builtins.pyi | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/stdlib/@tests/test_cases/builtins/check_iteration.py b/stdlib/@tests/test_cases/builtins/check_iteration.py index 3d609635377e..ab067412b676 100644 --- a/stdlib/@tests/test_cases/builtins/check_iteration.py +++ b/stdlib/@tests/test_cases/builtins/check_iteration.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Iterator -from typing_extensions import assert_type +from typing_extensions import assert_type, Never class OldStyleIter: @@ -14,3 +14,7 @@ def __getitem__(self, index: int) -> str: assert_type(iter(OldStyleIter()), Iterator[str]) assert_type(next(iter(OldStyleIter())), str) + +assert_type(iter(()), Iterator[Never]) +assert_type(iter(list[Never]()), Iterator[Never]) +assert_type(iter(""), Iterator[Never]) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index a716b14220d4..1282c8eab311 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -45,7 +45,6 @@ from typing import ( # noqa: Y022,UP035 Mapping, MutableMapping, MutableSequence, - Never, Protocol, Sequence, SupportsAbs, @@ -64,6 +63,7 @@ from typing_extensions import ( # noqa: Y023 Concatenate, Literal, LiteralString, + Never, ParamSpec, Self, TypeAlias, From ad29a09c3d296bf175b43c6684851d121a0326d5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 29 Apr 2025 01:04:01 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/@tests/test_cases/builtins/check_iteration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/@tests/test_cases/builtins/check_iteration.py b/stdlib/@tests/test_cases/builtins/check_iteration.py index ab067412b676..9c625b8f1604 100644 --- a/stdlib/@tests/test_cases/builtins/check_iteration.py +++ b/stdlib/@tests/test_cases/builtins/check_iteration.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Iterator -from typing_extensions import assert_type, Never +from typing_extensions import Never, assert_type class OldStyleIter: