o
    Ni                     @  s   d 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 erZddlmZmZ ddlmZ ddlmZ ddlmZ ee Z!G dd de
Z"dddZ#dS )zPlain-text Sphinx builder.    )annotations)path)TYPE_CHECKING)StringOutput)Builder)__)logging)_last_modified_time	ensurediros_path)TextTranslator
TextWriter)IteratorSet)nodes)Sphinx)ExtensionMetadatac                   @  st   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ZdddZd d!ddZd"ddZd#ddZdddZdS )$TextBuildertextz!The text files are in %(outdir)s.z.txtTN
str | Nonecurrent_docnamereturnNonec                 C  s
   i | _ d S N)
secnumbersself r   H/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/builders/text.pyinit*   s   
zTextBuilder.initIterator[str]c              	   c  s    | j jD ]B}|| j jvr|V  qt| j|| j }zt|}W n ty,   d}Y nw zt| j 	|}||kr=|V  W q t
yG   Y qw d S )Nr   )env
found_docsall_docsr   joinoutdir
out_suffixr	   	Exceptiondoc2pathOSError)r   docname
targetnametargetmtimesrcmtimer   r   r   get_outdated_docs.   s(   zTextBuilder.get_outdated_docsr*   strtypc                 C  s   dS )N r   )r   r*   r0   r   r   r   get_target_uri@      zTextBuilder.get_target_uridocnamesSet[str]c                 C  s   t | | _d S r   )r   writer)r   r4   r   r   r   prepare_writingC   s   zTextBuilder.prepare_writingdoctreenodes.documentc              
   C  s   || _ | jj|i | _tdd}| j|| t	| j
t|| j }tt| z#t|ddd}|| jj W d    W d S 1 sGw   Y  W d S  tyj } zttd|| W Y d }~d S d }~ww )Nzutf-8)encodingwzerror writing file %s: %s)r   r!   toc_secnumbersgetr   r   r6   writer   r$   r%   r   r&   r
   dirnameopenoutputr)   loggerwarningr   )r   r*   r8   destinationoutfilenameferrr   r   r   	write_docF   s   
& zTextBuilder.write_docc                 C  s   d S r   r   r   r   r   r   finishS   r3   zTextBuilder.finish)r   r   )r   r    r   )r*   r/   r0   r   r   r/   )r4   r5   r   r   )r*   r/   r8   r9   r   r   )__name__
__module____qualname__nameformatr   epilogr&   allow_parallelr   default_translator_classr   __annotations__r   r.   r2   r7   rH   rI   r   r   r   r   r      s   
 



r   appr   r   r   c                 C  sN   |  t | ddd | ddd | ddd | dd	d d
dddS )Ntext_sectioncharsz*=-~"+`r!   text_newlinesunixtext_add_secnumbersTtext_secnumber_suffixz. builtin)versionparallel_read_safeparallel_write_safe)add_builderr   add_config_value)rS   r   r   r   setupW   s   
r_   N)rS   r   r   r   )$__doc__
__future__r   osr   typingr   docutils.ior   sphinx.buildersr   sphinx.localer   sphinx.utilr   sphinx.util.osutilr	   r
   r   sphinx.writers.textr   r   collections.abcr   r   docutilsr   sphinx.applicationr   sphinx.util.typingr   	getLoggerrJ   rB   r   r_   r   r   r   r   <module>   s$    
8