
    zi1                       d Z ddlmZ ddl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mZ er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_CHECKINGAnyN)nodes)states)
StringList)SmartQuotes)append_epilogprepend_prolog)	Transform)Sphinx)Config)BuildEnvironmentc                  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     Y/var/www/tmov.alphamb/tmov_inventario/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 )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_transforms4   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,,#.0 0 0 k3'' 	%)66x'8'B#' 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.decorateT   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$   1   sk        ##        ,7 7 7 7 7 7 7 7r   r$   r   r   r   dict[str, Any]c                B    |                      t                     ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_source_parserr$   )r   s    r   setuprT   Z   s0    )$$$ "#  r   )r   r   r   rM   )r    
__future__r   typingr   r   docutils.parsersr>   docutils.parsers.rstr   r   docutils.statemachiner   docutils.transforms.universalr	   sphinx.util.rstr
   r   docutils.transformsr   sphinx.applicationr   sphinx.configr   sphinx.environmentr   parsersr   rstr$   rT   r"   r   r   <module>rb      s   * * " " " " " " % % % % % % % %               ' ' ' ' ' ' , , , , , , 5 5 5 5 5 5 9 9 9 9 9 9 9 9 4------))))))$$$$$$333333    X$   2&7 &7 &7 &7 &7 $+V &7 &7 &7R     r   