[Python-checkins] gh-80856: doc: reveal doctest directives (#92318)

ezio-melotti webhook-mailer at python.org
Sun May 8 12:14:59 EDT 2022


https://github.com/python/cpython/commit/7b024e3a3f77027f747da7580ed0a3ed2dec276a
commit: 7b024e3a3f77027f747da7580ed0a3ed2dec276a
branch: main
author: Davide Rizzo <sorcio at gmail.com>
committer: ezio-melotti <ezio.melotti at gmail.com>
date: 2022-05-08T18:14:55+02:00
summary:

gh-80856: doc: reveal doctest directives (#92318)

* Doc: Reveal doctest directives.

* Fix whitespace.

Co-authored-by: Julien Palard <julien at palard.fr>
Co-authored-by: Ezio Melotti <ezio.melotti at gmail.com>

files:
M Doc/library/doctest.rst

diff --git a/Doc/library/doctest.rst b/Doc/library/doctest.rst
index 30328790eefe3..be5651d15a0c9 100644
--- a/Doc/library/doctest.rst
+++ b/Doc/library/doctest.rst
@@ -714,36 +714,51 @@ above.
 An example's doctest directives modify doctest's behavior for that single
 example.  Use ``+`` to enable the named behavior, or ``-`` to disable it.
 
-For example, this test passes::
+For example, this test passes:
 
-   >>> print(list(range(20))) # doctest: +NORMALIZE_WHITESPACE
+.. doctest::
+   :no-trim-doctest-flags:
+
+   >>> print(list(range(20)))  # doctest: +NORMALIZE_WHITESPACE
    [0,   1,  2,  3,  4,  5,  6,  7,  8,  9,
    10,  11, 12, 13, 14, 15, 16, 17, 18, 19]
 
 Without the directive it would fail, both because the actual output doesn't have
 two blanks before the single-digit list elements, and because the actual output
 is on a single line.  This test also passes, and also requires a directive to do
-so::
+so:
+
+.. doctest::
+   :no-trim-doctest-flags:
 
-   >>> print(list(range(20))) # doctest: +ELLIPSIS
+   >>> print(list(range(20)))  # doctest: +ELLIPSIS
    [0, 1, ..., 18, 19]
 
 Multiple directives can be used on a single physical line, separated by
-commas::
+commas:
 
-   >>> print(list(range(20))) # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
+.. doctest::
+   :no-trim-doctest-flags:
+
+   >>> print(list(range(20)))  # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
    [0,    1, ...,   18,    19]
 
 If multiple directive comments are used for a single example, then they are
-combined::
+combined:
+
+.. doctest::
+   :no-trim-doctest-flags:
 
-   >>> print(list(range(20))) # doctest: +ELLIPSIS
-   ...                        # doctest: +NORMALIZE_WHITESPACE
+   >>> print(list(range(20)))  # doctest: +ELLIPSIS
+   ...                         # doctest: +NORMALIZE_WHITESPACE
    [0,    1, ...,   18,    19]
 
 As the previous example shows, you can add ``...`` lines to your example
 containing only directives.  This can be useful when an example is too long for
-a directive to comfortably fit on the same line::
+a directive to comfortably fit on the same line:
+
+.. doctest::
+   :no-trim-doctest-flags:
 
    >>> print(list(range(5)) + list(range(10, 20)) + list(range(30, 40)))
    ... # doctest: +ELLIPSIS
@@ -783,18 +798,23 @@ instead.  Another is to do ::
 
 There are others, but you get the idea.
 
-Another bad idea is to print things that embed an object address, like ::
+Another bad idea is to print things that embed an object address, like
+
+.. doctest::
 
-   >>> id(1.0) # certain to fail some of the time
+   >>> id(1.0)  # certain to fail some of the time  # doctest: +SKIP
    7948648
    >>> class C: pass
-   >>> C()   # the default repr() for instances embeds an address
-   <__main__.C instance at 0x00AC18F0>
+   >>> C()  # the default repr() for instances embeds an address   # doctest: +SKIP
+   <C object at 0x00AC18F0>
+
+The :const:`ELLIPSIS` directive gives a nice approach for the last example:
 
-The :const:`ELLIPSIS` directive gives a nice approach for the last example::
+.. doctest::
+   :no-trim-doctest-flags:
 
-   >>> C() #doctest: +ELLIPSIS
-   <__main__.C instance at 0x...>
+   >>> C()  # doctest: +ELLIPSIS
+   <C object at 0x...>
 
 Floating-point numbers are also subject to small output variations across
 platforms, because Python defers to the platform C library for float formatting,



More information about the Python-checkins mailing list