Warning

This documentation is for an old version of IPython. You can find docs for newer versions here.

Module: sphinxext.custom_doctests

Handlers for IPythonDirective’s @doctest pseudo-decorator.

The Sphinx extension that provides support for embedded IPython code provides a pseudo-decorator @doctest, which treats the input/output block as a doctest, raising a RuntimeError during doc generation if the actual output (after running the input) does not match the expected output.

An example usage is:

.. ipython::

     In [1]: x = 1

     @doctest
     In [2]: x + 2
     Out[3]: 3

One can also provide arguments to the decorator. The first argument should be the name of a custom handler. The specification of any other arguments is determined by the handler. For example,

.. ipython::

   @doctest float
   In [154]: 0.1 + 0.2
   Out[154]: 0.3

allows the actual output 0.30000000000000004 to match the expected output due to a comparison with np.allclose.

This module contains handlers for the @doctest pseudo-decorator. Handlers should have the following function signature:

handler(sphinx_shell, args, input_lines, found, submitted)

where sphinx_shell is the embedded Sphinx shell, args contains the list of arguments that follow: '@doctest handler_name’, input_lines contains a list of the lines relevant to the current doctest, found is a string containing the output from the IPython shell, and submitted is a string containing the expected output from the IPython shell.

Handlers must be registered in the doctests dict at the end of this module.

2 Functions

IPython.sphinxext.custom_doctests.str_to_array(s)

Simplistic converter of strings from repr to float NumPy arrays.

If the repr representation has ellipsis in it, then this will fail.

Parameters:

s : str

The repr version of a NumPy array.

Examples

>>> s = "array([ 0.3,  inf,  nan])"
>>> a = str_to_array(s)
IPython.sphinxext.custom_doctests.float_doctest(sphinx_shell, args, input_lines, found, submitted)

Doctest which allow the submitted output to vary slightly from the input.

Here is how it might appear in an rst file:

.. ipython::

   @doctest float
   In [1]: 0.1 + 0.2
   Out[1]: 0.3