B
    .Kc4                 @   s   d Z ddlmZ ddlmZmZmZ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mZ ddlmZmZ eeZG dd deZeee ef dddZ!dS )zPlain-text Sphinx builder.    )path)AnyDictIteratorOptionalSetTuple)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ee ed< dddd	Zee dd
dZdeee edddZee ddddZeeddddZddddZdS )TextBuildertextz!The text files are in %(outdir)s.z.txtTNcurrent_docname)returnc             C   s
   i | _ d S )N)
secnumbers)self r   3lib/python3.7/site-packages/sphinx/builders/text.pyinit   s    zTextBuilder.initc          	   c   s   x| j jD ]}|| j jkr"|V  q
t| j|| j }yt|}W n tk
r\   d}Y nX y$t| j 	|}||kr|V  W q
 t
k
r   Y q
X q
W 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)r#   typr   c             C   s   dS )N r   )r   r#   r%   r   r   r   get_target_uri4   s    zTextBuilder.get_target_uri)docnamesr   c             C   s   t | | _d S )N)r   writer)r   r(   r   r   r   prepare_writing7   s    zTextBuilder.prepare_writing)r#   doctreer   c          
   C   s   || _ | jj|i | _tdd}| j|| t	| j
t|| j }tt| y,t|ddd}|| jj W d Q R X W n4 tk
r } zttd|| W d 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"   loggerZwarningr   )r   r#   r+   ZdestinationZoutfilenameferrr   r   r   	write_doc:   s    
zTextBuilder.write_docc             C   s   d S )Nr   )r   r   r   r   finishG   s    zTextBuilder.finish)N)__name__
__module____qualname__nameformatr   epilogr   Zallow_parallelr   Zdefault_translator_classr   r   str__annotations__r   r   r$   r'   r   r*   r
   r6   r7   r   r   r   r   r      s   
r   )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_newlinesZunixZtext_add_secnumbersTZtext_secnumber_suffixz. Zbuiltin)versionZparallel_read_safeZparallel_write_safe)Zadd_builderr   Zadd_config_value)r@   r   r   r   setupK   s    
rB   N)"__doc__osr   typingr   r   r   r   r   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   Z	getLoggerr8   r3   r   r>   rB   r   r   r   r   <module>   s    
8