From: Stéphane Wirtel Date: Sat, 20 Oct 2018 08:43:32 +0000 (+0200) Subject: bpo-34839: Add a 'before 3.6' in the section 'warnings' of doctest (GH-9736) X-Git-Tag: v3.8.0a1~720 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0522fd81dc6e3482c2d4c8719f1f85ad5924eede;p=thirdparty%2FPython%2Fcpython.git bpo-34839: Add a 'before 3.6' in the section 'warnings' of doctest (GH-9736) --- diff --git a/Doc/library/doctest.rst b/Doc/library/doctest.rst index 587a0a09a947..bc5a40424967 100644 --- a/Doc/library/doctest.rst +++ b/Doc/library/doctest.rst @@ -759,23 +759,27 @@ Warnings :mod:`doctest` is serious about requiring exact matches in expected output. If even a single character doesn't match, the test fails. This will probably surprise you a few times, as you learn exactly what Python does and doesn't -guarantee about output. For example, when printing a dict, Python doesn't -guarantee that the key-value pairs will be printed in any particular order, so a -test like :: +guarantee about output. For example, when printing a set, Python doesn't +guarantee that the element is printed in any particular order, so a test like :: >>> foo() - {"Hermione": "hippogryph", "Harry": "broomstick"} + {"Hermione", "Harry"} is vulnerable! One workaround is to do :: - >>> foo() == {"Hermione": "hippogryph", "Harry": "broomstick"} + >>> foo() == {"Hermione", "Harry"} True instead. Another is to do :: - >>> d = sorted(foo().items()) + >>> d = sorted(foo()) >>> d - [('Harry', 'broomstick'), ('Hermione', 'hippogryph')] + ['Harry', 'Hermione'] + +.. note:: + + Before Python 3.6, when printing a dict, Python did not guarantee that + the key-value pairs was printed in any particular order. There are others, but you get the idea.