
    -Ph                       d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ er0d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-  ej.        e/          Z0 G d dej1                  Z2 G d de2          Z3 G d de2          Z4 G d de          Z5d.d$Z6 G d% d&e          Z7d/d,Z8d-S )0zInput/Output files    )annotations)TYPE_CHECKING)	Publisher)	FileInput
NullOutput)
standalone)DanglingReferences)UnfilteredWriter)AutoIndexUpgraderDoctreeReadEventSphinxTransformer)LocalePreserveTranslatableMessagesRemoveTranslatableInline)SphinxDomains)logging)LoggingReporter)UIDTransform)Any)nodes)Values)InputParser)	TransformSphinx)BuildEnvironmentc                  T     e Zd ZU dZg Zded<   d fd	ZddZd fdZd fdZ	 xZ
S )SphinxBaseReaderzhA base class of readers for Sphinx.

    This replaces reporter by Sphinx's on generating document.
    list[type[Transform]]
transformsargsr   kwargsreturnNonec                    ddl m} t          |          dk    r>t          |d         |          r(|d         | _        | j        j        | _        |dd          } t                      j        |i | d S )Nr   r      )	sphinx.applicationr   len
isinstance_appenv_envsuper__init__)selfr#   r$   r   	__class__s       I/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/io.pyr0   zSphinxBaseReader.__init__0   s{    ------t99q==ZQ88=QDI	DI8D$)&)))))    appr   c                ,    || _         |j        | _        d S N)r,   r-   r.   )r1   r5   s     r3   setupzSphinxBaseReader.setup:   s    	G			r4   c                    t                                                      | j        z   }t          g}|D ]}||v r|                    |           |S r7   )r/   get_transformsr"   r	   remove)r1   r"   unused	transformr2   s       r3   r:   zSphinxBaseReader.get_transforms>   s^    WW++--?
 %% 	- 	-IJ&&!!),,,r4   nodes.documentc                    t                                                      }t          |          |_        |j                            | j        j                   |j        }t          j	        |          |_        |S )zdCreates a new document object which has a special reporter object good
        for logging.
        )
