From 482d38044b87ace2ddd28268a53652a7038ecdfd Mon Sep 17 00:00:00 2001 From: Shantanu <12621235+hauntsaninja@users.noreply.github.com> Date: Mon, 10 May 2021 15:12:06 -0700 Subject: [PATCH] statistics: update for py310 (#5291) --- stdlib/statistics.pyi | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/stdlib/statistics.pyi b/stdlib/statistics.pyi index d84296524..4435bf8a0 100644 --- a/stdlib/statistics.pyi +++ b/stdlib/statistics.pyi @@ -2,10 +2,11 @@ import sys from _typeshed import SupportsLessThanT from decimal import Decimal from fractions import Fraction -from typing import Any, Hashable, Iterable, List, Optional, SupportsFloat, Type, TypeVar, Union +from typing import Any, Hashable, Iterable, List, NamedTuple, Optional, Sequence, SupportsFloat, Type, TypeVar, Union _T = TypeVar("_T") # Most functions in this module accept homogeneous collections of one of these types +_Number = Union[float, Decimal, Fraction] _NumberT = TypeVar("_NumberT", float, Decimal, Fraction) # Used in mode, multimode @@ -18,7 +19,13 @@ if sys.version_info >= (3, 8): def geometric_mean(data: Iterable[SupportsFloat]) -> float: ... def mean(data: Iterable[_NumberT]) -> _NumberT: ... -def harmonic_mean(data: Iterable[_NumberT]) -> _NumberT: ... + +if sys.version_info >= (3, 10): + def harmonic_mean(data: Iterable[_NumberT], weights: Optional[Iterable[_Number]] = ...) -> _NumberT: ... + +else: + def harmonic_mean(data: Iterable[_NumberT]) -> _NumberT: ... + def median(data: Iterable[_NumberT]) -> _NumberT: ... def median_low(data: Iterable[SupportsLessThanT]) -> SupportsLessThanT: ... def median_high(data: Iterable[SupportsLessThanT]) -> SupportsLessThanT: ... @@ -70,3 +77,11 @@ if sys.version_info >= (3, 8): def __rsub__(self, x2: Union[float, NormalDist]) -> NormalDist: ... __rmul__ = __mul__ def __hash__(self) -> int: ... + +if sys.version_info >= (3, 10): + def correlation(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ... + def covariance(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ... + class LinearRegression(NamedTuple): + intercept: float + slope: float + def linear_regression(__regressor: Sequence[_Number], __dependent_variable: Sequence[_Number]) -> LinearRegression: ...