U
    \Sh                     @  s  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 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 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/ e)0e1Z2G dd dej3Z4G dd de4Z5G dd de4Z6G dd deZ7ddddd d!d"Z8G d#d$ d$eZ9d%d&d'd(d)d*Z:dS )+zInput/Output files    )annotations)TYPE_CHECKINGAnyN)nodes)	Publisher)Values)	FileInputInput
NullOutputParser)
standalone)	Transform)DanglingReferences)UnfilteredWriter)addnodes)BuildEnvironment)AutoIndexUpgraderDoctreeReadEventSphinxTransformer)LocalePreserveTranslatableMessagesRemoveTranslatableInline)SphinxDomains)logging)LoggingReporter)UIDTransformSphinxc                      sl   e Zd ZU dZg Zded< dddd fddZd	dd
ddZdd fddZdd fddZ	  Z
S )SphinxBaseReaderzm
    A base class of readers for Sphinx.

    This replaces reporter by Sphinx's on generating document.
    zlist[type[Transform]]
transformsr   Noneargskwargsreturnc                   sX   ddl m} t|dkrFt|d |rF|d | _| jj| _|dd  }t j|| d S )Nr   r      )	sphinx.applicationr   len
isinstance_appenv_envsuper__init__)selfr#   r$   r   	__class__ </root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/io.pyr.   .   s    

zSphinxBaseReader.__init__r   appr%   c                 C  s   || _ |j| _d S N)r*   r+   r,   r/   r5   r2   r2   r3   setup7   s    zSphinxBaseReader.setupr%   c                   s6   t   | j }tg}|D ]}||kr|| q|S r6   )r-   get_transformsr    r   remove)r/   r    unused	transformr0   r2   r3   r:   ;   s    zSphinxBaseReader.get_transformsnodes.documentc                   sB   t   }tj|_t||_|j| jj	 |j
}t||_
|S )zm
        Creates a new document object which has a special reporter object good
        for logging.
        )r-   new_documentr   documentr1   r   ZtransformerZset_environmentsettingsr+   reporterr   Zfrom_reporter)r/   r@   rB   r0   r2   r3   r?   F   s    

zSphinxBaseReader.new_document)__name__
__module____qualname____doc__r    __annotations__r.   r8   r:   r?   __classcell__r2   r2   r0   r3   r   %   s   
	r   c                      sL   e Zd ZdZddd fddZddd	d
dddZdddddZ  ZS )SphinxStandaloneReaderz-
    A basic document reader for Sphinx.
    r   r!   r4   c                   s"   | j |j  | _ t | d S r6   )r    registryr:   r-   r8   r7   r0   r2   r3   r8   ^   s    zSphinxStandaloneReader.setupr	   r   r   r>   )sourceparserrA   r%   c                 C  s4   || _ | js|| _|| _| |j| _|   | jS r6   )rK   rL   rA   read_sourcer+   inputparser@   )r/   rK   rL   rA   r2   r2   r3   readb   s    zSphinxStandaloneReader.readr   str)r+   r%   c                 C  s*   | j  }|g}|jd|j| |d S )z-Read content from source and do post-process.zsource-readr   )rK   rP   eventsemitZdocname)r/   r+   contentargr2   r2   r3   rM   k   s    
z"SphinxStandaloneReader.read_source)rC   rD   rE   rF   r8   rP   rM   rH   r2   r2   r0   r3   rI   Y   s   	rI   c                      s(   e Zd ZdZddd fddZ  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.
    r   r!   r4   c                   sT   t  | | j|j  | _ttttt	t
tg}|D ]}|| jkr4| j| q4d S r6   )r-   r8   r    rJ   r:   r   r   r   r   r   r   r   r;   )r/   r5   r<   r=   r0   r2   r3   r8   ~   s      
zSphinxI18nReader.setup)rC   rD   rE   rF   r8   rH   r2   r2   r0   r3   rV   u   s   rV   c                   @  s"   e Zd ZdZdZddddZdS )SphinxDummyWriterz0Dummy writer module used for generating doctree.)htmlr!   r9   c                 C  s   d S r6   r2   )r/   r2   r2   r3   	translate   s    zSphinxDummyWriter.translateN)rC   rD   rE   rF   	supportedrY   r2   r2   r2   r3   rW      s   rW   r   )rK   r#   r$   r%   c                 O  s   | S )z.Bypass source object as is to cheat Publisher.r2   )rK   r#   r$   r2   r2   r3   SphinxDummySourceClass   s    r[   c                      s*   e Zd ZdZdddd fddZ  ZS )SphinxFileInputzA basic FileInput for Sphinx.r   r!   r"   c                   s   d|d< t  j|| d S )NsphinxZerror_handler)r-   r.   )r/   r#   r$   r0   r2   r3   r.      s    zSphinxFileInput.__init__)rC   rD   rE   rF   r.   rH   r2   r2   r0   r3   r\      s   r\   r   rQ   r   )r5   filetyper%   c                 C  s   t  }||  | j| |}|jjdkrH|jdkrHddlm} |j|_t	||t
 tt d}ddi| jj}tjd d d	kr|jf | n|jf | |_|S )
NZCommonMarkParserr2   r   r   )readerrL   writerZsource_classZdestination	tracebackT   )r      )rI   r8   rJ   Zcreate_source_parserr1   rC   Zsettings_specZdocutils.parsers.rstr   r   rW   r\   r
   r+   rA   docutils__version_info__Zget_settingsZsetup_option_parserget_default_values)r5   r^   r_   rL   Z	RSTParserZpubdefaultsr2   r2   r3   create_publisher   s$    
rh   );rF   
__future__r   typingr   r   rd   r   Zdocutils.corer   Zdocutils.frontendr   Zdocutils.ior   r	   r
   Zdocutils.parsersr   Zdocutils.readersr   Zdocutils.transformsr   Zdocutils.transforms.referencesr   Zdocutils.writersr   r]   r   Zsphinx.environmentr   Zsphinx.transformsr   r   r   Zsphinx.transforms.i18nr   r   r   Zsphinx.transforms.referencesr   Zsphinx.utilr   Zsphinx.util.docutilsr   Zsphinx.versioningr   r'   r   	getLoggerrC   loggerReaderr   rI   rV   rW   r[   r\   rh   r2   r2   r2   r3   <module>   s<   
4	