Skip to content

Commit cc629d8

Browse files
beer-psimaxbachmann
authored andcommitted
fix: extractOne should only return None if score_cutoff is specified
1 parent 0ef2a49 commit cc629d8

1 file changed

Lines changed: 96 additions & 8 deletions

File tree

src/rapidfuzz/process.pyi

Lines changed: 96 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,87 +38,175 @@ def extractOne(
3838
*,
3939
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
4040
processor: None = None,
41-
score_cutoff: float | None = None,
41+
score_cutoff: float,
4242
score_hint: float | None = None,
4343
scorer_kwargs: dict[str, Any] | None = None,
4444
) -> tuple[_StringType2, float, _KeyType] | None: ...
4545
@overload
46+
def extractOne(
47+
query: Sequence[Hashable] | None,
48+
choices: Mapping[_KeyType, _StringType2 | None],
49+
*,
50+
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
51+
processor: None = None,
52+
score_cutoff: None = None,
53+
score_hint: float | None = None,
54+
scorer_kwargs: dict[str, Any] | None = None,
55+
) -> tuple[_StringType2, float, _KeyType]: ...
56+
@overload
4657
def extractOne(
4758
query: Sequence[Hashable] | None,
4859
choices: Iterable[_StringType2 | None],
4960
*,
5061
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
5162
processor: None = None,
52-
score_cutoff: float | None = None,
63+
score_cutoff: float,
5364
score_hint: float | None = None,
5465
scorer_kwargs: dict[str, Any] | None = None,
5566
) -> tuple[_StringType2, float, int] | None: ...
5667
@overload
68+
def extractOne(
69+
query: Sequence[Hashable] | None,
70+
choices: Iterable[_StringType2 | None],
71+
*,
72+
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
73+
processor: None = None,
74+
score_cutoff: None = None,
75+
score_hint: float | None = None,
76+
scorer_kwargs: dict[str, Any] | None = None,
77+
) -> tuple[_StringType2, float, int]: ...
78+
@overload
5779
def extractOne(
5880
query: _UnprocessedType1 | None,
5981
choices: Mapping[_KeyType, _UnprocessedType2 | None],
6082
*,
6183
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
6284
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
63-
score_cutoff: float | None = None,
85+
score_cutoff: float,
6486
score_hint: float | None = None,
6587
scorer_kwargs: dict[str, Any] | None = None,
6688
) -> tuple[_UnprocessedType2, float, _KeyType] | None: ...
6789
@overload
90+
def extractOne(
91+
query: _UnprocessedType1 | None,
92+
choices: Mapping[_KeyType, _UnprocessedType2 | None],
93+
*,
94+
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
95+
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
96+
score_cutoff: None = None,
97+
score_hint: float | None = None,
98+
scorer_kwargs: dict[str, Any] | None = None,
99+
) -> tuple[_UnprocessedType2, float, _KeyType]: ...
100+
@overload
68101
def extractOne(
69102
query: _UnprocessedType1 | None,
70103
choices: Iterable[_UnprocessedType2 | None],
71104
*,
72105
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
73106
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
74-
score_cutoff: float | None = None,
107+
score_cutoff: float,
75108
score_hint: float | None = None,
76109
scorer_kwargs: dict[str, Any] | None = None,
77110
) -> tuple[_UnprocessedType2, float, int] | None: ...
78111
@overload
112+
def extractOne(
113+
query: _UnprocessedType1 | None,
114+
choices: Iterable[_UnprocessedType2 | None],
115+
*,
116+
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
117+
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
118+
score_cutoff: None = None,
119+
score_hint: float | None = None,
120+
scorer_kwargs: dict[str, Any] | None = None,
121+
) -> tuple[_UnprocessedType2, float, int]: ...
122+
@overload
79123
def extractOne(
80124
query: _StringType1 | None,
81125
choices: Mapping[_KeyType, _StringType2 | None],
82126
*,
83127
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
84128
processor: None = None,
85-
score_cutoff: _ResultType | None = None,
129+
score_cutoff: _ResultType,
86130
score_hint: _ResultType | None = None,
87131
scorer_kwargs: dict[str, Any] | None = None,
88132
) -> tuple[_StringType2, _ResultType, _KeyType] | None: ...
89133
@overload
134+
def extractOne(
135+
query: _StringType1 | None,
136+
choices: Mapping[_KeyType, _StringType2 | None],
137+
*,
138+
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
139+
processor: None = None,
140+
score_cutoff: None = None,
141+
score_hint: _ResultType | None = None,
142+
scorer_kwargs: dict[str, Any] | None = None,
143+
) -> tuple[_StringType2, _ResultType, _KeyType]: ...
144+
@overload
90145
def extractOne(
91146
query: _StringType1 | None,
92147
choices: Iterable[_StringType2 | None],
93148
*,
94149
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
95150
processor: None = None,
96-
score_cutoff: _ResultType | None = None,
151+
score_cutoff: _ResultType,
97152
score_hint: _ResultType | None = None,
98153
scorer_kwargs: dict[str, Any] | None = None,
99154
) -> tuple[_StringType2, _ResultType, int] | None: ...
100155
@overload
156+
def extractOne(
157+
query: _StringType1 | None,
158+
choices: Iterable[_StringType2 | None],
159+
*,
160+
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
161+
processor: None = None,
162+
score_cutoff: None = None,
163+
score_hint: _ResultType | None = None,
164+
scorer_kwargs: dict[str, Any] | None = None,
165+
) -> tuple[_StringType2, _ResultType, int]: ...
166+
@overload
101167
def extractOne(
102168
query: _UnprocessedType1 | None,
103169
choices: Mapping[_KeyType, _UnprocessedType2 | None],
104170
*,
105171
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
106172
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
107-
score_cutoff: _ResultType | None = None,
173+
score_cutoff: _ResultType,
108174
score_hint: _ResultType | None = None,
109175
scorer_kwargs: dict[str, Any] | None = None,
110176
) -> tuple[_UnprocessedType2, _ResultType, _KeyType] | None: ...
111177
@overload
178+
def extractOne(
179+
query: _UnprocessedType1 | None,
180+
choices: Mapping[_KeyType, _UnprocessedType2 | None],
181+
*,
182+
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
183+
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
184+
score_cutoff: None = None,
185+
score_hint: _ResultType | None = None,
186+
scorer_kwargs: dict[str, Any] | None = None,
187+
) -> tuple[_UnprocessedType2, _ResultType, _KeyType]: ...
188+
@overload
112189
def extractOne(
113190
query: _UnprocessedType1 | None,
114191
choices: Iterable[_UnprocessedType2 | None],
115192
*,
116193
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
117194
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
118-
score_cutoff: _ResultType | None = None,
195+
score_cutoff: _ResultType,
119196
score_hint: _ResultType | None = None,
120197
scorer_kwargs: dict[str, Any] | None = None,
121198
) -> tuple[_UnprocessedType2, _ResultType, int] | None: ...
199+
@overload
200+
def extractOne(
201+
query: _UnprocessedType1 | None,
202+
choices: Iterable[_UnprocessedType2 | None],
203+
*,
204+
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
205+
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
206+
score_cutoff: None = None,
207+
score_hint: _ResultType | None = None,
208+
scorer_kwargs: dict[str, Any] | None = None,
209+
) -> tuple[_UnprocessedType2, _ResultType, int]: ...
122210

123211
# mypy wants defaults to be valid for every possible parameterization of a generic function
124212
# so add separate overloads for the default version

0 commit comments

Comments
 (0)