Skip to content

Commit 6827cd4

Browse files
authored
[bisect] Allow sequences without __len__ when hi is explicitly provided (#15493)
1 parent 07ffb67 commit 6827cd4

1 file changed

Lines changed: 57 additions & 1 deletion

File tree

stdlib/_bisect.pyi

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import sys
2-
from _typeshed import SupportsLenAndGetItem, SupportsRichComparisonT
2+
from _typeshed import SupportsGetItem, SupportsLenAndGetItem, SupportsRichComparisonT
33
from collections.abc import Callable, MutableSequence
44
from typing import TypeVar, overload
55

@@ -16,6 +16,14 @@ if sys.version_info >= (3, 10):
1616
key: None = None,
1717
) -> int: ...
1818
@overload
19+
def bisect_left(
20+
a: SupportsGetItem[int, SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int, hi: int, *, key: None = None
21+
) -> int: ...
22+
@overload
23+
def bisect_left(
24+
a: SupportsGetItem[int, SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int = 0, *, hi: int, key: None = None
25+
) -> int: ...
26+
@overload
1927
def bisect_left(
2028
a: SupportsLenAndGetItem[_T],
2129
x: SupportsRichComparisonT,
@@ -25,6 +33,19 @@ if sys.version_info >= (3, 10):
2533
key: Callable[[_T], SupportsRichComparisonT],
2634
) -> int: ...
2735
@overload
36+
def bisect_left(
37+
a: SupportsGetItem[int, _T], x: SupportsRichComparisonT, lo: int, hi: int, *, key: Callable[[_T], SupportsRichComparisonT]
38+
) -> int: ...
39+
@overload
40+
def bisect_left(
41+
a: SupportsGetItem[int, _T],
42+
x: SupportsRichComparisonT,
43+
lo: int = 0,
44+
*,
45+
hi: int,
46+
key: Callable[[_T], SupportsRichComparisonT],
47+
) -> int: ...
48+
@overload
2849
def bisect_right(
2950
a: SupportsLenAndGetItem[SupportsRichComparisonT],
3051
x: SupportsRichComparisonT,
@@ -34,6 +55,14 @@ if sys.version_info >= (3, 10):
3455
key: None = None,
3556
) -> int: ...
3657
@overload
58+
def bisect_right(
59+
a: SupportsGetItem[int, SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int, hi: int, *, key: None = None
60+
) -> int: ...
61+
@overload
62+
def bisect_right(
63+
a: SupportsGetItem[int, SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int = 0, *, hi: int, key: None = None
64+
) -> int: ...
65+
@overload
3766
def bisect_right(
3867
a: SupportsLenAndGetItem[_T],
3968
x: SupportsRichComparisonT,
@@ -43,6 +72,19 @@ if sys.version_info >= (3, 10):
4372
key: Callable[[_T], SupportsRichComparisonT],
4473
) -> int: ...
4574
@overload
75+
def bisect_right(
76+
a: SupportsGetItem[int, _T], x: SupportsRichComparisonT, lo: int, hi: int, *, key: Callable[[_T], SupportsRichComparisonT]
77+
) -> int: ...
78+
@overload
79+
def bisect_right(
80+
a: SupportsGetItem[int, _T],
81+
x: SupportsRichComparisonT,
82+
lo: int = 0,
83+
*,
84+
hi: int,
85+
key: Callable[[_T], SupportsRichComparisonT],
86+
) -> int: ...
87+
@overload
4688
def insort_left(
4789
a: MutableSequence[SupportsRichComparisonT],
4890
x: SupportsRichComparisonT,
@@ -70,12 +112,26 @@ if sys.version_info >= (3, 10):
70112
) -> None: ...
71113

72114
else:
115+
@overload
73116
def bisect_left(
74117
a: SupportsLenAndGetItem[SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int = 0, hi: int | None = None
75118
) -> int: ...
119+
@overload
120+
def bisect_left(a: SupportsGetItem[int, SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int, hi: int) -> int: ...
121+
@overload
122+
def bisect_left(
123+
a: SupportsGetItem[int, SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int = 0, *, hi: int
124+
) -> int: ...
125+
@overload
76126
def bisect_right(
77127
a: SupportsLenAndGetItem[SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int = 0, hi: int | None = None
78128
) -> int: ...
129+
@overload
130+
def bisect_right(a: SupportsGetItem[int, SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int, hi: int) -> int: ...
131+
@overload
132+
def bisect_right(
133+
a: SupportsGetItem[int, SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int = 0, *, hi: int
134+
) -> int: ...
79135
def insort_left(
80136
a: MutableSequence[SupportsRichComparisonT], x: SupportsRichComparisonT, lo: int = 0, hi: int | None = None
81137
) -> None: ...

0 commit comments

Comments
 (0)