r/   new_documentr   transformerset_environmentsettingsr-   reporterr   from_reporter)r1   documentrD   r2   s      r3   r@   zSphinxBaseReader.new_documentI   sj     77''))  1::,,T]->??? $+9(CCr4   r#   r   r$   r   r%   r&   r5   r   r%   r&   )r%   r!   )r%   r>   )__name__
__module____qualname____doc__r"   __annotations__r0   r8   r:   r@   __classcell__r2   s   @r3   r    r    (   s          
 )+J***** * * * * *   	 	 	 	 	 	         r4   r    c                  4     e Zd ZdZd fdZddZddZ xZS )SphinxStandaloneReaderz#A basic document reader for Sphinx.r5   r   r%   r&   c                    | j         |j                                        z   | _         t                                          |           d S r7   )r"   registryr:   r/   r8   )r1   r5   r2   s     r3   r8   zSphinxStandaloneReader.setup]   s;    /CL,G,G,I,IIcr4   sourcer   parserr   rC   r   r>   c                    || _         | j        s|| _        || _        |                     |j                  | _        |                                  | j        S r7   )rT   rU   rC   read_sourcer-   inputparserF   )r1   rT   rU   rC   s       r3   readzSphinxStandaloneReader.reada   sM    { 	! DK %%hl33


}r4   r-   r   strc                    | j                                         }|g}|j                            d|j        |           |d         S )z-Read content from source and do post-process.zsource-readr   )rT   rZ   eventsemitdocname)r1   r-   contentargs       r3   rW   z"SphinxStandaloneReader.read_sourcej   sA    +""$$ i
s{C8881vr4   rH   )rT   r   rU   r   rC   r   r%   r>   )r-   r   r%   r[   )rI   rJ   rK   rL   r8   rZ   rW   rN   rO   s   @r3   rQ   rQ   Z   sk        --               r4   rQ   c                  $     e Zd ZdZd fdZ xZS )SphinxI18nReaderzA document reader for i18n.

    This returns the source line number of original text as current source line number
    to let users know where the error happened.
    Because the translated texts are partial and they don't have correct line numbers.
    r5   r   r%   r&   c                >   t                                          |           | j        |j                                        z   | _        t
          t          t          t          t          t          t          g}|D ]%}|| j        v r| j                            |           &d S r7   )r/   r8   r"   rS   r:   r   r   r   r   r   r   r   r;   )r1   r5   r<   r=   r2   s       r3   r8   zSphinxI18nReader.setup|   s    c/CL,G,G,I,II($
   	2 	2IDO++&&y111	2 	2r4   rH   )rI   rJ   rK   rL   r8   rN   rO   s   @r3   rc   rc   t   sG         2 2 2 2 2 2 2 2 2 2r4   rc   c                      e Zd ZdZdZddZdS )SphinxDummyWriterz0Dummy writer module used for generating doctree.)htmlr%   r&   c                    d S r7    )r1   s    r3   	translatezSphinxDummyWriter.translate   s    r4   N)r%   r&   )rI   rJ   rK   rL   	supportedrj   ri   r4   r3   rf   rf      s3        ::I     r4   rf   rT   r   r#   r$   r%   c                    | S )z.Bypass source object as is to cheat Publisher.ri   )rT   r#   r$   s      r3   SphinxDummySourceClassrm      s    Mr4   c                  $     e Zd ZdZd fdZ xZS )	SphinxFileInputzA basic FileInput for Sphinx.r#   r   r$   r%   r&   c                D    d|d<    t                      j        |i | d S )Nsphinxerror_handler)r/   r0   )r1   r#   r$   r2   s      r3   r0   zSphinxFileInput.__init__   s/    "*$)&)))))r4   rG   )rI   rJ   rK   rL   r0   rN   rO   s   @r3   ro   ro      sC        ''* * * * * * * * * *r4   ro   r5   r   filetyper[   r   c                x   t                      }|                    |            | j                            | |          }|j        j        dk    r|j        dk    rddlm} |j        |_        t          ||t                      t          t                                }ddi| j        j        } |j        di | |S )NCommonMarkParserri   r   r   )readerrU   writersource_classdestination	tracebackT)rQ   r8   rS   create_source_parserr2   rI   settings_specdocutils.parsers.rstr   r   rf   ro   r   r-   rC   get_settings)r5   rs   rv   rU   	RSTParserpubdefaultss          r3   create_publisherr      s    #%%F
LL\..sH==F $6666;OSU;U;U 	=<<<<<(6
 ""$LL  C T6SW%56HC  x   Jr4   N)rT   r   r#   r   r$   r   r%   r   )r5   r   rs   r[   r%   r   )9rL   
__future__r   typingr   docutils.corer   docutils.ior   r   docutils.readersr   docutils.transforms.referencesr	   docutils.writersr
   sphinx.transformsr   r   r   sphinx.transforms.i18nr   r   r   sphinx.transforms.referencesr   sphinx.utilr   sphinx.util.docutilsr   sphinx.versioningr   r   docutilsr   docutils.frontendr   r   docutils.parsersr   docutils.transformsr   r)   r   sphinx.environmentr   	getLoggerrI   loggerReaderr    rQ   rc   rf   rm   ro   r   ri   r4   r3   <module>r      s     " " " " " "             # # # # # # - - - - - - - - ' ' ' ' ' ' = = = = = = - - - - - - T T T T T T T T T T         
 7 6 6 6 6 6       0 0 0 0 0 0 * * * * * * 
4((((((!!!!!!''''''------))))))333333 
	8	$	$/ / / / /z( / / /d    -   42 2 2 2 2' 2 2 24    (      
* * * * *i * * *     r4   