
    O&i                     :   d Z ddlmZmZmZmZmZ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 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  G d de	j        j                  Z G d de	j        j        j        e          Zdddee ef         fdZ!dS )z$A Base class for additional parsers.    )TYPE_CHECKINGAnyDictListTypeUnionN)nodes)states)
StringList)	Transform)SmartQuotes)Config)BuildEnvironment)append_epilogprepend_prolog)Sphinxc                   0    e Zd ZU dZeed<   e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).
    configenvappr   returnNc                 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     [/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/parsers.pyset_applicationzParser.set_application$   s!    
 	j7    )r   r   r   N)__name__
__module____qualname____doc__r   __annotations__r   r    r   r   r   r      sM           NNN 
     r   r   c                   ~     e Zd ZdZdeee                  f fdZdee	e
f         dej        ddfdZde
ddfd	Z xZS )
	RSTParserzA reST parser for Sphinx.r   c                 |    t                                                      }|                    t                     |S )z
        Sphinx'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_transforms1   s4     WW++--
+&&&r   inputstringdocumentNc                    |                      ||           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
   RSTStateMachiner0   r1   reporter
debug_flagstatemachine
isinstancestrdocutilsstring2linessettingsr3   r   current_sourcedecoraterunr5   finish_parse)r   r-   r.   lines
inputliness        r   parsezRSTParser.parse;   s    h///"2,,#.0 0 0 k3'' 	%)66x'8'B#' 7 ) )E $E8+BCCJJ$Jj!!!j(DLIIIr   contentc                 n    t          || j        j                   t          || j        j                   dS )z'Preprocess reST content before parsing.N)r   r   
rst_prologr   
rst_epilog)r   rG   s     r   rA   zRSTParser.decorateQ   s2    w 6777gt{566666r   )r   r    r!   r"   r   r   r   r)   r   r<   r   r	   r.   rF   rA   __classcell__)r,   s   @r   r&   r&   .   s        ##T)_ 5      sJ!7 5> VZ    ,7
 7t 7 7 7 7 7 7 7 7r   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   setuprR   W   s0    )$$$ "#  r   )"r"   typingr   r   r   r   r   r   docutils.parsersr=   docutils.parsers.rstr	   r
   docutils.statemachiner   docutils.transformsr   docutils.transforms.universalr   sphinx.configr   sphinx.environmentr   sphinx.util.rstr   r   sphinx.applicationr   parsersr   rstr&   r<   rR   r$   r   r   <module>r_      s   * * > > > > > > > > > > > > > > > >               ' ' ' ' ' ' , , , , , , ) ) ) ) ) ) 5 5 5 5 5 5             / / / / / / 9 9 9 9 9 9 9 9 *))))))    X$   2&7 &7 &7 &7 &7 $+V &7 &7 &7Rx DcN      r   