
    Qjf                       d Z ddlmZ ddlmZmZ ddl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 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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/  e!j`                  e1      Z2 G d dejf                        Z4 G d de4      Z5 G d de4      Z6 G d de      Z7d#dZ8 G d  d!e      Z9d$d"Z:y)%zInput/Output files    )annotations)TYPE_CHECKINGAnyN)nodes)	Publisher)	FileInputInput
NullOutput)
standalone)DanglingReferences)UnfilteredWriter)addnodes)AutoIndexUpgraderDoctreeReadEventSphinxTransformer)LocalePreserveTranslatableMessagesRemoveTranslatableInline)SphinxDomains)logging)LoggingReporter)UIDTransform)Values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 )SphinxBaseReaderzm
    A base class of readers for Sphinx.

    This replaces reporter by Sphinx's on generating document.
    list[type[Transform]]
transformsc                    ddl m} t        |      dkD  r9t        |d   |      r*|d   | _        | j                  j
                  | _        |dd  }t        |    |i | y )Nr   r      )	sphinx.applicationr   len
isinstance_appenv_envsuper__init__)selfargskwargsr   	__class__s       )lib/python3.12/site-packages/sphinx/io.pyr-   zSphinxBaseReader.__init__0   sU    -t9q=ZQ8QDI		DI8D$)&)    c                4    || _         |j                  | _        y N)r)   r*   r+   )r.   apps     r2   setupzSphinxBaseReader.setup:   s    	GG	r3   c                    t         |          | j                  z   }t        g}|D ]  }||v s|j	                  |        |S r5   )r,   get_transformsr#   r   remove)r.   r#   unused	transformr1   s       r2   r9   zSphinxBaseReader.get_transforms>   sP    W+-?
 %% 	-IJ&!!),	- r3   c                   t         |          }t        j                  |_        t        |      |_        |j                  j                  | j                  j                         |j                  }t        j                  |      |_
        |S )zm
        Creates a new document object which has a special reporter object good
        for logging.
        )r,   new_documentr   documentr1   r   transformerset_environmentsettingsr*   reporterr   from_reporter)r.   r?   rC   r1   s      r2   r>   zSphinxBaseReader.new_documentI   sr    
 7')%..  1:,,T]]->->? $$+99(Cr3   r/   r   r0   r   returnNoner6   r   rF   rG   )rF   r"   )rF   nodes.document)__name__
__module____qualname____doc__r#   __annotations__r-   r7   r9   r>   __classcell__r1   s   @r2   r!   r!   '   s.     )+J%**	 r3   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.
    c                |    | j                   |j                  j                         z   | _         t        |   |       y r5   )r#   registryr9   r,   r7   )r.   r6   r1   s     r2   r7   zSphinxStandaloneReader.setupa   s,    //CLL,G,G,IIcr3   c                    || _         | j                  s|| _        || _        | j                  |j                        | _        | j                          | j                  S r5   )sourceparserrB   read_sourcer*   inputparser?   )r.   rV   rW   rB   s       r2   readzSphinxStandaloneReader.reade   sG    {{ DK %%hll3


}}r3   c                    | j                   j                         }|g}|j                  j                  d|j                  |       |d   S )z-Read content from source and do post-process.zsource-readr   )rV   r[   eventsemitdocname)r.   r*   contentargs       r2   rX   z"SphinxStandaloneReader.read_sourcen   s>    ++""$ i

s{{C81vr3   rH   )rV   r	   rW   r   rB   r   rF   rI   )r*   r   rF   str)rJ   rK   rL   rM   r7   r[   rX   rO   rP   s   @r2   rR   rR   \   s    r3   rR   c                  $     e Zd ZdZd fdZ xZS )SphinxI18nReadera  
    A 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.
    c                (   t         |   |       | j                  |j                  j	                         z   | _        t
        t        t        t        t        t        t        g}|D ],  }|| j                  v s| j                  j                  |       . y r5   )r,   r7   r#   rT   r9   r   r   r   r   r   r   r   r:   )r.   r6   r;   r<   r1   s       r2   r7   zSphinxI18nReader.setup   sw    c//CLL,G,G,II($
   	2IDOO+&&y1	2r3   rH   )rJ   rK   rL   rM   r7   rO   rP   s   @r2   rd   rd   x   s    2 2r3   rd   c                      e Zd ZdZdZddZy)SphinxDummyWriterz0Dummy writer module used for generating doctree.)htmlc                     y r5    )r.   s    r2   	translatezSphinxDummyWriter.translate   s    r3   N)rF   rG   )rJ   rK   rL   rM   	supportedrk   rj   r3   r2   rg   rg      s    :Ir3   rg   c                    | S )z.Bypass source object as is to cheat Publisher.rj   )rV   r/   r0   s      r2   SphinxDummySourceClassrn      s    Mr3   c                  $     e Zd ZdZd fdZ xZS )SphinxFileInputzA basic FileInput for Sphinx.c                .    d|d<   t        |   |i | y )Nsphinxerror_handler)r,   r-   )r.   r/   r0   r1   s      r2   r-   zSphinxFileInput.__init__   s    "*$)&)r3   rE   )rJ   rK   rL   rM   r-   rO   rP   s   @r2   rp   rp      s    '* *r3   rp   c                   t               }|j                  |        | j                  j                  | |      }|j                  j
                  dk(  r&|j                  dk(  rddlm} |j                  |_        t        ||t               t        t                     }ddi| j                  j                  }t        j                   d d d	k\  r |j"                  di | |S  |j$                  di |j'                         |_        |S )
NCommonMarkParserrj   r   r   )readerrW   writersource_classdestination	tracebackT   )r      )rR   r7   rT   create_source_parserr1   rJ   settings_specdocutils.parsers.rstr   r   rg   rp   r
   r*   rB   docutils__version_info__get_settingssetup_option_parserget_default_values)r6   filetyperv   rW   	RSTParserpubdefaultss          r2   create_publisherr      s    #%F
LL\\..sH=F  $666;O;OSU;U 	=(66
 "$LC T6SWW%5%56H  !$/$8$ J /s..::MMOJr3   )rV   r   r/   r   r0   r   rF   r   )r6   r   r   rb   rF   r   );rM   
__future__r   typingr   r   r   r   docutils.corer   docutils.ior   r	   r
   docutils.readersr   docutils.transforms.referencesr   docutils.writersr   rr   r   sphinx.transformsr   r   r   sphinx.transforms.i18nr   r   r   sphinx.transforms.referencesr   sphinx.utilr   sphinx.util.docutilsr   sphinx.versioningr   docutils.frontendr   docutils.parsersr   docutils.transformsr   r&   r   sphinx.environmentr   	getLoggerrJ   loggerReaderr!   rR   rd   rg   rn   rp   r   rj   r3   r2   <module>r      s     " %   # 4 4 ' = -  T T 
 7  0 *('-)3 
		8	$2z(( 2j- 82' 26( 
*i *r3   