
    -Ph                    &   d Z ddlmZ ddlmZ ddlZddlZddlmZ ddl	m
Z
 ddlmZ ddlmZmZ er$dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ  G d dej        j                  Z G d dej        j        j        e          ZddZdS )z$A Base class for additional parsers.    )annotations)TYPE_CHECKINGN)states)
StringList)SmartQuotes)append_epilogprepend_prolog)nodes)	Transform)Sphinx)Config)BuildEnvironment)ExtensionMetadatac                  0    e Zd ZU dZded<   ded<   dd
ZdS )Parsera=  A base class of source parsers.

    The additional parsers should inherit this class
    instead of ``docutils.parsers.Parser``.
    Compared with ``docutils.parsers.Parser``,
    this class improves accessibility to Sphinx APIs.

    The subclasses can access sphinx core runtime objects (app, config and env).
    r   configr   envappr   returnNonec                D    || _         |j        | _        |j        | _        dS )zset_application will be called from Sphinx to set app and other instance variables

        :param sphinx.application.Sphinx app: Sphinx application object
        N)_appr   r   )selfr   s     N/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/parsers.pyset_applicationzParser.set_application*   s!    
 	j7    N)r   r   r   r   )__name__
__module____qualname____doc____annotations__r    r   r   r   r      sM           NNN      r   r   c                  4     e Zd ZdZd fdZdd
ZddZ xZS )	RSTParserzA reST parser for Sphinx.r   list[type[Transform]]c                |    t                                                      }|                    t                     |S )zSphinx's reST parser replaces a transform class for smart-quotes by its own

        refs: sphinx.io.SphinxStandaloneReader
        )superget_transformsremover   )r   
transforms	__class__s     r   r(   zRSTParser.get_transforms7   s4    
 WW++--
+&&&r   inputstringstr | StringListdocumentnodes.documentr   c                   |                      ||           t          j        | j        | j        |j        j                  | _        t          |t                    rBt          j                            ||j        j        d          }t          ||j                  }n|}|                     |           | j                            ||| j                   |                                  dS )z(Parse text and generate a document tree.)state_classesinitial_statedebugT)	tab_widthconvert_whitespace)inlinerN)setup_parser   RSTStateMachiner1   r2   reporter
debug_flagstatemachine
isinstancestrdocutilsstring2linessettingsr4   r   current_sourcedecoraterunr6   finish_parse)r   r,   r.   lines
inputliness        r   parsezRSTParser.parse@   s    h///"2,,#.
 
 
 k3'' 		%)66"+5#' 7  E $E8+BCCJJ$Jj!!!j(DLIIIr   contentr   c                n    t          || j        j                   t          || j        j                   dS )z'Preprocess reST content before parsing.N)r	   r   
rst_prologr   
rst_epilog)r   rH   s     r   rB   zRSTParser.decorateY   s2    w 6777gt{566666r   )r   r%   )r,   r-   r.   r/   r   r   )rH   r   r   r   )r   r   r   r    r(   rG   rB   __classcell__)r+   s   @r   r$   r$   4   sk        ##        27 7 7 7 7 7 7 7r   r$   r   r   r   r   c                B    |                      t                     ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_source_parserr$   )r   s    r   setuprS   _   s0    )$$$ "#  r   )r   r   r   r   ) r    
__future__r   typingr   docutils.parsersr>   docutils.parsers.rstr   docutils.statemachiner   docutils.transforms.universalr   sphinx.util.rstr   r	   r
   docutils.transformsr   sphinx.applicationr   sphinx.configr   sphinx.environmentr   sphinx.util.typingr   parsersr   rstr$   rS   r"   r   r   <module>rb      s   * * " " " " " "                     ' ' ' ' ' ' , , , , , , 5 5 5 5 5 5 9 9 9 9 9 9 9 9 5------))))))$$$$$$333333444444    X$   6(7 (7 (7 (7 (7 $+V (7 (7 (7V     r   