From 6d96de82888608beb0538318e9ea664dd56ebba2 Mon Sep 17 00:00:00 2001 From: Huanyi Xie <74809554+xiehuanyi@users.noreply.github.com> Date: Mon, 12 Oct 2026 11:27:00 +0300 Subject: [PATCH 1/2] Accept integer-like defaults in operator.length_hint --- stdlib/@tests/test_cases/check_operator.py | 13 +++++++++++++ stdlib/_operator.pyi | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 stdlib/@tests/test_cases/check_operator.py diff --git a/stdlib/@tests/test_cases/check_operator.py b/stdlib/@tests/test_cases/check_operator.py new file mode 100644 index 000000000000..3ef774215b85 --- /dev/null +++ b/stdlib/@tests/test_cases/check_operator.py @@ -0,0 +1,13 @@ +import _operator +import operator +from typing_extensions import assert_type + + +class Index: + def __index__(self) -> int: + return 3 + + +assert_type(operator.length_hint(object(), Index()), int) +assert_type(_operator.length_hint(object(), Index()), int) +operator.length_hint(object(), 1.5) # type: ignore[arg-type] diff --git a/stdlib/_operator.pyi b/stdlib/_operator.pyi index 565bb41697f1..066a0a167c5b 100644 --- a/stdlib/_operator.pyi +++ b/stdlib/_operator.pyi @@ -132,7 +132,7 @@ def setitem(a: MutableSequence[_T], b: slice[int | None], c: Sequence[_T], /) -> @overload def setitem(a: MutableMapping[_K, _V], b: _K, c: _V, /) -> None: ... -def length_hint(obj: object, default: int = 0, /) -> int: ... +def length_hint(obj: object, default: SupportsIndex = 0, /) -> int: ... def iadd(a, b, /): ... def iand(a, b, /): ... def iconcat(a, b, /): ... From b43d54ba0ce9f82ebb786342fbab2a5d04dd33e9 Mon Sep 17 00:00:00 2001 From: Huanyi Xie <74809554+xiehuanyi@users.noreply.github.com> Date: Mon, 12 Oct 2026 17:31:58 +0300 Subject: [PATCH 2/2] Remove the in-PR length_hint regression test --- stdlib/@tests/test_cases/check_operator.py | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 stdlib/@tests/test_cases/check_operator.py diff --git a/stdlib/@tests/test_cases/check_operator.py b/stdlib/@tests/test_cases/check_operator.py deleted file mode 100644 index 3ef774215b85..000000000000 --- a/stdlib/@tests/test_cases/check_operator.py +++ /dev/null @@ -1,13 +0,0 @@ -import _operator -import operator -from typing_extensions import assert_type - - -class Index: - def __index__(self) -> int: - return 3 - - -assert_type(operator.length_hint(object(), Index()), int) -assert_type(_operator.length_hint(object(), Index()), int) -operator.length_hint(object(), 1.5) # type: ignore[arg-type]