U
    \Sh6                     @  s   d 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 dd	lmZ dd
lmZ ddlmZmZ ddlmZmZ eeZG dd deZdddddZdS )zPlain-text Sphinx builder.    )annotations)path)AnyIterator)StringOutput)Node)Sphinx)Builder)__)logging)	ensurediros_path)TextTranslator
TextWriterc                   @  s   e Zd ZU dZdZedZdZdZe	Z
dZded< dd	d
dZdd	ddZdddddddZdddddZddddddZdd	ddZdS )TextBuildertextz!The text files are in %(outdir)s.z.txtTNz
str | Nonecurrent_docnameNone)returnc                 C  s
   i | _ d S N)
secnumbersself r   G/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/builders/text.pyinit    s    zTextBuilder.initzIterator[str]c              	   c  s   | j jD ]}|| j jkr |V  qt| j|| j }zt|}W n tk
rZ   d}Y nX z$t| j 	|}||kr~|V  W q t
k
r   Y qX qd S )Nr   )envZ
found_docsZall_docsr   joinoutdir
out_suffixgetmtime	ExceptionZdoc2pathOSError)r   docnameZ
targetnameZtargetmtimeZsrcmtimer   r   r   get_outdated_docs$   s    

zTextBuilder.get_outdated_docsstr)r#   typr   c                 C  s   dS )N r   )r   r#   r&   r   r   r   get_target_uri6   s    zTextBuilder.get_target_urizset[str])docnamesr   c                 C  s   t | | _d S r   )r   writer)r   r)   r   r   r   prepare_writing9   s    zTextBuilder.prepare_writingr   )r#   doctreer   c              
   C  s   || _ | jj|i | _tdd}| j|| t	| j
t|| j }tt| z,t|ddd}|| jj W 5 Q R X W n4 tk
r } zttd|| W 5 d }~X Y nX d S )Nzutf-8)encodingwzerror writing file %s: %s)r   r   Ztoc_secnumbersgetr   r   r*   writer   r   r   r   r   r   dirnameopenoutputr"   loggerwarningr
   )r   r#   r,   ZdestinationZoutfilenameferrr   r   r   	write_doc<   s    
zTextBuilder.write_docc                 C  s   d S r   r   r   r   r   r   finishI   s    zTextBuilder.finish)N)__name__
__module____qualname__nameformatr
   epilogr   Zallow_parallelr   Zdefault_translator_classr   __annotations__r   r$   r(   r+   r8   r9   r   r   r   r   r      s   
r   r   zdict[str, Any])appr   c                 C  sN   |  t | ddd | ddd | ddd | dd	d d
dddS )NZtext_sectioncharsz*=-~"+`r   Ztext_newlinesunixZtext_add_secnumbersTZtext_secnumber_suffixz. builtin)versionZparallel_read_safeZparallel_write_safe)Zadd_builderr   Zadd_config_value)rA   r   r   r   setupM   s    
rE   N)__doc__
__future__r   osr   typingr   r   Zdocutils.ior   Zdocutils.nodesr   Zsphinx.applicationr   Zsphinx.buildersr	   Zsphinx.localer
   Zsphinx.utilr   Zsphinx.util.osutilr   r   Zsphinx.writers.textr   r   	getLoggerr:   r4   r   rE   r   r   r   r   <module>   s   
8