bpo-34839: Add a 'before 3.6' in the section 'warnings' of doctest (GH-9736)

This commit is contained in:
Stéphane Wirtel 2018-10-20 10:43:32 +02:00 committed by Julien Palard
parent a5259fb05d
commit 0522fd81dc

View File

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