mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-08 13:04:46 +08:00
builtins: accept old-style iterables to iter (#7817)
This commit is contained in:
@@ -1202,9 +1202,15 @@ def help(request: object = ...) -> None: ...
|
||||
def hex(__number: int | SupportsIndex) -> str: ...
|
||||
def id(__obj: object) -> int: ...
|
||||
def input(__prompt: object = ...) -> str: ...
|
||||
|
||||
class _GetItemIterable(Protocol[_T_co]):
|
||||
def __getitem__(self, __i: int) -> _T_co: ...
|
||||
|
||||
@overload
|
||||
def iter(__iterable: SupportsIter[_SupportsNextT]) -> _SupportsNextT: ...
|
||||
@overload
|
||||
def iter(__iterable: _GetItemIterable[_T]) -> Iterator[_T]: ...
|
||||
@overload
|
||||
def iter(__function: Callable[[], _T | None], __sentinel: None) -> Iterator[_T]: ...
|
||||
@overload
|
||||
def iter(__function: Callable[[], _T], __sentinel: object) -> Iterator[_T]: ...
|
||||
|
||||
14
test_cases/stdlib/builtins/test_iteration.py
Normal file
14
test_cases/stdlib/builtins/test_iteration.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from typing import Iterator
|
||||
from typing_extensions import assert_type
|
||||
|
||||
|
||||
class OldStyleIter:
|
||||
def __getitem__(self, index: int) -> str:
|
||||
return str(index)
|
||||
|
||||
|
||||
for x in iter(OldStyleIter()):
|
||||
assert_type(x, str)
|
||||
|
||||
assert_type(iter(OldStyleIter()), Iterator[str])
|
||||
assert_type(next(iter(OldStyleIter())), str)
|
||||
Reference in New Issue
Block a user