[3.14] gh-140938: Raise ValueError for infinite inputs to stdev/pstdev (GH-141531) (#141575)

gh-140938: Raise ValueError for infinite inputs to stdev/pstdev (GH-141531)

Raise ValueError for infinite inputs to stdev/pstdev
(cherry picked from commit f0a8bc737a)



---

Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2025-11-15 03:58:40 +01:00 committed by GitHub
parent 17e7aad5e3
commit 8a67e3c2b0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 24 additions and 5 deletions

View file

@ -619,9 +619,14 @@ def stdev(data, xbar=None):
if n < 2:
raise StatisticsError('stdev requires at least two data points')
mss = ss / (n - 1)
try:
mss_numerator = mss.numerator
mss_denominator = mss.denominator
except AttributeError:
raise ValueError('inf or nan encountered in data')
if issubclass(T, Decimal):
return _decimal_sqrt_of_frac(mss.numerator, mss.denominator)
return _float_sqrt_of_frac(mss.numerator, mss.denominator)
return _decimal_sqrt_of_frac(mss_numerator, mss_denominator)
return _float_sqrt_of_frac(mss_numerator, mss_denominator)
def pstdev(data, mu=None):
@ -637,9 +642,14 @@ def pstdev(data, mu=None):
if n < 1:
raise StatisticsError('pstdev requires at least one data point')
mss = ss / n
try:
mss_numerator = mss.numerator
mss_denominator = mss.denominator
except AttributeError:
raise ValueError('inf or nan encountered in data')
if issubclass(T, Decimal):
return _decimal_sqrt_of_frac(mss.numerator, mss.denominator)
return _float_sqrt_of_frac(mss.numerator, mss.denominator)
return _decimal_sqrt_of_frac(mss_numerator, mss_denominator)
return _float_sqrt_of_frac(mss_numerator, mss_denominator)
## Statistics for relations between two inputs #############################