From 587d15a9bc97602617cb0b8ce50be8f15e22f151 Mon Sep 17 00:00:00 2001 From: Ilya Kulakov Date: Mon, 31 Jan 2022 17:49:58 -0800 Subject: [PATCH] bisect: fix type of x when key is present (#7097) --- stdlib/_bisect.pyi | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/stdlib/_bisect.pyi b/stdlib/_bisect.pyi index 1f67dadd8..0a5795d2e 100644 --- a/stdlib/_bisect.pyi +++ b/stdlib/_bisect.pyi @@ -1,31 +1,53 @@ import sys -from _typeshed import SupportsRichComparison -from typing import Callable, MutableSequence, Sequence, TypeVar +from _typeshed import SupportsRichComparisonT +from typing import Callable, MutableSequence, Sequence, TypeVar, overload _T = TypeVar("_T") if sys.version_info >= (3, 10): + @overload + def bisect_left(a: Sequence[_T], x: _T, lo: int = ..., hi: int | None = ..., *, key: None = ...) -> int: ... + @overload def bisect_left( - a: Sequence[_T], x: _T, lo: int = ..., hi: int | None = ..., *, key: Callable[[_T], SupportsRichComparison] | None = ... + a: Sequence[_T], + x: SupportsRichComparisonT, + lo: int = ..., + hi: int | None = ..., + *, + key: Callable[[_T], SupportsRichComparisonT] = ..., ) -> int: ... + @overload + def bisect_right(a: Sequence[_T], x: _T, lo: int = ..., hi: int | None = ..., *, key: None = ...) -> int: ... + @overload def bisect_right( - a: Sequence[_T], x: _T, lo: int = ..., hi: int | None = ..., *, key: Callable[[_T], SupportsRichComparison] | None = ... + a: Sequence[_T], + x: SupportsRichComparisonT, + lo: int = ..., + hi: int | None = ..., + *, + key: Callable[[_T], SupportsRichComparisonT] = ..., ) -> int: ... + @overload + def insort_left(a: MutableSequence[_T], x: _T, lo: int = ..., hi: int | None = ..., *, key: None = ...) -> None: ... + @overload def insort_left( a: MutableSequence[_T], - x: _T, + x: SupportsRichComparisonT, lo: int = ..., hi: int | None = ..., *, - key: Callable[[_T], SupportsRichComparison] | None = ..., + key: Callable[[_T], SupportsRichComparisonT] = ..., ) -> None: ... + @overload + def insort_right(a: MutableSequence[_T], x: _T, lo: int = ..., hi: int | None = ..., *, key: None = ...) -> None: ... + @overload def insort_right( a: MutableSequence[_T], - x: _T, + x: SupportsRichComparisonT, lo: int = ..., hi: int | None = ..., *, - key: Callable[[_T], SupportsRichComparison] | None = ..., + key: Callable[[_T], SupportsRichComparisonT] = ..., ) -> None: ... else: