Issue #20478: avoid special casing Counter in statistics

Passing Counter objects to the Counter constructor is
special cased, going through iter() firsts ensures they
are handled the same way as any other iterable.

(Committing on Steven's behalf as I don't believe his
SSH key is registered yet)
This commit is contained in:
Nick Coghlan 2014-02-08 19:44:16 +10:00
parent ec1c8097c1
commit bfd68bf4ac
3 changed files with 12 additions and 3 deletions

View file

@ -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 ===