diff options
-rw-r--r-- | Lib/statistics.py | 4 | ||||
-rw-r--r-- | Lib/test/test_statistics.py | 8 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 12 insertions, 3 deletions
diff --git a/Lib/statistics.py b/Lib/statistics.py index a67a6d11cd..9359ed71e5 100644 --- a/Lib/statistics.py +++ b/Lib/statistics.py @@ -268,9 +268,7 @@ def _coerce_types(T1, T2): def _counts(data): # Generate a table of sorted (value, frequency) pairs. - if data is None: - raise TypeError('None is not iterable') - table = collections.Counter(data).most_common() + table = collections.Counter(iter(data)).most_common() if not table: return table # Extract the values with the highest frequency. diff --git a/Lib/test/test_statistics.py b/Lib/test/test_statistics.py index 3d30d88f69..6db821fc6e 100644 --- a/Lib/test/test_statistics.py +++ b/Lib/test/test_statistics.py @@ -1355,6 +1355,14 @@ class TestMode(NumericTestCase, AverageMixin, UnivariateTypeMixin): # collections.Counter, which accepts None and returns an empty dict. self.assertRaises(TypeError, self.func, None) + def test_counter_data(self): + # Test that a Counter is treated like any other iterable. + data = collections.Counter([1, 1, 1, 2]) + # Since the keys of the counter are treated as data points, not the + # counts, this should raise. + self.assertRaises(statistics.StatisticsError, self.func, data) + + # === Tests for variances and standard deviations === @@ -24,6 +24,9 @@ Core and Builtins Library ------- +- Issue #20478: the statistics module now treats collections.Counter inputs + like any other iterable. + - Issue #17369: get_filename was raising an exception if the filename parameter's RFC2231 encoding was broken in certain ways. This was a regression relative to python2. |