| :mod:`doctest` --- Test interactive Python examples | 
 | =================================================== | 
 |  | 
 | .. module:: doctest | 
 |    :synopsis: Test pieces of code within docstrings. | 
 | .. moduleauthor:: Tim Peters <tim@python.org> | 
 | .. sectionauthor:: Tim Peters <tim@python.org> | 
 | .. sectionauthor:: Moshe Zadka <moshez@debian.org> | 
 | .. sectionauthor:: Edward Loper <edloper@users.sourceforge.net> | 
 |  | 
 |  | 
 | The :mod:`doctest` module searches for pieces of text that look like interactive | 
 | Python sessions, and then executes those sessions to verify that they work | 
 | exactly as shown.  There are several common ways to use doctest: | 
 |  | 
 | * To check that a module's docstrings are up-to-date by verifying that all | 
 |   interactive examples still work as documented. | 
 |  | 
 | * To perform regression testing by verifying that interactive examples from a | 
 |   test file or a test object work as expected. | 
 |  | 
 | * To write tutorial documentation for a package, liberally illustrated with | 
 |   input-output examples.  Depending on whether the examples or the expository text | 
 |   are emphasized, this has the flavor of "literate testing" or "executable | 
 |   documentation". | 
 |  | 
 | Here's a complete but small example module:: | 
 |  | 
 |    """ | 
 |    This is the "example" module. | 
 |  | 
 |    The example module supplies one function, factorial().  For example, | 
 |  | 
 |    >>> factorial(5) | 
 |    120 | 
 |    """ | 
 |  | 
 |    def factorial(n): | 
 |        """Return the factorial of n, an exact integer >= 0. | 
 |  | 
 |        >>> [factorial(n) for n in range(6)] | 
 |        [1, 1, 2, 6, 24, 120] | 
 |        >>> factorial(30) | 
 |        265252859812191058636308480000000 | 
 |        >>> factorial(-1) | 
 |        Traceback (most recent call last): | 
 |            ... | 
 |        ValueError: n must be >= 0 | 
 |  | 
 |        Factorials of floats are OK, but the float must be an exact integer: | 
 |        >>> factorial(30.1) | 
 |        Traceback (most recent call last): | 
 |            ... | 
 |        ValueError: n must be exact integer | 
 |        >>> factorial(30.0) | 
 |        265252859812191058636308480000000 | 
 |  | 
 |        It must also not be ridiculously large: | 
 |        >>> factorial(1e100) | 
 |        Traceback (most recent call last): | 
 |            ... | 
 |        OverflowError: n too large | 
 |        """ | 
 |  | 
 |        import math | 
 |        if not n >= 0: | 
 |            raise ValueError("n must be >= 0") | 
 |        if math.floor(n) != n: | 
 |            raise ValueError("n must be exact integer") | 
 |        if n+1 == n:  # catch a value like 1e300 | 
 |            raise OverflowError("n too large") | 
 |        result = 1 | 
 |        factor = 2 | 
 |        while factor <= n: | 
 |            result *= factor | 
 |            factor += 1 | 
 |        return result | 
 |  | 
 |  | 
 |    if __name__ == "__main__": | 
 |        import doctest | 
 |        doctest.testmod() | 
 |  | 
 | If you run :file:`example.py` directly from the command line, :mod:`doctest` | 
 | works its magic:: | 
 |  | 
 |    $ python example.py | 
 |    $ | 
 |  | 
 | There's no output!  That's normal, and it means all the examples worked.  Pass | 
 | ``-v`` to the script, and :mod:`doctest` prints a detailed log of what | 
 | it's trying, and prints a summary at the end:: | 
 |  | 
 |    $ python example.py -v | 
 |    Trying: | 
 |        factorial(5) | 
 |    Expecting: | 
 |        120 | 
 |    ok | 
 |    Trying: | 
 |        [factorial(n) for n in range(6)] | 
 |    Expecting: | 
 |        [1, 1, 2, 6, 24, 120] | 
 |    ok | 
 |  | 
 | And so on, eventually ending with:: | 
 |  | 
 |    Trying: | 
 |        factorial(1e100) | 
 |    Expecting: | 
 |        Traceback (most recent call last): | 
 |            ... | 
 |        OverflowError: n too large | 
 |    ok | 
 |    2 items passed all tests: | 
 |       1 tests in __main__ | 
 |       8 tests in __main__.factorial | 
 |    9 tests in 2 items. | 
 |    9 passed and 0 failed. | 
 |    Test passed. | 
 |    $ | 
 |  | 
 | That's all you need to know to start making productive use of :mod:`doctest`! | 
 | Jump in.  The following sections provide full details.  Note that there are many | 
 | examples of doctests in the standard Python test suite and libraries. | 
 | Especially useful examples can be found in the standard test file | 
 | :file:`Lib/test/test_doctest.py`. | 
 |  | 
 |  | 
 | .. _doctest-simple-testmod: | 
 |  | 
 | Simple Usage: Checking Examples in Docstrings | 
 | --------------------------------------------- | 
 |  | 
 | The simplest way to start using doctest (but not necessarily the way you'll | 
 | continue to do it) is to end each module :mod:`M` with:: | 
 |  | 
 |    if __name__ == "__main__": | 
 |        import doctest | 
 |        doctest.testmod() | 
 |  | 
 | :mod:`doctest` then examines docstrings in module :mod:`M`. | 
 |  | 
 | Running the module as a script causes the examples in the docstrings to get | 
 | executed and verified:: | 
 |  | 
 |    python M.py | 
 |  | 
 | This won't display anything unless an example fails, in which case the failing | 
 | example(s) and the cause(s) of the failure(s) are printed to stdout, and the | 
 | final line of output is ``***Test Failed*** N failures.``, where *N* is the | 
 | number of examples that failed. | 
 |  | 
 | Run it with the ``-v`` switch instead:: | 
 |  | 
 |    python M.py -v | 
 |  | 
 | and a detailed report of all examples tried is printed to standard output, along | 
 | with assorted summaries at the end. | 
 |  | 
 | You can force verbose mode by passing ``verbose=True`` to :func:`testmod`, or | 
 | prohibit it by passing ``verbose=False``.  In either of those cases, | 
 | ``sys.argv`` is not examined by :func:`testmod` (so passing ``-v`` or not | 
 | has no effect). | 
 |  | 
 | There is also a command line shortcut for running :func:`testmod`.  You can | 
 | instruct the Python interpreter to run the doctest module directly from the | 
 | standard library and pass the module name(s) on the command line:: | 
 |  | 
 |    python -m doctest -v example.py | 
 |  | 
 | This will import :file:`example.py` as a standalone module and run | 
 | :func:`testmod` on it.  Note that this may not work correctly if the file is | 
 | part of a package and imports other submodules from that package. | 
 |  | 
 | For more information on :func:`testmod`, see section :ref:`doctest-basic-api`. | 
 |  | 
 |  | 
 | .. _doctest-simple-testfile: | 
 |  | 
 | Simple Usage: Checking Examples in a Text File | 
 | ---------------------------------------------- | 
 |  | 
 | Another simple application of doctest is testing interactive examples in a text | 
 | file.  This can be done with the :func:`testfile` function:: | 
 |  | 
 |    import doctest | 
 |    doctest.testfile("example.txt") | 
 |  | 
 | That short script executes and verifies any interactive Python examples | 
 | contained in the file :file:`example.txt`.  The file content is treated as if it | 
 | were a single giant docstring; the file doesn't need to contain a Python | 
 | program!   For example, perhaps :file:`example.txt` contains this:: | 
 |  | 
 |    The ``example`` module | 
 |    ====================== | 
 |  | 
 |    Using ``factorial`` | 
 |    ------------------- | 
 |  | 
 |    This is an example text file in reStructuredText format.  First import | 
 |    ``factorial`` from the ``example`` module: | 
 |  | 
 |        >>> from example import factorial | 
 |  | 
 |    Now use it: | 
 |  | 
 |        >>> factorial(6) | 
 |        120 | 
 |  | 
 | Running ``doctest.testfile("example.txt")`` then finds the error in this | 
 | documentation:: | 
 |  | 
 |    File "./example.txt", line 14, in example.txt | 
 |    Failed example: | 
 |        factorial(6) | 
 |    Expected: | 
 |        120 | 
 |    Got: | 
 |        720 | 
 |  | 
 | As with :func:`testmod`, :func:`testfile` won't display anything unless an | 
 | example fails.  If an example does fail, then the failing example(s) and the | 
 | cause(s) of the failure(s) are printed to stdout, using the same format as | 
 | :func:`testmod`. | 
 |  | 
 | By default, :func:`testfile` looks for files in the calling module's directory. | 
 | See section :ref:`doctest-basic-api` for a description of the optional arguments | 
 | that can be used to tell it to look for files in other locations. | 
 |  | 
 | Like :func:`testmod`, :func:`testfile`'s verbosity can be set with the | 
 | ``-v`` command-line switch or with the optional keyword argument | 
 | *verbose*. | 
 |  | 
 | There is also a command line shortcut for running :func:`testfile`.  You can | 
 | instruct the Python interpreter to run the doctest module directly from the | 
 | standard library and pass the file name(s) on the command line:: | 
 |  | 
 |    python -m doctest -v example.txt | 
 |  | 
 | Because the file name does not end with :file:`.py`, :mod:`doctest` infers that | 
 | it must be run with :func:`testfile`, not :func:`testmod`. | 
 |  | 
 | For more information on :func:`testfile`, see section :ref:`doctest-basic-api`. | 
 |  | 
 |  | 
 | .. _doctest-how-it-works: | 
 |  | 
 | How It Works | 
 | ------------ | 
 |  | 
 | This section examines in detail how doctest works: which docstrings it looks at, | 
 | how it finds interactive examples, what execution context it uses, how it | 
 | handles exceptions, and how option flags can be used to control its behavior. | 
 | This is the information that you need to know to write doctest examples; for | 
 | information about actually running doctest on these examples, see the following | 
 | sections. | 
 |  | 
 |  | 
 | .. _doctest-which-docstrings: | 
 |  | 
 | Which Docstrings Are Examined? | 
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 |  | 
 | The module docstring, and all function, class and method docstrings are | 
 | searched.  Objects imported into the module are not searched. | 
 |  | 
 | In addition, if ``M.__test__`` exists and "is true", it must be a dict, and each | 
 | entry maps a (string) name to a function object, class object, or string. | 
 | Function and class object docstrings found from ``M.__test__`` are searched, and | 
 | strings are treated as if they were docstrings.  In output, a key ``K`` in | 
 | ``M.__test__`` appears with name :: | 
 |  | 
 |    <name of M>.__test__.K | 
 |  | 
 | Any classes found are recursively searched similarly, to test docstrings in | 
 | their contained methods and nested classes. | 
 |  | 
 |  | 
 | .. _doctest-finding-examples: | 
 |  | 
 | How are Docstring Examples Recognized? | 
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 |  | 
 | In most cases a copy-and-paste of an interactive console session works fine, | 
 | but doctest isn't trying to do an exact emulation of any specific Python shell. | 
 |  | 
 | :: | 
 |  | 
 |    >>> # comments are ignored | 
 |    >>> x = 12 | 
 |    >>> x | 
 |    12 | 
 |    >>> if x == 13: | 
 |    ...     print("yes") | 
 |    ... else: | 
 |    ...     print("no") | 
 |    ...     print("NO") | 
 |    ...     print("NO!!!") | 
 |    ... | 
 |    no | 
 |    NO | 
 |    NO!!! | 
 |    >>> | 
 |  | 
 | Any expected output must immediately follow the final ``'>>> '`` or ``'... '`` | 
 | line containing the code, and the expected output (if any) extends to the next | 
 | ``'>>> '`` or all-whitespace line. | 
 |  | 
 | The fine print: | 
 |  | 
 | * Expected output cannot contain an all-whitespace line, since such a line is | 
 |   taken to signal the end of expected output.  If expected output does contain a | 
 |   blank line, put ``<BLANKLINE>`` in your doctest example each place a blank line | 
 |   is expected. | 
 |  | 
 | * All hard tab characters are expanded to spaces, using 8-column tab stops. | 
 |   Tabs in output generated by the tested code are not modified.  Because any | 
 |   hard tabs in the sample output *are* expanded, this means that if the code | 
 |   output includes hard tabs, the only way the doctest can pass is if the | 
 |   :const:`NORMALIZE_WHITESPACE` option or directive is in effect. | 
 |   Alternatively, the test can be rewritten to capture the output and compare it | 
 |   to an expected value as part of the test.  This handling of tabs in the | 
 |   source was arrived at through trial and error, and has proven to be the least | 
 |   error prone way of handling them.  It is possible to use a different | 
 |   algorithm for handling tabs by writing a custom :class:`DocTestParser` class. | 
 |  | 
 | * Output to stdout is captured, but not output to stderr (exception tracebacks | 
 |   are captured via a different means). | 
 |  | 
 | * If you continue a line via backslashing in an interactive session, or for any | 
 |   other reason use a backslash, you should use a raw docstring, which will | 
 |   preserve your backslashes exactly as you type them:: | 
 |  | 
 |      >>> def f(x): | 
 |      ...     r'''Backslashes in a raw docstring: m\n''' | 
 |      >>> print(f.__doc__) | 
 |      Backslashes in a raw docstring: m\n | 
 |  | 
 |   Otherwise, the backslash will be interpreted as part of the string. For example, | 
 |   the "\\" above would be interpreted as a newline character.  Alternatively, you | 
 |   can double each backslash in the doctest version (and not use a raw string):: | 
 |  | 
 |      >>> def f(x): | 
 |      ...     '''Backslashes in a raw docstring: m\\n''' | 
 |      >>> print(f.__doc__) | 
 |      Backslashes in a raw docstring: m\n | 
 |  | 
 | * The starting column doesn't matter:: | 
 |  | 
 |      >>> assert "Easy!" | 
 |            >>> import math | 
 |                >>> math.floor(1.9) | 
 |                1 | 
 |  | 
 |   and as many leading whitespace characters are stripped from the expected output | 
 |   as appeared in the initial ``'>>> '`` line that started the example. | 
 |  | 
 |  | 
 | .. _doctest-execution-context: | 
 |  | 
 | What's the Execution Context? | 
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 |  | 
 | By default, each time :mod:`doctest` finds a docstring to test, it uses a | 
 | *shallow copy* of :mod:`M`'s globals, so that running tests doesn't change the | 
 | module's real globals, and so that one test in :mod:`M` can't leave behind | 
 | crumbs that accidentally allow another test to work.  This means examples can | 
 | freely use any names defined at top-level in :mod:`M`, and names defined earlier | 
 | in the docstring being run. Examples cannot see names defined in other | 
 | docstrings. | 
 |  | 
 | You can force use of your own dict as the execution context by passing | 
 | ``globs=your_dict`` to :func:`testmod` or :func:`testfile` instead. | 
 |  | 
 |  | 
 | .. _doctest-exceptions: | 
 |  | 
 | What About Exceptions? | 
 | ^^^^^^^^^^^^^^^^^^^^^^ | 
 |  | 
 | No problem, provided that the traceback is the only output produced by the | 
 | example:  just paste in the traceback. [#]_ Since tracebacks contain details | 
 | that are likely to change rapidly (for example, exact file paths and line | 
 | numbers), this is one case where doctest works hard to be flexible in what it | 
 | accepts. | 
 |  | 
 | Simple example:: | 
 |  | 
 |    >>> [1, 2, 3].remove(42) | 
 |    Traceback (most recent call last): | 
 |      File "<stdin>", line 1, in ? | 
 |    ValueError: list.remove(x): x not in list | 
 |  | 
 | That doctest succeeds if :exc:`ValueError` is raised, with the ``list.remove(x): | 
 | x not in list`` detail as shown. | 
 |  | 
 | The expected output for an exception must start with a traceback header, which | 
 | may be either of the following two lines, indented the same as the first line of | 
 | the example:: | 
 |  | 
 |    Traceback (most recent call last): | 
 |    Traceback (innermost last): | 
 |  | 
 | The traceback header is followed by an optional traceback stack, whose contents | 
 | are ignored by doctest.  The traceback stack is typically omitted, or copied | 
 | verbatim from an interactive session. | 
 |  | 
 | The traceback stack is followed by the most interesting part: the line(s) | 
 | containing the exception type and detail.  This is usually the last line of a | 
 | traceback, but can extend across multiple lines if the exception has a | 
 | multi-line detail:: | 
 |  | 
 |    >>> raise ValueError('multi\n    line\ndetail') | 
 |    Traceback (most recent call last): | 
 |      File "<stdin>", line 1, in ? | 
 |    ValueError: multi | 
 |        line | 
 |    detail | 
 |  | 
 | The last three lines (starting with :exc:`ValueError`) are compared against the | 
 | exception's type and detail, and the rest are ignored. | 
 |  | 
 | Best practice is to omit the traceback stack, unless it adds significant | 
 | documentation value to the example.  So the last example is probably better as:: | 
 |  | 
 |    >>> raise ValueError('multi\n    line\ndetail') | 
 |    Traceback (most recent call last): | 
 |        ... | 
 |    ValueError: multi | 
 |        line | 
 |    detail | 
 |  | 
 | Note that tracebacks are treated very specially.  In particular, in the | 
 | rewritten example, the use of ``...`` is independent of doctest's | 
 | :const:`ELLIPSIS` option.  The ellipsis in that example could be left out, or | 
 | could just as well be three (or three hundred) commas or digits, or an indented | 
 | transcript of a Monty Python skit. | 
 |  | 
 | Some details you should read once, but won't need to remember: | 
 |  | 
 | * Doctest can't guess whether your expected output came from an exception | 
 |   traceback or from ordinary printing.  So, e.g., an example that expects | 
 |   ``ValueError: 42 is prime`` will pass whether :exc:`ValueError` is actually | 
 |   raised or if the example merely prints that traceback text.  In practice, | 
 |   ordinary output rarely begins with a traceback header line, so this doesn't | 
 |   create real problems. | 
 |  | 
 | * Each line of the traceback stack (if present) must be indented further than | 
 |   the first line of the example, *or* start with a non-alphanumeric character. | 
 |   The first line following the traceback header indented the same and starting | 
 |   with an alphanumeric is taken to be the start of the exception detail.  Of | 
 |   course this does the right thing for genuine tracebacks. | 
 |  | 
 | * When the :const:`IGNORE_EXCEPTION_DETAIL` doctest option is is specified, | 
 |   everything following the leftmost colon is ignored. | 
 |  | 
 | * The interactive shell omits the traceback header line for some | 
 |   :exc:`SyntaxError`\ s.  But doctest uses the traceback header line to | 
 |   distinguish exceptions from non-exceptions.  So in the rare case where you need | 
 |   to test a :exc:`SyntaxError` that omits the traceback header, you will need to | 
 |   manually add the traceback header line to your test example. | 
 |  | 
 | * For some :exc:`SyntaxError`\ s, Python displays the character position of the | 
 |   syntax error, using a ``^`` marker:: | 
 |  | 
 |      >>> 1 1 | 
 |        File "<stdin>", line 1 | 
 |          1 1 | 
 |            ^ | 
 |      SyntaxError: invalid syntax | 
 |  | 
 |   Since the lines showing the position of the error come before the exception type | 
 |   and detail, they are not checked by doctest.  For example, the following test | 
 |   would pass, even though it puts the ``^`` marker in the wrong location:: | 
 |  | 
 |      >>> 1 1 | 
 |      Traceback (most recent call last): | 
 |        File "<stdin>", line 1 | 
 |          1 1 | 
 |          ^ | 
 |      SyntaxError: invalid syntax | 
 |  | 
 |  | 
 | .. _doctest-options: | 
 |  | 
 | Option Flags and Directives | 
 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 |  | 
 | A number of option flags control various aspects of doctest's behavior. | 
 | Symbolic names for the flags are supplied as module constants, which can be | 
 | or'ed together and passed to various functions.  The names can also be used in | 
 | doctest directives (see below). | 
 |  | 
 | The first group of options define test semantics, controlling aspects of how | 
 | doctest decides whether actual output matches an example's expected output: | 
 |  | 
 |  | 
 | .. data:: DONT_ACCEPT_TRUE_FOR_1 | 
 |  | 
 |    By default, if an expected output block contains just ``1``, an actual output | 
 |    block containing just ``1`` or just ``True`` is considered to be a match, and | 
 |    similarly for ``0`` versus ``False``.  When :const:`DONT_ACCEPT_TRUE_FOR_1` is | 
 |    specified, neither substitution is allowed.  The default behavior caters to that | 
 |    Python changed the return type of many functions from integer to boolean; | 
 |    doctests expecting "little integer" output still work in these cases.  This | 
 |    option will probably go away, but not for several years. | 
 |  | 
 |  | 
 | .. data:: DONT_ACCEPT_BLANKLINE | 
 |  | 
 |    By default, if an expected output block contains a line containing only the | 
 |    string ``<BLANKLINE>``, then that line will match a blank line in the actual | 
 |    output.  Because a genuinely blank line delimits the expected output, this is | 
 |    the only way to communicate that a blank line is expected.  When | 
 |    :const:`DONT_ACCEPT_BLANKLINE` is specified, this substitution is not allowed. | 
 |  | 
 |  | 
 | .. data:: NORMALIZE_WHITESPACE | 
 |  | 
 |    When specified, all sequences of whitespace (blanks and newlines) are treated as | 
 |    equal.  Any sequence of whitespace within the expected output will match any | 
 |    sequence of whitespace within the actual output. By default, whitespace must | 
 |    match exactly. :const:`NORMALIZE_WHITESPACE` is especially useful when a line of | 
 |    expected output is very long, and you want to wrap it across multiple lines in | 
 |    your source. | 
 |  | 
 |  | 
 | .. data:: ELLIPSIS | 
 |  | 
 |    When specified, an ellipsis marker (``...``) in the expected output can match | 
 |    any substring in the actual output.  This includes substrings that span line | 
 |    boundaries, and empty substrings, so it's best to keep usage of this simple. | 
 |    Complicated uses can lead to the same kinds of "oops, it matched too much!" | 
 |    surprises that ``.*`` is prone to in regular expressions. | 
 |  | 
 |  | 
 | .. data:: IGNORE_EXCEPTION_DETAIL | 
 |  | 
 |    When specified, an example that expects an exception passes if an exception of | 
 |    the expected type is raised, even if the exception detail does not match.  For | 
 |    example, an example expecting ``ValueError: 42`` will pass if the actual | 
 |    exception raised is ``ValueError: 3*14``, but will fail, e.g., if | 
 |    :exc:`TypeError` is raised. | 
 |  | 
 |    Note that a similar effect can be obtained using :const:`ELLIPSIS`, and | 
 |    :const:`IGNORE_EXCEPTION_DETAIL` may go away when Python releases prior to 2.4 | 
 |    become uninteresting.  Until then, :const:`IGNORE_EXCEPTION_DETAIL` is the only | 
 |    clear way to write a doctest that doesn't care about the exception detail yet | 
 |    continues to pass under Python releases prior to 2.4 (doctest directives appear | 
 |    to be comments to them).  For example, :: | 
 |  | 
 |       >>> (1, 2)[3] = 'moo' #doctest: +IGNORE_EXCEPTION_DETAIL | 
 |       Traceback (most recent call last): | 
 |         File "<stdin>", line 1, in ? | 
 |       TypeError: object doesn't support item assignment | 
 |  | 
 |    passes under Python 2.4 and Python 2.3.  The detail changed in 2.4, to say "does | 
 |    not" instead of "doesn't". | 
 |  | 
 |  | 
 | .. data:: SKIP | 
 |  | 
 |    When specified, do not run the example at all.  This can be useful in contexts | 
 |    where doctest examples serve as both documentation and test cases, and an | 
 |    example should be included for documentation purposes, but should not be | 
 |    checked.  E.g., the example's output might be random; or the example might | 
 |    depend on resources which would be unavailable to the test driver. | 
 |  | 
 |    The SKIP flag can also be used for temporarily "commenting out" examples. | 
 |  | 
 |  | 
 | .. data:: COMPARISON_FLAGS | 
 |  | 
 |    A bitmask or'ing together all the comparison flags above. | 
 |  | 
 | The second group of options controls how test failures are reported: | 
 |  | 
 |  | 
 | .. data:: REPORT_UDIFF | 
 |  | 
 |    When specified, failures that involve multi-line expected and actual outputs are | 
 |    displayed using a unified diff. | 
 |  | 
 |  | 
 | .. data:: REPORT_CDIFF | 
 |  | 
 |    When specified, failures that involve multi-line expected and actual outputs | 
 |    will be displayed using a context diff. | 
 |  | 
 |  | 
 | .. data:: REPORT_NDIFF | 
 |  | 
 |    When specified, differences are computed by ``difflib.Differ``, using the same | 
 |    algorithm as the popular :file:`ndiff.py` utility. This is the only method that | 
 |    marks differences within lines as well as across lines.  For example, if a line | 
 |    of expected output contains digit ``1`` where actual output contains letter | 
 |    ``l``, a line is inserted with a caret marking the mismatching column positions. | 
 |  | 
 |  | 
 | .. data:: REPORT_ONLY_FIRST_FAILURE | 
 |  | 
 |    When specified, display the first failing example in each doctest, but suppress | 
 |    output for all remaining examples.  This will prevent doctest from reporting | 
 |    correct examples that break because of earlier failures; but it might also hide | 
 |    incorrect examples that fail independently of the first failure.  When | 
 |    :const:`REPORT_ONLY_FIRST_FAILURE` is specified, the remaining examples are | 
 |    still run, and still count towards the total number of failures reported; only | 
 |    the output is suppressed. | 
 |  | 
 |  | 
 | .. data:: REPORTING_FLAGS | 
 |  | 
 |    A bitmask or'ing together all the reporting flags above. | 
 |  | 
 | "Doctest directives" may be used to modify the option flags for individual | 
 | examples.  Doctest directives are expressed as a special Python comment | 
 | following an example's source code: | 
 |  | 
 | .. productionlist:: doctest | 
 |    directive: "#" "doctest:" `directive_options` | 
 |    directive_options: `directive_option` ("," `directive_option`)\* | 
 |    directive_option: `on_or_off` `directive_option_name` | 
 |    on_or_off: "+" \| "-" | 
 |    directive_option_name: "DONT_ACCEPT_BLANKLINE" \| "NORMALIZE_WHITESPACE" \| ... | 
 |  | 
 | Whitespace is not allowed between the ``+`` or ``-`` and the directive option | 
 | name.  The directive option name can be any of the option flag names explained | 
 | 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:: | 
 |  | 
 |    >>> 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:: | 
 |  | 
 |    >>> print(list(range(20))) # doctest: +ELLIPSIS | 
 |    [0, 1, ..., 18, 19] | 
 |  | 
 | Multiple directives can be used on a single physical line, separated by commas:: | 
 |  | 
 |    >>> 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:: | 
 |  | 
 |    >>> 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:: | 
 |  | 
 |    >>> print(list(range(5)) + list(range(10, 20)) + list(range(30, 40))) | 
 |    ... # doctest: +ELLIPSIS | 
 |    [0, ..., 4, 10, ..., 19, 30, ..., 39] | 
 |  | 
 | Note that since all options are disabled by default, and directives apply only | 
 | to the example they appear in, enabling options (via ``+`` in a directive) is | 
 | usually the only meaningful choice.  However, option flags can also be passed to | 
 | functions that run doctests, establishing different defaults.  In such cases, | 
 | disabling an option via ``-`` in a directive can be useful. | 
 |  | 
 |  | 
 | There's also a way to register new option flag names, although this isn't useful | 
 | unless you intend to extend :mod:`doctest` internals via subclassing: | 
 |  | 
 |  | 
 | .. function:: register_optionflag(name) | 
 |  | 
 |    Create a new option flag with a given name, and return the new flag's integer | 
 |    value.  :func:`register_optionflag` can be used when subclassing | 
 |    :class:`OutputChecker` or :class:`DocTestRunner` to create new options that are | 
 |    supported by your subclasses.  :func:`register_optionflag` should always be | 
 |    called using the following idiom:: | 
 |  | 
 |       MY_FLAG = register_optionflag('MY_FLAG') | 
 |  | 
 |  | 
 | .. _doctest-warnings: | 
 |  | 
 | 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 :: | 
 |  | 
 |    >>> foo() | 
 |    {"Hermione": "hippogryph", "Harry": "broomstick"} | 
 |  | 
 | is vulnerable!  One workaround is to do :: | 
 |  | 
 |    >>> foo() == {"Hermione": "hippogryph", "Harry": "broomstick"} | 
 |    True | 
 |  | 
 | instead.  Another is to do :: | 
 |  | 
 |    >>> d = sorted(foo().items()) | 
 |    >>> d | 
 |    [('Harry', 'broomstick'), ('Hermione', 'hippogryph')] | 
 |  | 
 | There are others, but you get the idea. | 
 |  | 
 | Another bad idea is to print things that embed an object address, like :: | 
 |  | 
 |    >>> id(1.0) # certain to fail some of the time | 
 |    7948648 | 
 |    >>> class C: pass | 
 |    >>> C()   # the default repr() for instances embeds an address | 
 |    <__main__.C instance at 0x00AC18F0> | 
 |  | 
 | The :const:`ELLIPSIS` directive gives a nice approach for the last example:: | 
 |  | 
 |    >>> C() #doctest: +ELLIPSIS | 
 |    <__main__.C instance 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, | 
 | and C libraries vary widely in quality here. :: | 
 |  | 
 |    >>> 1./7  # risky | 
 |    0.14285714285714285 | 
 |    >>> print(1./7) # safer | 
 |    0.142857142857 | 
 |    >>> print(round(1./7, 6)) # much safer | 
 |    0.142857 | 
 |  | 
 | Numbers of the form ``I/2.**J`` are safe across all platforms, and I often | 
 | contrive doctest examples to produce numbers of that form:: | 
 |  | 
 |    >>> 3./4  # utterly safe | 
 |    0.75 | 
 |  | 
 | Simple fractions are also easier for people to understand, and that makes for | 
 | better documentation. | 
 |  | 
 |  | 
 | .. _doctest-basic-api: | 
 |  | 
 | Basic API | 
 | --------- | 
 |  | 
 | The functions :func:`testmod` and :func:`testfile` provide a simple interface to | 
 | doctest that should be sufficient for most basic uses.  For a less formal | 
 | introduction to these two functions, see sections :ref:`doctest-simple-testmod` | 
 | and :ref:`doctest-simple-testfile`. | 
 |  | 
 |  | 
 | .. function:: testfile(filename, module_relative=True, name=None, package=None, globs=None, verbose=None, report=True, optionflags=0, extraglobs=None, raise_on_error=False, parser=DocTestParser(), encoding=None) | 
 |  | 
 |    All arguments except *filename* are optional, and should be specified in keyword | 
 |    form. | 
 |  | 
 |    Test examples in the file named *filename*.  Return ``(failure_count, | 
 |    test_count)``. | 
 |  | 
 |    Optional argument *module_relative* specifies how the filename should be | 
 |    interpreted: | 
 |  | 
 |    * If *module_relative* is ``True`` (the default), then *filename* specifies an | 
 |      OS-independent module-relative path.  By default, this path is relative to the | 
 |      calling module's directory; but if the *package* argument is specified, then it | 
 |      is relative to that package.  To ensure OS-independence, *filename* should use | 
 |      ``/`` characters to separate path segments, and may not be an absolute path | 
 |      (i.e., it may not begin with ``/``). | 
 |  | 
 |    * If *module_relative* is ``False``, then *filename* specifies an OS-specific | 
 |      path.  The path may be absolute or relative; relative paths are resolved with | 
 |      respect to the current working directory. | 
 |  | 
 |    Optional argument *name* gives the name of the test; by default, or if ``None``, | 
 |    ``os.path.basename(filename)`` is used. | 
 |  | 
 |    Optional argument *package* is a Python package or the name of a Python package | 
 |    whose directory should be used as the base directory for a module-relative | 
 |    filename.  If no package is specified, then the calling module's directory is | 
 |    used as the base directory for module-relative filenames.  It is an error to | 
 |    specify *package* if *module_relative* is ``False``. | 
 |  | 
 |    Optional argument *globs* gives a dict to be used as the globals when executing | 
 |    examples.  A new shallow copy of this dict is created for the doctest, so its | 
 |    examples start with a clean slate. By default, or if ``None``, a new empty dict | 
 |    is used. | 
 |  | 
 |    Optional argument *extraglobs* gives a dict merged into the globals used to | 
 |    execute examples.  This works like :meth:`dict.update`:  if *globs* and | 
 |    *extraglobs* have a common key, the associated value in *extraglobs* appears in | 
 |    the combined dict.  By default, or if ``None``, no extra globals are used.  This | 
 |    is an advanced feature that allows parameterization of doctests.  For example, a | 
 |    doctest can be written for a base class, using a generic name for the class, | 
 |    then reused to test any number of subclasses by passing an *extraglobs* dict | 
 |    mapping the generic name to the subclass to be tested. | 
 |  | 
 |    Optional argument *verbose* prints lots of stuff if true, and prints only | 
 |    failures if false; by default, or if ``None``, it's true if and only if ``'-v'`` | 
 |    is in ``sys.argv``. | 
 |  | 
 |    Optional argument *report* prints a summary at the end when true, else prints | 
 |    nothing at the end.  In verbose mode, the summary is detailed, else the summary | 
 |    is very brief (in fact, empty if all tests passed). | 
 |  | 
 |    Optional argument *optionflags* or's together option flags.  See section | 
 |    :ref:`doctest-options`. | 
 |  | 
 |    Optional argument *raise_on_error* defaults to false.  If true, an exception is | 
 |    raised upon the first failure or unexpected exception in an example.  This | 
 |    allows failures to be post-mortem debugged. Default behavior is to continue | 
 |    running examples. | 
 |  | 
 |    Optional argument *parser* specifies a :class:`DocTestParser` (or subclass) that | 
 |    should be used to extract tests from the files.  It defaults to a normal parser | 
 |    (i.e., ``DocTestParser()``). | 
 |  | 
 |    Optional argument *encoding* specifies an encoding that should be used to | 
 |    convert the file to unicode. | 
 |  | 
 |  | 
 | .. function:: testmod(m=None, name=None, globs=None, verbose=None, report=True, optionflags=0, extraglobs=None, raise_on_error=False, exclude_empty=False) | 
 |  | 
 |    All arguments are optional, and all except for *m* should be specified in | 
 |    keyword form. | 
 |  | 
 |    Test examples in docstrings in functions and classes reachable from module *m* | 
 |    (or module :mod:`__main__` if *m* is not supplied or is ``None``), starting with | 
 |    ``m.__doc__``. | 
 |  | 
 |    Also test examples reachable from dict ``m.__test__``, if it exists and is not | 
 |    ``None``.  ``m.__test__`` maps names (strings) to functions, classes and | 
 |    strings; function and class docstrings are searched for examples; strings are | 
 |    searched directly, as if they were docstrings. | 
 |  | 
 |    Only docstrings attached to objects belonging to module *m* are searched. | 
 |  | 
 |    Return ``(failure_count, test_count)``. | 
 |  | 
 |    Optional argument *name* gives the name of the module; by default, or if | 
 |    ``None``, ``m.__name__`` is used. | 
 |  | 
 |    Optional argument *exclude_empty* defaults to false.  If true, objects for which | 
 |    no doctests are found are excluded from consideration. The default is a backward | 
 |    compatibility hack, so that code still using :meth:`doctest.master.summarize` in | 
 |    conjunction with :func:`testmod` continues to get output for objects with no | 
 |    tests. The *exclude_empty* argument to the newer :class:`DocTestFinder` | 
 |    constructor defaults to true. | 
 |  | 
 |    Optional arguments *extraglobs*, *verbose*, *report*, *optionflags*, | 
 |    *raise_on_error*, and *globs* are the same as for function :func:`testfile` | 
 |    above, except that *globs* defaults to ``m.__dict__``. | 
 |  | 
 |  | 
 | There's also a function to run the doctests associated with a single object. | 
 | This function is provided for backward compatibility.  There are no plans to | 
 | deprecate it, but it's rarely useful: | 
 |  | 
 |  | 
 | .. function:: run_docstring_examples(f, globs, verbose=False, name="NoName", compileflags=None, optionflags=0) | 
 |  | 
 |    Test examples associated with object *f*; for example, *f* may be a module, | 
 |    function, or class object. | 
 |  | 
 |    A shallow copy of dictionary argument *globs* is used for the execution context. | 
 |  | 
 |    Optional argument *name* is used in failure messages, and defaults to | 
 |    ``"NoName"``. | 
 |  | 
 |    If optional argument *verbose* is true, output is generated even if there are no | 
 |    failures.  By default, output is generated only in case of an example failure. | 
 |  | 
 |    Optional argument *compileflags* gives the set of flags that should be used by | 
 |    the Python compiler when running the examples.  By default, or if ``None``, | 
 |    flags are deduced corresponding to the set of future features found in *globs*. | 
 |  | 
 |    Optional argument *optionflags* works as for function :func:`testfile` above. | 
 |  | 
 |  | 
 | .. _doctest-unittest-api: | 
 |  | 
 | Unittest API | 
 | ------------ | 
 |  | 
 | As your collection of doctest'ed modules grows, you'll want a way to run all | 
 | their doctests systematically.  :mod:`doctest` provides two functions that can | 
 | be used to create :mod:`unittest` test suites from modules and text files | 
 | containing doctests.  These test suites can then be run using :mod:`unittest` | 
 | test runners:: | 
 |  | 
 |    import unittest | 
 |    import doctest | 
 |    import my_module_with_doctests, and_another | 
 |  | 
 |    suite = unittest.TestSuite() | 
 |    for mod in my_module_with_doctests, and_another: | 
 |        suite.addTest(doctest.DocTestSuite(mod)) | 
 |    runner = unittest.TextTestRunner() | 
 |    runner.run(suite) | 
 |  | 
 | There are two main functions for creating :class:`unittest.TestSuite` instances | 
 | from text files and modules with doctests: | 
 |  | 
 |  | 
 | .. function:: DocFileSuite(*paths, module_relative=True, package=None, setUp=None, tearDown=None, globs=None, optionflags=0, parser=DocTestParser(), encoding=None) | 
 |  | 
 |    Convert doctest tests from one or more text files to a | 
 |    :class:`unittest.TestSuite`. | 
 |  | 
 |    The returned :class:`unittest.TestSuite` is to be run by the unittest framework | 
 |    and runs the interactive examples in each file.  If an example in any file | 
 |    fails, then the synthesized unit test fails, and a :exc:`failureException` | 
 |    exception is raised showing the name of the file containing the test and a | 
 |    (sometimes approximate) line number. | 
 |  | 
 |    Pass one or more paths (as strings) to text files to be examined. | 
 |  | 
 |    Options may be provided as keyword arguments: | 
 |  | 
 |    Optional argument *module_relative* specifies how the filenames in *paths* | 
 |    should be interpreted: | 
 |  | 
 |    * If *module_relative* is ``True`` (the default), then each filename in | 
 |      *paths* specifies an OS-independent module-relative path.  By default, this | 
 |      path is relative to the calling module's directory; but if the *package* | 
 |      argument is specified, then it is relative to that package.  To ensure | 
 |      OS-independence, each filename should use ``/`` characters to separate path | 
 |      segments, and may not be an absolute path (i.e., it may not begin with | 
 |      ``/``). | 
 |  | 
 |    * If *module_relative* is ``False``, then each filename in *paths* specifies | 
 |      an OS-specific path.  The path may be absolute or relative; relative paths | 
 |      are resolved with respect to the current working directory. | 
 |  | 
 |    Optional argument *package* is a Python package or the name of a Python | 
 |    package whose directory should be used as the base directory for | 
 |    module-relative filenames in *paths*.  If no package is specified, then the | 
 |    calling module's directory is used as the base directory for module-relative | 
 |    filenames.  It is an error to specify *package* if *module_relative* is | 
 |    ``False``. | 
 |  | 
 |    Optional argument *setUp* specifies a set-up function for the test suite. | 
 |    This is called before running the tests in each file.  The *setUp* function | 
 |    will be passed a :class:`DocTest` object.  The setUp function can access the | 
 |    test globals as the *globs* attribute of the test passed. | 
 |  | 
 |    Optional argument *tearDown* specifies a tear-down function for the test | 
 |    suite.  This is called after running the tests in each file.  The *tearDown* | 
 |    function will be passed a :class:`DocTest` object.  The setUp function can | 
 |    access the test globals as the *globs* attribute of the test passed. | 
 |  | 
 |    Optional argument *globs* is a dictionary containing the initial global | 
 |    variables for the tests.  A new copy of this dictionary is created for each | 
 |    test.  By default, *globs* is a new empty dictionary. | 
 |  | 
 |    Optional argument *optionflags* specifies the default doctest options for the | 
 |    tests, created by or-ing together individual option flags.  See section | 
 |    :ref:`doctest-options`. See function :func:`set_unittest_reportflags` below | 
 |    for a better way to set reporting options. | 
 |  | 
 |    Optional argument *parser* specifies a :class:`DocTestParser` (or subclass) | 
 |    that should be used to extract tests from the files.  It defaults to a normal | 
 |    parser (i.e., ``DocTestParser()``). | 
 |  | 
 |    Optional argument *encoding* specifies an encoding that should be used to | 
 |    convert the file to unicode. | 
 |  | 
 |    The global ``__file__`` is added to the globals provided to doctests loaded | 
 |    from a text file using :func:`DocFileSuite`. | 
 |  | 
 |  | 
 | .. function:: DocTestSuite(module=None, globs=None, extraglobs=None, test_finder=None, setUp=None, tearDown=None, checker=None) | 
 |  | 
 |    Convert doctest tests for a module to a :class:`unittest.TestSuite`. | 
 |  | 
 |    The returned :class:`unittest.TestSuite` is to be run by the unittest framework | 
 |    and runs each doctest in the module.  If any of the doctests fail, then the | 
 |    synthesized unit test fails, and a :exc:`failureException` exception is raised | 
 |    showing the name of the file containing the test and a (sometimes approximate) | 
 |    line number. | 
 |  | 
 |    Optional argument *module* provides the module to be tested.  It can be a module | 
 |    object or a (possibly dotted) module name.  If not specified, the module calling | 
 |    this function is used. | 
 |  | 
 |    Optional argument *globs* is a dictionary containing the initial global | 
 |    variables for the tests.  A new copy of this dictionary is created for each | 
 |    test.  By default, *globs* is a new empty dictionary. | 
 |  | 
 |    Optional argument *extraglobs* specifies an extra set of global variables, which | 
 |    is merged into *globs*.  By default, no extra globals are used. | 
 |  | 
 |    Optional argument *test_finder* is the :class:`DocTestFinder` object (or a | 
 |    drop-in replacement) that is used to extract doctests from the module. | 
 |  | 
 |    Optional arguments *setUp*, *tearDown*, and *optionflags* are the same as for | 
 |    function :func:`DocFileSuite` above. | 
 |  | 
 |    This function uses the same search technique as :func:`testmod`. | 
 |  | 
 |  | 
 | Under the covers, :func:`DocTestSuite` creates a :class:`unittest.TestSuite` out | 
 | of :class:`doctest.DocTestCase` instances, and :class:`DocTestCase` is a | 
 | subclass of :class:`unittest.TestCase`. :class:`DocTestCase` isn't documented | 
 | here (it's an internal detail), but studying its code can answer questions about | 
 | the exact details of :mod:`unittest` integration. | 
 |  | 
 | Similarly, :func:`DocFileSuite` creates a :class:`unittest.TestSuite` out of | 
 | :class:`doctest.DocFileCase` instances, and :class:`DocFileCase` is a subclass | 
 | of :class:`DocTestCase`. | 
 |  | 
 | So both ways of creating a :class:`unittest.TestSuite` run instances of | 
 | :class:`DocTestCase`.  This is important for a subtle reason: when you run | 
 | :mod:`doctest` functions yourself, you can control the :mod:`doctest` options in | 
 | use directly, by passing option flags to :mod:`doctest` functions.  However, if | 
 | you're writing a :mod:`unittest` framework, :mod:`unittest` ultimately controls | 
 | when and how tests get run.  The framework author typically wants to control | 
 | :mod:`doctest` reporting options (perhaps, e.g., specified by command line | 
 | options), but there's no way to pass options through :mod:`unittest` to | 
 | :mod:`doctest` test runners. | 
 |  | 
 | For this reason, :mod:`doctest` also supports a notion of :mod:`doctest` | 
 | reporting flags specific to :mod:`unittest` support, via this function: | 
 |  | 
 |  | 
 | .. function:: set_unittest_reportflags(flags) | 
 |  | 
 |    Set the :mod:`doctest` reporting flags to use. | 
 |  | 
 |    Argument *flags* or's together option flags.  See section | 
 |    :ref:`doctest-options`.  Only "reporting flags" can be used. | 
 |  | 
 |    This is a module-global setting, and affects all future doctests run by module | 
 |    :mod:`unittest`:  the :meth:`runTest` method of :class:`DocTestCase` looks at | 
 |    the option flags specified for the test case when the :class:`DocTestCase` | 
 |    instance was constructed.  If no reporting flags were specified (which is the | 
 |    typical and expected case), :mod:`doctest`'s :mod:`unittest` reporting flags are | 
 |    or'ed into the option flags, and the option flags so augmented are passed to the | 
 |    :class:`DocTestRunner` instance created to run the doctest.  If any reporting | 
 |    flags were specified when the :class:`DocTestCase` instance was constructed, | 
 |    :mod:`doctest`'s :mod:`unittest` reporting flags are ignored. | 
 |  | 
 |    The value of the :mod:`unittest` reporting flags in effect before the function | 
 |    was called is returned by the function. | 
 |  | 
 |  | 
 | .. _doctest-advanced-api: | 
 |  | 
 | Advanced API | 
 | ------------ | 
 |  | 
 | The basic API is a simple wrapper that's intended to make doctest easy to use. | 
 | It is fairly flexible, and should meet most users' needs; however, if you | 
 | require more fine-grained control over testing, or wish to extend doctest's | 
 | capabilities, then you should use the advanced API. | 
 |  | 
 | The advanced API revolves around two container classes, which are used to store | 
 | the interactive examples extracted from doctest cases: | 
 |  | 
 | * :class:`Example`: A single Python :term:`statement`, paired with its expected | 
 |   output. | 
 |  | 
 | * :class:`DocTest`: A collection of :class:`Example`\ s, typically extracted | 
 |   from a single docstring or text file. | 
 |  | 
 | Additional processing classes are defined to find, parse, and run, and check | 
 | doctest examples: | 
 |  | 
 | * :class:`DocTestFinder`: Finds all docstrings in a given module, and uses a | 
 |   :class:`DocTestParser` to create a :class:`DocTest` from every docstring that | 
 |   contains interactive examples. | 
 |  | 
 | * :class:`DocTestParser`: Creates a :class:`DocTest` object from a string (such | 
 |   as an object's docstring). | 
 |  | 
 | * :class:`DocTestRunner`: Executes the examples in a :class:`DocTest`, and uses | 
 |   an :class:`OutputChecker` to verify their output. | 
 |  | 
 | * :class:`OutputChecker`: Compares the actual output from a doctest example with | 
 |   the expected output, and decides whether they match. | 
 |  | 
 | The relationships among these processing classes are summarized in the following | 
 | diagram:: | 
 |  | 
 |                                list of: | 
 |    +------+                   +---------+ | 
 |    |module| --DocTestFinder-> | DocTest | --DocTestRunner-> results | 
 |    +------+    |        ^     +---------+     |       ^    (printed) | 
 |                |        |     | Example |     |       | | 
 |                v        |     |   ...   |     v       | | 
 |               DocTestParser   | Example |   OutputChecker | 
 |                               +---------+ | 
 |  | 
 |  | 
 | .. _doctest-doctest: | 
 |  | 
 | DocTest Objects | 
 | ^^^^^^^^^^^^^^^ | 
 |  | 
 |  | 
 | .. class:: DocTest(examples, globs, name, filename, lineno, docstring) | 
 |  | 
 |    A collection of doctest examples that should be run in a single namespace.  The | 
 |    constructor arguments are used to initialize the member variables of the same | 
 |    names. | 
 |  | 
 |  | 
 |    :class:`DocTest` defines the following member variables.  They are initialized by | 
 |    the constructor, and should not be modified directly. | 
 |  | 
 |  | 
 |    .. attribute:: examples | 
 |  | 
 |       A list of :class:`Example` objects encoding the individual interactive Python | 
 |       examples that should be run by this test. | 
 |  | 
 |  | 
 |    .. attribute:: globs | 
 |  | 
 |       The namespace (aka globals) that the examples should be run in. This is a | 
 |       dictionary mapping names to values.  Any changes to the namespace made by the | 
 |       examples (such as binding new variables) will be reflected in :attr:`globs` | 
 |       after the test is run. | 
 |  | 
 |  | 
 |    .. attribute:: name | 
 |  | 
 |       A string name identifying the :class:`DocTest`.  Typically, this is the name | 
 |       of the object or file that the test was extracted from. | 
 |  | 
 |  | 
 |    .. attribute:: filename | 
 |  | 
 |       The name of the file that this :class:`DocTest` was extracted from; or | 
 |       ``None`` if the filename is unknown, or if the :class:`DocTest` was not | 
 |       extracted from a file. | 
 |  | 
 |  | 
 |    .. attribute:: lineno | 
 |  | 
 |       The line number within :attr:`filename` where this :class:`DocTest` begins, or | 
 |       ``None`` if the line number is unavailable.  This line number is zero-based | 
 |       with respect to the beginning of the file. | 
 |  | 
 |  | 
 |    .. attribute:: docstring | 
 |  | 
 |       The string that the test was extracted from, or 'None' if the string is | 
 |       unavailable, or if the test was not extracted from a string. | 
 |  | 
 |  | 
 | .. _doctest-example: | 
 |  | 
 | Example Objects | 
 | ^^^^^^^^^^^^^^^ | 
 |  | 
 |  | 
 | .. class:: Example(source, want, exc_msg=None, lineno=0, indent=0, options=None) | 
 |  | 
 |    A single interactive example, consisting of a Python statement and its expected | 
 |    output.  The constructor arguments are used to initialize the member variables | 
 |    of the same names. | 
 |  | 
 |  | 
 |    :class:`Example` defines the following member variables.  They are initialized by | 
 |    the constructor, and should not be modified directly. | 
 |  | 
 |  | 
 |    .. attribute:: source | 
 |  | 
 |       A string containing the example's source code.  This source code consists of a | 
 |       single Python statement, and always ends with a newline; the constructor adds | 
 |       a newline when necessary. | 
 |  | 
 |  | 
 |    .. attribute:: want | 
 |  | 
 |       The expected output from running the example's source code (either from | 
 |       stdout, or a traceback in case of exception).  :attr:`want` ends with a | 
 |       newline unless no output is expected, in which case it's an empty string.  The | 
 |       constructor adds a newline when necessary. | 
 |  | 
 |  | 
 |    .. attribute:: exc_msg | 
 |  | 
 |       The exception message generated by the example, if the example is expected to | 
 |       generate an exception; or ``None`` if it is not expected to generate an | 
 |       exception.  This exception message is compared against the return value of | 
 |       :func:`traceback.format_exception_only`.  :attr:`exc_msg` ends with a newline | 
 |       unless it's ``None``.  The constructor adds a newline if needed. | 
 |  | 
 |  | 
 |    .. attribute:: lineno | 
 |  | 
 |       The line number within the string containing this example where the example | 
 |       begins.  This line number is zero-based with respect to the beginning of the | 
 |       containing string. | 
 |  | 
 |  | 
 |    .. attribute:: indent | 
 |  | 
 |       The example's indentation in the containing string, i.e., the number of space | 
 |       characters that precede the example's first prompt. | 
 |  | 
 |  | 
 |    .. attribute:: options | 
 |  | 
 |       A dictionary mapping from option flags to ``True`` or ``False``, which is used | 
 |       to override default options for this example.  Any option flags not contained | 
 |       in this dictionary are left at their default value (as specified by the | 
 |       :class:`DocTestRunner`'s :attr:`optionflags`). By default, no options are set. | 
 |  | 
 |  | 
 | .. _doctest-doctestfinder: | 
 |  | 
 | DocTestFinder objects | 
 | ^^^^^^^^^^^^^^^^^^^^^ | 
 |  | 
 |  | 
 | .. class:: DocTestFinder(verbose=False, parser=DocTestParser(), recurse=True, exclude_empty=True) | 
 |  | 
 |    A processing class used to extract the :class:`DocTest`\ s that are relevant to | 
 |    a given object, from its docstring and the docstrings of its contained objects. | 
 |    :class:`DocTest`\ s can currently be extracted from the following object types: | 
 |    modules, functions, classes, methods, staticmethods, classmethods, and | 
 |    properties. | 
 |  | 
 |    The optional argument *verbose* can be used to display the objects searched by | 
 |    the finder.  It defaults to ``False`` (no output). | 
 |  | 
 |    The optional argument *parser* specifies the :class:`DocTestParser` object (or a | 
 |    drop-in replacement) that is used to extract doctests from docstrings. | 
 |  | 
 |    If the optional argument *recurse* is false, then :meth:`DocTestFinder.find` | 
 |    will only examine the given object, and not any contained objects. | 
 |  | 
 |    If the optional argument *exclude_empty* is false, then | 
 |    :meth:`DocTestFinder.find` will include tests for objects with empty docstrings. | 
 |  | 
 |  | 
 |    :class:`DocTestFinder` defines the following method: | 
 |  | 
 |  | 
 |    .. method:: find(obj[, name][, module][, globs][, extraglobs]) | 
 |  | 
 |       Return a list of the :class:`DocTest`\ s that are defined by *obj*'s | 
 |       docstring, or by any of its contained objects' docstrings. | 
 |  | 
 |       The optional argument *name* specifies the object's name; this name will be | 
 |       used to construct names for the returned :class:`DocTest`\ s.  If *name* is | 
 |       not specified, then ``obj.__name__`` is used. | 
 |  | 
 |       The optional parameter *module* is the module that contains the given object. | 
 |       If the module is not specified or is None, then the test finder will attempt | 
 |       to automatically determine the correct module.  The object's module is used: | 
 |  | 
 |       * As a default namespace, if *globs* is not specified. | 
 |  | 
 |       * To prevent the DocTestFinder from extracting DocTests from objects that are | 
 |         imported from other modules.  (Contained objects with modules other than | 
 |         *module* are ignored.) | 
 |  | 
 |       * To find the name of the file containing the object. | 
 |  | 
 |       * To help find the line number of the object within its file. | 
 |  | 
 |       If *module* is ``False``, no attempt to find the module will be made.  This is | 
 |       obscure, of use mostly in testing doctest itself: if *module* is ``False``, or | 
 |       is ``None`` but cannot be found automatically, then all objects are considered | 
 |       to belong to the (non-existent) module, so all contained objects will | 
 |       (recursively) be searched for doctests. | 
 |  | 
 |       The globals for each :class:`DocTest` is formed by combining *globs* and | 
 |       *extraglobs* (bindings in *extraglobs* override bindings in *globs*).  A new | 
 |       shallow copy of the globals dictionary is created for each :class:`DocTest`. | 
 |       If *globs* is not specified, then it defaults to the module's *__dict__*, if | 
 |       specified, or ``{}`` otherwise.  If *extraglobs* is not specified, then it | 
 |       defaults to ``{}``. | 
 |  | 
 |  | 
 | .. _doctest-doctestparser: | 
 |  | 
 | DocTestParser objects | 
 | ^^^^^^^^^^^^^^^^^^^^^ | 
 |  | 
 |  | 
 | .. class:: DocTestParser() | 
 |  | 
 |    A processing class used to extract interactive examples from a string, and use | 
 |    them to create a :class:`DocTest` object. | 
 |  | 
 |  | 
 |    :class:`DocTestParser` defines the following methods: | 
 |  | 
 |  | 
 |    .. method:: get_doctest(string, globs, name, filename, lineno) | 
 |  | 
 |       Extract all doctest examples from the given string, and collect them into a | 
 |       :class:`DocTest` object. | 
 |  | 
 |       *globs*, *name*, *filename*, and *lineno* are attributes for the new | 
 |       :class:`DocTest` object.  See the documentation for :class:`DocTest` for more | 
 |       information. | 
 |  | 
 |  | 
 |    .. method:: get_examples(string, name='<string>') | 
 |  | 
 |       Extract all doctest examples from the given string, and return them as a list | 
 |       of :class:`Example` objects.  Line numbers are 0-based.  The optional argument | 
 |       *name* is a name identifying this string, and is only used for error messages. | 
 |  | 
 |  | 
 |    .. method:: parse(string, name='<string>') | 
 |  | 
 |       Divide the given string into examples and intervening text, and return them as | 
 |       a list of alternating :class:`Example`\ s and strings. Line numbers for the | 
 |       :class:`Example`\ s are 0-based.  The optional argument *name* is a name | 
 |       identifying this string, and is only used for error messages. | 
 |  | 
 |  | 
 | .. _doctest-doctestrunner: | 
 |  | 
 | DocTestRunner objects | 
 | ^^^^^^^^^^^^^^^^^^^^^ | 
 |  | 
 |  | 
 | .. class:: DocTestRunner(checker=None, verbose=None, optionflags=0) | 
 |  | 
 |    A processing class used to execute and verify the interactive examples in a | 
 |    :class:`DocTest`. | 
 |  | 
 |    The comparison between expected outputs and actual outputs is done by an | 
 |    :class:`OutputChecker`.  This comparison may be customized with a number of | 
 |    option flags; see section :ref:`doctest-options` for more information.  If the | 
 |    option flags are insufficient, then the comparison may also be customized by | 
 |    passing a subclass of :class:`OutputChecker` to the constructor. | 
 |  | 
 |    The test runner's display output can be controlled in two ways. First, an output | 
 |    function can be passed to :meth:`TestRunner.run`; this function will be called | 
 |    with strings that should be displayed.  It defaults to ``sys.stdout.write``.  If | 
 |    capturing the output is not sufficient, then the display output can be also | 
 |    customized by subclassing DocTestRunner, and overriding the methods | 
 |    :meth:`report_start`, :meth:`report_success`, | 
 |    :meth:`report_unexpected_exception`, and :meth:`report_failure`. | 
 |  | 
 |    The optional keyword argument *checker* specifies the :class:`OutputChecker` | 
 |    object (or drop-in replacement) that should be used to compare the expected | 
 |    outputs to the actual outputs of doctest examples. | 
 |  | 
 |    The optional keyword argument *verbose* controls the :class:`DocTestRunner`'s | 
 |    verbosity.  If *verbose* is ``True``, then information is printed about each | 
 |    example, as it is run.  If *verbose* is ``False``, then only failures are | 
 |    printed.  If *verbose* is unspecified, or ``None``, then verbose output is used | 
 |    iff the command-line switch ``-v`` is used. | 
 |  | 
 |    The optional keyword argument *optionflags* can be used to control how the test | 
 |    runner compares expected output to actual output, and how it displays failures. | 
 |    For more information, see section :ref:`doctest-options`. | 
 |  | 
 |  | 
 |    :class:`DocTestParser` defines the following methods: | 
 |  | 
 |  | 
 |    .. method:: report_start(out, test, example) | 
 |  | 
 |       Report that the test runner is about to process the given example. This method | 
 |       is provided to allow subclasses of :class:`DocTestRunner` to customize their | 
 |       output; it should not be called directly. | 
 |  | 
 |       *example* is the example about to be processed.  *test* is the test | 
 |       *containing example*.  *out* is the output function that was passed to | 
 |       :meth:`DocTestRunner.run`. | 
 |  | 
 |  | 
 |    .. method:: report_success(out, test, example, got) | 
 |  | 
 |       Report that the given example ran successfully.  This method is provided to | 
 |       allow subclasses of :class:`DocTestRunner` to customize their output; it | 
 |       should not be called directly. | 
 |  | 
 |       *example* is the example about to be processed.  *got* is the actual output | 
 |       from the example.  *test* is the test containing *example*.  *out* is the | 
 |       output function that was passed to :meth:`DocTestRunner.run`. | 
 |  | 
 |  | 
 |    .. method:: report_failure(out, test, example, got) | 
 |  | 
 |       Report that the given example failed.  This method is provided to allow | 
 |       subclasses of :class:`DocTestRunner` to customize their output; it should not | 
 |       be called directly. | 
 |  | 
 |       *example* is the example about to be processed.  *got* is the actual output | 
 |       from the example.  *test* is the test containing *example*.  *out* is the | 
 |       output function that was passed to :meth:`DocTestRunner.run`. | 
 |  | 
 |  | 
 |    .. method:: report_unexpected_exception(out, test, example, exc_info) | 
 |  | 
 |       Report that the given example raised an unexpected exception. This method is | 
 |       provided to allow subclasses of :class:`DocTestRunner` to customize their | 
 |       output; it should not be called directly. | 
 |  | 
 |       *example* is the example about to be processed. *exc_info* is a tuple | 
 |       containing information about the unexpected exception (as returned by | 
 |       :func:`sys.exc_info`). *test* is the test containing *example*.  *out* is the | 
 |       output function that was passed to :meth:`DocTestRunner.run`. | 
 |  | 
 |  | 
 |    .. method:: run(test, compileflags=None, out=None, clear_globs=True) | 
 |  | 
 |       Run the examples in *test* (a :class:`DocTest` object), and display the | 
 |       results using the writer function *out*. | 
 |  | 
 |       The examples are run in the namespace ``test.globs``.  If *clear_globs* is | 
 |       true (the default), then this namespace will be cleared after the test runs, | 
 |       to help with garbage collection. If you would like to examine the namespace | 
 |       after the test completes, then use *clear_globs=False*. | 
 |  | 
 |       *compileflags* gives the set of flags that should be used by the Python | 
 |       compiler when running the examples.  If not specified, then it will default to | 
 |       the set of future-import flags that apply to *globs*. | 
 |  | 
 |       The output of each example is checked using the :class:`DocTestRunner`'s | 
 |       output checker, and the results are formatted by the | 
 |       :meth:`DocTestRunner.report_\*` methods. | 
 |  | 
 |  | 
 |    .. method:: summarize(verbose=None) | 
 |  | 
 |       Print a summary of all the test cases that have been run by this DocTestRunner, | 
 |       and return a :term:`named tuple` ``TestResults(failed, attempted)``. | 
 |  | 
 |       The optional *verbose* argument controls how detailed the summary is.  If the | 
 |       verbosity is not specified, then the :class:`DocTestRunner`'s verbosity is | 
 |       used. | 
 |  | 
 | .. _doctest-outputchecker: | 
 |  | 
 | OutputChecker objects | 
 | ^^^^^^^^^^^^^^^^^^^^^ | 
 |  | 
 |  | 
 | .. class:: OutputChecker() | 
 |  | 
 |    A class used to check the whether the actual output from a doctest example | 
 |    matches the expected output.  :class:`OutputChecker` defines two methods: | 
 |    :meth:`check_output`, which compares a given pair of outputs, and returns true | 
 |    if they match; and :meth:`output_difference`, which returns a string describing | 
 |    the differences between two outputs. | 
 |  | 
 |  | 
 |    :class:`OutputChecker` defines the following methods: | 
 |  | 
 |    .. method:: check_output(want, got, optionflags) | 
 |  | 
 |       Return ``True`` iff the actual output from an example (*got*) matches the | 
 |       expected output (*want*).  These strings are always considered to match if | 
 |       they are identical; but depending on what option flags the test runner is | 
 |       using, several non-exact match types are also possible.  See section | 
 |       :ref:`doctest-options` for more information about option flags. | 
 |  | 
 |  | 
 |    .. method:: output_difference(example, got, optionflags) | 
 |  | 
 |       Return a string describing the differences between the expected output for a | 
 |       given example (*example*) and the actual output (*got*).  *optionflags* is the | 
 |       set of option flags used to compare *want* and *got*. | 
 |  | 
 |  | 
 | .. _doctest-debugging: | 
 |  | 
 | Debugging | 
 | --------- | 
 |  | 
 | Doctest provides several mechanisms for debugging doctest examples: | 
 |  | 
 | * Several functions convert doctests to executable Python programs, which can be | 
 |   run under the Python debugger, :mod:`pdb`. | 
 |  | 
 | * The :class:`DebugRunner` class is a subclass of :class:`DocTestRunner` that | 
 |   raises an exception for the first failing example, containing information about | 
 |   that example. This information can be used to perform post-mortem debugging on | 
 |   the example. | 
 |  | 
 | * The :mod:`unittest` cases generated by :func:`DocTestSuite` support the | 
 |   :meth:`debug` method defined by :class:`unittest.TestCase`. | 
 |  | 
 | * You can add a call to :func:`pdb.set_trace` in a doctest example, and you'll | 
 |   drop into the Python debugger when that line is executed.  Then you can inspect | 
 |   current values of variables, and so on.  For example, suppose :file:`a.py` | 
 |   contains just this module docstring:: | 
 |  | 
 |      """ | 
 |      >>> def f(x): | 
 |      ...     g(x*2) | 
 |      >>> def g(x): | 
 |      ...     print(x+3) | 
 |      ...     import pdb; pdb.set_trace() | 
 |      >>> f(3) | 
 |      9 | 
 |      """ | 
 |  | 
 |   Then an interactive Python session may look like this:: | 
 |  | 
 |      >>> import a, doctest | 
 |      >>> doctest.testmod(a) | 
 |      --Return-- | 
 |      > <doctest a[1]>(3)g()->None | 
 |      -> import pdb; pdb.set_trace() | 
 |      (Pdb) list | 
 |        1     def g(x): | 
 |        2         print(x+3) | 
 |        3  ->     import pdb; pdb.set_trace() | 
 |      [EOF] | 
 |      (Pdb) p x | 
 |      6 | 
 |      (Pdb) step | 
 |      --Return-- | 
 |      > <doctest a[0]>(2)f()->None | 
 |      -> g(x*2) | 
 |      (Pdb) list | 
 |        1     def f(x): | 
 |        2  ->     g(x*2) | 
 |      [EOF] | 
 |      (Pdb) p x | 
 |      3 | 
 |      (Pdb) step | 
 |      --Return-- | 
 |      > <doctest a[2]>(1)?()->None | 
 |      -> f(3) | 
 |      (Pdb) cont | 
 |      (0, 3) | 
 |      >>> | 
 |  | 
 |  | 
 | Functions that convert doctests to Python code, and possibly run the synthesized | 
 | code under the debugger: | 
 |  | 
 |  | 
 | .. function:: script_from_examples(s) | 
 |  | 
 |    Convert text with examples to a script. | 
 |  | 
 |    Argument *s* is a string containing doctest examples.  The string is converted | 
 |    to a Python script, where doctest examples in *s* are converted to regular code, | 
 |    and everything else is converted to Python comments.  The generated script is | 
 |    returned as a string. For example, :: | 
 |  | 
 |       import doctest | 
 |       print(doctest.script_from_examples(r""" | 
 |           Set x and y to 1 and 2. | 
 |           >>> x, y = 1, 2 | 
 |  | 
 |           Print their sum: | 
 |           >>> print(x+y) | 
 |           3 | 
 |       """)) | 
 |  | 
 |    displays:: | 
 |  | 
 |       # Set x and y to 1 and 2. | 
 |       x, y = 1, 2 | 
 |       # | 
 |       # Print their sum: | 
 |       print(x+y) | 
 |       # Expected: | 
 |       ## 3 | 
 |  | 
 |    This function is used internally by other functions (see below), but can also be | 
 |    useful when you want to transform an interactive Python session into a Python | 
 |    script. | 
 |  | 
 |  | 
 | .. function:: testsource(module, name) | 
 |  | 
 |    Convert the doctest for an object to a script. | 
 |  | 
 |    Argument *module* is a module object, or dotted name of a module, containing the | 
 |    object whose doctests are of interest.  Argument *name* is the name (within the | 
 |    module) of the object with the doctests of interest.  The result is a string, | 
 |    containing the object's docstring converted to a Python script, as described for | 
 |    :func:`script_from_examples` above.  For example, if module :file:`a.py` | 
 |    contains a top-level function :func:`f`, then :: | 
 |  | 
 |       import a, doctest | 
 |       print(doctest.testsource(a, "a.f")) | 
 |  | 
 |    prints a script version of function :func:`f`'s docstring, with doctests | 
 |    converted to code, and the rest placed in comments. | 
 |  | 
 |  | 
 | .. function:: debug(module, name, pm=False) | 
 |  | 
 |    Debug the doctests for an object. | 
 |  | 
 |    The *module* and *name* arguments are the same as for function | 
 |    :func:`testsource` above.  The synthesized Python script for the named object's | 
 |    docstring is written to a temporary file, and then that file is run under the | 
 |    control of the Python debugger, :mod:`pdb`. | 
 |  | 
 |    A shallow copy of ``module.__dict__`` is used for both local and global | 
 |    execution context. | 
 |  | 
 |    Optional argument *pm* controls whether post-mortem debugging is used.  If *pm* | 
 |    has a true value, the script file is run directly, and the debugger gets | 
 |    involved only if the script terminates via raising an unhandled exception.  If | 
 |    it does, then post-mortem debugging is invoked, via :func:`pdb.post_mortem`, | 
 |    passing the traceback object from the unhandled exception.  If *pm* is not | 
 |    specified, or is false, the script is run under the debugger from the start, via | 
 |    passing an appropriate :func:`exec` call to :func:`pdb.run`. | 
 |  | 
 |  | 
 | .. function:: debug_src(src, pm=False, globs=None) | 
 |  | 
 |    Debug the doctests in a string. | 
 |  | 
 |    This is like function :func:`debug` above, except that a string containing | 
 |    doctest examples is specified directly, via the *src* argument. | 
 |  | 
 |    Optional argument *pm* has the same meaning as in function :func:`debug` above. | 
 |  | 
 |    Optional argument *globs* gives a dictionary to use as both local and global | 
 |    execution context.  If not specified, or ``None``, an empty dictionary is used. | 
 |    If specified, a shallow copy of the dictionary is used. | 
 |  | 
 |  | 
 | The :class:`DebugRunner` class, and the special exceptions it may raise, are of | 
 | most interest to testing framework authors, and will only be sketched here.  See | 
 | the source code, and especially :class:`DebugRunner`'s docstring (which is a | 
 | doctest!) for more details: | 
 |  | 
 |  | 
 | .. class:: DebugRunner(checker=None, verbose=None, optionflags=0) | 
 |  | 
 |    A subclass of :class:`DocTestRunner` that raises an exception as soon as a | 
 |    failure is encountered.  If an unexpected exception occurs, an | 
 |    :exc:`UnexpectedException` exception is raised, containing the test, the | 
 |    example, and the original exception.  If the output doesn't match, then a | 
 |    :exc:`DocTestFailure` exception is raised, containing the test, the example, and | 
 |    the actual output. | 
 |  | 
 |    For information about the constructor parameters and methods, see the | 
 |    documentation for :class:`DocTestRunner` in section :ref:`doctest-advanced-api`. | 
 |  | 
 | There are two exceptions that may be raised by :class:`DebugRunner` instances: | 
 |  | 
 |  | 
 | .. exception:: DocTestFailure(test, example, got) | 
 |  | 
 |    An exception raised by :class:`DocTestRunner` to signal that a doctest example's | 
 |    actual output did not match its expected output. The constructor arguments are | 
 |    used to initialize the member variables of the same names. | 
 |  | 
 | :exc:`DocTestFailure` defines the following member variables: | 
 |  | 
 |  | 
 | .. attribute:: DocTestFailure.test | 
 |  | 
 |    The :class:`DocTest` object that was being run when the example failed. | 
 |  | 
 |  | 
 | .. attribute:: DocTestFailure.example | 
 |  | 
 |    The :class:`Example` that failed. | 
 |  | 
 |  | 
 | .. attribute:: DocTestFailure.got | 
 |  | 
 |    The example's actual output. | 
 |  | 
 |  | 
 | .. exception:: UnexpectedException(test, example, exc_info) | 
 |  | 
 |    An exception raised by :class:`DocTestRunner` to signal that a doctest | 
 |    example raised an unexpected exception.  The constructor arguments are used | 
 |    to initialize the member variables of the same names. | 
 |  | 
 | :exc:`UnexpectedException` defines the following member variables: | 
 |  | 
 |  | 
 | .. attribute:: UnexpectedException.test | 
 |  | 
 |    The :class:`DocTest` object that was being run when the example failed. | 
 |  | 
 |  | 
 | .. attribute:: UnexpectedException.example | 
 |  | 
 |    The :class:`Example` that failed. | 
 |  | 
 |  | 
 | .. attribute:: UnexpectedException.exc_info | 
 |  | 
 |    A tuple containing information about the unexpected exception, as returned by | 
 |    :func:`sys.exc_info`. | 
 |  | 
 |  | 
 | .. _doctest-soapbox: | 
 |  | 
 | Soapbox | 
 | ------- | 
 |  | 
 | As mentioned in the introduction, :mod:`doctest` has grown to have three primary | 
 | uses: | 
 |  | 
 | #. Checking examples in docstrings. | 
 |  | 
 | #. Regression testing. | 
 |  | 
 | #. Executable documentation / literate testing. | 
 |  | 
 | These uses have different requirements, and it is important to distinguish them. | 
 | In particular, filling your docstrings with obscure test cases makes for bad | 
 | documentation. | 
 |  | 
 | When writing a docstring, choose docstring examples with care. There's an art to | 
 | this that needs to be learned---it may not be natural at first.  Examples should | 
 | add genuine value to the documentation.  A good example can often be worth many | 
 | words. If done with care, the examples will be invaluable for your users, and | 
 | will pay back the time it takes to collect them many times over as the years go | 
 | by and things change.  I'm still amazed at how often one of my :mod:`doctest` | 
 | examples stops working after a "harmless" change. | 
 |  | 
 | Doctest also makes an excellent tool for regression testing, especially if you | 
 | don't skimp on explanatory text.  By interleaving prose and examples, it becomes | 
 | much easier to keep track of what's actually being tested, and why.  When a test | 
 | fails, good prose can make it much easier to figure out what the problem is, and | 
 | how it should be fixed.  It's true that you could write extensive comments in | 
 | code-based testing, but few programmers do. Many have found that using doctest | 
 | approaches instead leads to much clearer tests.  Perhaps this is simply because | 
 | doctest makes writing prose a little easier than writing code, while writing | 
 | comments in code is a little harder.  I think it goes deeper than just that: | 
 | the natural attitude when writing a doctest-based test is that you want to | 
 | explain the fine points of your software, and illustrate them with examples. | 
 | This in turn naturally leads to test files that start with the simplest | 
 | features, and logically progress to complications and edge cases.  A coherent | 
 | narrative is the result, instead of a collection of isolated functions that test | 
 | isolated bits of functionality seemingly at random.  It's a different attitude, | 
 | and produces different results, blurring the distinction between testing and | 
 | explaining. | 
 |  | 
 | Regression testing is best confined to dedicated objects or files.  There are | 
 | several options for organizing tests: | 
 |  | 
 | * Write text files containing test cases as interactive examples, and test the | 
 |   files using :func:`testfile` or :func:`DocFileSuite`.  This is recommended, | 
 |   although is easiest to do for new projects, designed from the start to use | 
 |   doctest. | 
 |  | 
 | * Define functions named ``_regrtest_topic`` that consist of single docstrings, | 
 |   containing test cases for the named topics.  These functions can be included in | 
 |   the same file as the module, or separated out into a separate test file. | 
 |  | 
 | * Define a ``__test__`` dictionary mapping from regression test topics to | 
 |   docstrings containing test cases. | 
 |  | 
 | .. rubric:: Footnotes | 
 |  | 
 | .. [#] Examples containing both expected output and an exception are not supported. | 
 |    Trying to guess where one ends and the other begins is too error-prone, and that | 
 |    also makes for a confusing test. |