a
    0a                     @   s   d Z ddlmZ ddl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
    sphinx.builders.text
    ~~~~~~~~~~~~~~~~~~~~

    Plain-text Sphinx builder.

    :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )path)AnyDictIterator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d< dddd	Zee dd
dZd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.9/site-packages/sphinx/builders/text.pyinit&   s    zTextBuilder.initc              	   c   s   | j jD ]}|| j jvr |V  qt| j|| j }zt|}W n tyX   d}Y n0 z$t| j 	|}||kr||V  W q t
y   Y q0 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)r$   typr   c                 C   s   dS )N r   )r   r$   r&   r   r   r   get_target_uri<   s    zTextBuilder.get_target_uri)docnamesr   c                 C   s   t | | _d S r   )r   writer)r   r)   r   r   r   prepare_writing?   s    zTextBuilder.prepare_writing)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 d    n1 s0    Y  W n6 ty } zttd|| W Y d }~n
d }~0 0 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_docB   s    
0zTextBuilder.write_docc                 C   s   d S r   r   r   r   r   r   finishO   s    zTextBuilder.finish)N)__name__
__module____qualname__nameformatr   epilogr    Zallow_parallelr   Zdefault_translator_classr   str__annotations__r   r   r%   r(   r   r+   r	   r7   r8   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)rA   r   r   r   setupS   s    
rC   N)!__doc__osr   typingr   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	getLoggerr9   r4   r   r?   rC   r   r   r   r   <module>   s   

8