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 dd
lmZ ddlmZmZmZ ddlmZmZ er`ddlmZmZ ddlmZ ddlm Z  e!e"Z#G dd deZ$G dd de$Z%dddZ&dS )z,Docutils-native XML and pseudo-XML builders.    )annotations)path)TYPE_CHECKING)nodes)StringOutput)XMLTranslator)Builder)__)logging)_last_modified_time	ensurediros_path)PseudoXMLWriter	XMLWriter)IteratorSet)Sphinx)ExtensionMetadatac                   @  s   e Zd ZU dZdZdZedZdZdZ	e
Zded< ded	< eZ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 )(
XMLBuilderz%
    Builds Docutils-native XML.
    xmlz The XML files are in %(outdir)s.z.xmlTz'type[XMLWriter] | type[PseudoXMLWriter]_writer_classzXMLWriter | PseudoXMLWriterwriterreturnNonec                 C     d S N selfr   r   G/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/builders/xml.pyinit/      zXMLBuilder.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_docs2   s(   zXMLBuilder.get_outdated_docsNr,   strtyp
str | Nonec                 C  s   |S r   r   )r   r,   r2   r   r   r   get_target_uriD   r!   zXMLBuilder.get_target_uridocnamesSet[str]c                 C  s   |  | | _d S r   )r   r   )r   r5   r   r   r   prepare_writingG   s   zXMLBuilder.prepare_writingdoctreenodes.documentc              
   C  sb  |  }| jj D ]
}d|d|j < q
|tjD ]6}|j	 D ].\}}t
|tr2t||j|< |j| }t
|trPt|D ]\}}t
|trOt|||< q@q"qtdd}	| j||	 t| jt|| j }
tt|
 z#t|
ddd}|| jj W d    W d S 1 sw   Y  W d S  ty } zttd|
| W Y d }~d S d }~ww )Nzhttps://www.sphinx-doc.org/zxmlns:zutf-8)encodingwzerror writing file %s: %s)deepcopyr#   domainssortednamefindallr   Element
attributesitems
isinstancetuplelist	enumerater   r   writer   r&   r'   r   r(   r   dirnameopenoutputr+   loggerwarningr	   )r   r,   r8   domainnodeattvalueivaldestinationoutfilenameferrr   r   r   	write_docJ   s4   




& zXMLBuilder.write_docc                 C  r   r   r   r   r   r   r   finishc   r!   zXMLBuilder.finish)r   r   )r   r"   r   )r,   r1   r2   r3   r   r1   )r5   r6   r   r   )r,   r1   r8   r9   r   r   )__name__
__module____qualname____doc__r?   formatr	   epilogr(   allow_parallelr   r   __annotations__r   default_translator_classr    r0   r4   r7   rX   rY   r   r   r   r   r      s    
 



r   c                   @  s(   e Zd ZdZdZdZedZdZe	Z
dS )PseudoXMLBuilderz1
    Builds pseudo-XML for display purposes.
    	pseudoxmlz'The pseudo-XML files are in %(outdir)s.z
.pseudoxmlN)rZ   r[   r\   r]   r?   r^   r	   r_   r(   r   r   r   r   r   r   rc   g   s    rc   appr   r   r   c                 C  s.   |  t |  t | ddd ddddS )N
xml_prettyTr#   builtin)versionparallel_read_safeparallel_write_safe)add_builderr   rc   add_config_value)re   r   r   r   setupu   s   

rm   N)re   r   r   r   )'r]   
__future__r   osr   typingr   docutilsr   docutils.ior   docutils.writers.docutils_xmlr   sphinx.buildersr   sphinx.localer	   sphinx.utilr
   sphinx.util.osutilr   r   r   sphinx.writers.xmlr   r   collections.abcr   r   sphinx.applicationr   sphinx.util.typingr   	getLoggerrZ   rL   r   rc   rm   r   r   r   r   <module>   s(    
H