diff --git a/stdlib/3/statistics.pyi b/stdlib/3/statistics.pyi index 5041933c4..bd30885c6 100644 --- a/stdlib/3/statistics.pyi +++ b/stdlib/3/statistics.pyi @@ -3,12 +3,17 @@ from decimal import Decimal from fractions import Fraction import sys -from typing import Any, Iterable, List, Optional, SupportsFloat, Type, TypeVar, Union +from typing import Any, Iterable, List, Optional, SupportsFloat, Type, TypeVar, Union, Protocol _T = TypeVar("_T") # Most functions in this module accept homogeneous collections of one of these types _Number = TypeVar('_Number', float, Decimal, Fraction) +# Used in median_high, median_low +class _Sortable(Protocol): + def __lt__(self, other) -> bool: ... +_SortableT = TypeVar("_SortableT", bound=_Sortable) + class StatisticsError(ValueError): ... if sys.version_info >= (3, 8): @@ -18,8 +23,8 @@ def mean(data: Iterable[_Number]) -> _Number: ... if sys.version_info >= (3, 6): def harmonic_mean(data: Iterable[_Number]) -> _Number: ... def median(data: Iterable[_Number]) -> _Number: ... -def median_low(data: Iterable[_Number]) -> _Number: ... -def median_high(data: Iterable[_Number]) -> _Number: ... +def median_low(data: Iterable[_SortableT]) -> _SortableT: ... +def median_high(data: Iterable[_SortableT]) -> _SortableT: ... def median_grouped(data: Iterable[_Number], interval: _Number = ...) -> _Number: ... def mode(data: Iterable[_Number]) -> _Number: ... if sys.version_info >= (3, 8):