]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-45852: Fix the Counter/iter test for statistics.mode() (GH-29667) (GH-29671)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sun, 21 Nov 2021 00:27:44 +0000 (16:27 -0800)
committerGitHub <noreply@github.com>
Sun, 21 Nov 2021 00:27:44 +0000 (18:27 -0600)
Suggested by Stefan Pochmann.
(cherry picked from commit 48744db70ed519c1566c22bf123a0e1f5c69253f)

Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
Lib/test/test_statistics.py

index adccfad7b8ed1a4a8270a16acf1ba49fe683a793..2853b1b2b2f4f65fcca594b762a6d86bd60e6e51 100644 (file)
@@ -1897,10 +1897,13 @@ class TestMode(NumericTestCase, AverageMixin, UnivariateTypeMixin):
 
     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 return the first mode encountered, 1
-        self.assertEqual(self.func(data), 1)
+        # We're making sure mode() first calls iter() on its input.
+        # The concern is that a Counter of a Counter returns the original
+        # unchanged rather than counting its keys.
+        c = collections.Counter(a=1, b=2)
+        # If iter() is called, mode(c) loops over the keys, ['a', 'b'],
+        # all the counts will be 1, and the first encountered mode is 'a'.
+        self.assertEqual(self.func(c), 'a')
 
 
 class TestMultiMode(unittest.TestCase):