@@ -2153,12 +2153,11 @@ def test_specific_cases(self):
2153
2153
]:
2154
2154
self .assertEqual (expected , quantiles (data , n = n ))
2155
2155
self .assertEqual (len (quantiles (data , n = n )), n - 1 )
2156
- self .assertEqual (list (map (float , expected )),
2157
- quantiles (map (Decimal , data ), n = n ))
2158
- self .assertEqual (list (map (Decimal , expected )),
2159
- quantiles (map (Decimal , data ), n = n ))
2160
- self .assertEqual (list (map (Fraction , expected )),
2161
- quantiles (map (Fraction , data ), n = n ))
2156
+ # Preserve datatype when possible
2157
+ for datatype in (float , Decimal , Fraction ):
2158
+ result = quantiles (map (datatype , data ), n = n )
2159
+ self .assertTrue (all (type (x ) == datatype ) for x in result )
2160
+ self .assertEqual (result , list (map (datatype , expected )))
2162
2161
# Invariant under tranlation and scaling
2163
2162
def f (x ):
2164
2163
return 3.5 * x - 1234.675
@@ -2199,12 +2198,11 @@ def test_specific_cases_inclusive(self):
2199
2198
]:
2200
2199
self .assertEqual (expected , quantiles (data , n = n , method = "inclusive" ))
2201
2200
self .assertEqual (len (quantiles (data , n = n , method = "inclusive" )), n - 1 )
2202
- self .assertEqual (list (map (float , expected )),
2203
- quantiles (map (Decimal , data ), n = n , method = "inclusive" ))
2204
- self .assertEqual (list (map (Decimal , expected )),
2205
- quantiles (map (Decimal , data ), n = n , method = "inclusive" ))
2206
- self .assertEqual (list (map (Fraction , expected )),
2207
- quantiles (map (Fraction , data ), n = n , method = "inclusive" ))
2201
+ # Preserve datatype when possible
2202
+ for datatype in (float , Decimal , Fraction ):
2203
+ result = quantiles (map (datatype , data ), n = n , method = "inclusive" )
2204
+ self .assertTrue (all (type (x ) == datatype ) for x in result )
2205
+ self .assertEqual (result , list (map (datatype , expected )))
2208
2206
# Invariant under tranlation and scaling
2209
2207
def f (x ):
2210
2208
return 3.5 * x - 1234.675
@@ -2222,6 +2220,14 @@ def f(x):
2222
2220
self .assertTrue (all (math .isclose (e , a , abs_tol = 0.0001 )
2223
2221
for e , a in zip (expected , actual )))
2224
2222
2223
+ def test_equal_inputs (self ):
2224
+ quantiles = statistics .quantiles
2225
+ for n in range (2 , 10 ):
2226
+ data = [10.0 ] * n
2227
+ self .assertEqual (quantiles (data ), [10.0 , 10.0 , 10.0 ])
2228
+ self .assertEqual (quantiles (data , method = 'inclusive' ),
2229
+ [10.0 , 10.0 , 10.0 ])
2230
+
2225
2231
def test_equal_sized_groups (self ):
2226
2232
quantiles = statistics .quantiles
2227
2233
total = 10_000
0 commit comments