
    ^h                         S r S rS rS\0rg)a   
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:

.. code-block:: rst

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

.. code-block:: rst

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

c                     SSK nSSK JnJn  U R                  S5      (       a  U SS n U R                  S5      (       a  UR	                  [        U 5      [        S9nU$ UR                  [        U 5      5      nU$ )	a  
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)

    N)infnanarray   [)dtype)numpyr   r   
startswithr   evalfloat
atleast_1d)snpr   r   as        [/home/james-whalen/.local/lib/python3.13/site-packages/IPython/sphinxext/custom_doctests.pystr_to_arrayr   3   sk    "  ||HaG||DHHT!WEH* H MM%(#H    c           	         SSK n[        U5      S:X  a  SnSnO [        US   5      n[        US   5      n [        U5      n[        U5      nUR                  U5      n	UR                  U5      n
UR                  X5      (       + nXR                  X9)    XJ)    XgS9(       + -  nS
nU R                  nUc  SnSnOOUR                  R                  R                  nSR                  UR                   Vs/ s H  nUU-   PM
     sn5      nU(       aA  SnUR	                  XSR                  U5      [        U5      [        U5      US9n[        U5      eg! [         a"  nSR	                  U5      n[        U5      UeSnAff = f!   S	n N= fs  snf )z
Doctest which allow the submitted output to vary slightly from the input.

Here is how it might appear in an rst file:

.. code-block:: rst

   .. ipython::

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

r   N   gh㈵>g:0yE>   zEBoth `rtol` and `atol` must be specified if either are specified: {0})rtolatolTz    Unavailable
zdoctest float comparison failure

Document source: {0}

Raw content: 
{1}

On input line(s):
{TAB}{2}

we found output:
{TAB}{3}

instead of the expected:
{TAB}{4}

)TAB)r   lenr   
IndexErrorformatr   isnanallclose	directivestatedocumentcurrent_sourcejoincontentreprRuntimeError)sphinx_shellargsinput_linesfound	submittedr   r   r   efound_isnansubmitted_isnanerrorr   r#   sourcer(   lines                    r   float_doctestr6   U   s    
4yA~	'a>Da>D7 +	U#
 hhuo((9-KK==[[|!4!*+;!<&* ! 7 7 	7 C&&I))88))I4E4EF4EDS4Z4EFG6 HHVdii&<d5k)_#  /1o ;  	'006t Q-Q&	'" Gs(   E F  2F	
E=E88E= Fr   N)__doc__r   r6   doctests r   r   <module>r:      s&   0d D@J ]r   