
    f                         d Z d Zd ZdeiZy)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                     ddl }ddl m}m} | j                  d      r| dd } | j                  d      r"|j	                  t        |       t              }|S |j                  t        |             }|S )	aI  
    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        \/var/www/cvtools/html/venv/lib/python3.12/site-packages/IPython/sphinxext/custom_doctests.pystr_to_arrayr   3   se    "  ||HaG||DHHT!WEH* H MM%(#H    c           	         ddl }t        |      dk(  rd}d}n	 t        |d         }t        |d         }	 t        |      }t        |      }|j                  |      }	|j                  |      }
|j                  |	|
       }||j                  ||	    ||
    ||       z  }d
}| j                  }|d}d}nL|j                  j                  j                  }dj                  |j                  D cg c]  }||z   	 c}      }|rEd}|j	                  ||dj                  |      t        |      t        |      |      }t        |      y# t        $ r"}dj	                  |      }t        |      |d}~ww xY w#  d	}Y xY wc c}w )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_==R[[|!4!*O+;!<&* ! 7 7 	7 C&&I))88))I4E4EFDS4ZFG6 HHVWdii&<d5k)_#  /1o ;  	'006t Q-Q&	'" Gs(   E E9 0F	E6E11E69E?r   N)__doc__r   r6   doctests r   r   <module>r:      s&   0d D@J ]r   