
    }c                     .   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 ddlmZ ddlmZmZ ddlmZmZ  ej         e!          Z" G d de          Z# G d de#          Z$dedee%ef         fdZ&dS )z,Docutils-native XML and pseudo-XML builders.    )path)AnyDictIteratorSetTypeUnion)nodes)StringOutput)Node)XMLTranslator)Sphinx)Builder)__)logging)	ensurediros_path)PseudoXMLWriter	XMLWriterc                       e Zd ZU dZdZdZ ed          ZdZdZ	e
Zeee
         ee         f         ed<   eZdd	Zdee         fd
ZddededefdZdee         ddfdZdededdfdZddZdS )
XMLBuilderz%
    Builds Docutils-native XML.
    xmlz The XML files are in %(outdir)s.z.xmlT_writer_classreturnNc                     d S N selfs    3lib/python3.11/site-packages/sphinx/builders/xml.pyinitzXMLBuilder.init#           c              #   p  K   | j         j        D ]}|| j         j        vr|V  t          j        | j        || j        z             }	 t          j        |          }n# t          $ r d}Y nw xY w	 t          j        | j         	                    |                    }||k    r|V  # t          $ r Y w xY wd S )Nr   )env
found_docsall_docsr   joinoutdir
out_suffixgetmtime	Exceptiondoc2pathOSError)r   docname
targetnametargetmtimesrcmtimes        r    get_outdated_docszXMLBuilder.get_outdated_docs&   s      x* 	 	Gdh// 4;$/0IJJJ "mJ77       =):):7)C)CDDk) "!MMM   	 	s$   AA+*A+/6B&&
B32B3r/   typc                     |S r   r   )r   r/   r4   s      r    get_target_urizXMLBuilder.get_target_uri8   s    r#   docnamesc                 :    |                      |           | _        d S r   )r   writer)r   r7   s     r    prepare_writingzXMLBuilder.prepare_writing;   s    ((..r#   doctreec                 2   |                                 }| j        j                                        D ]}d|j        z   }d||<   |                    t          j                  D ]}|j        	                                D ]\  }}t          |t                    rt          |          |j        |<   |j        |         }t          |t                    r<t          |          D ],\  }}	t          |	t                    rt          |	          ||<   -t          d          }
| j                            ||
           t#          j        | j        t)          |          | j        z             }t-          t#          j        |                     	 t1          |dd          5 }|                    | j        j                   d d d            d S # 1 swxY w Y   d S # t4          $ r4}t6                              t;          d          ||           Y d }~d S d }~ww xY w)Nzxmlns:zhttps://www.sphinx-doc.org/zutf-8)encodingwzerror writing file %s: %s)deepcopyr%   domainsvaluesnamefindallr
   Element
attributesitems
isinstancetuplelist	enumerater   r9   writer   r(   r)   r   r*   r   dirnameopenoutputr.   loggerwarningr   )r   r/   r;   domainxmlnsnodeattvalueivaldestinationoutfilenameferrs                 r    	write_doczXMLBuilder.write_doc>   sZ    ""$$h&--// 	; 	;Fv{*E:GENNOOEM22 	1 	1D"o3355 1 1
UeU++ 7+/;;DOC(,eT** 1"+E"2"2 1 13%c511 1'+CyyE!H1 #G444';///iWW-=-=-OPP$,{++,,,	Nk3999 ,Q*+++, , , , , , , , , , , , , , , , , , 	N 	N 	NNN29::KMMMMMMMMM	Ns<   G  G>G GG GG 
H")HHc                     d S r   r   r   s    r    finishzXMLBuilder.finishX   r"   r#   )r   Nr   )__name__
__module____qualname____doc__rB   formatr   epilogr*   allow_parallelr   r   r	   r   r   __annotations__r   default_translator_classr!   r   strr3   r6   r   r:   r   r\   r^   r   r#   r    r   r      s:          DFR233FJNCLM5i$*??@LLL,   8C=    $ c  s    /C /T / / / /N Nt N N N N N4     r#   r   c                   8    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)r_   r`   ra   rb   rB   rc   r   rd   r*   r   r   r   r#   r    rj   rj   \   s>          DFR9::FJ#MMMr#   rj   appr   c                     |                      t                     |                      t                     |                     ddd           ddddS )N
xml_prettyTr%   builtin)versionparallel_read_safeparallel_write_safe)add_builderr   rj   add_config_value)rl   s    r    setupru   i   sY    OOJOO$%%%tU333 "#  r#   N)'rb   osr   typingr   r   r   r   r   r	   docutilsr
   docutils.ior   docutils.nodesr   docutils.writers.docutils_xmlr   sphinx.applicationr   sphinx.buildersr   sphinx.localer   sphinx.utilr   sphinx.util.osutilr   r   sphinx.writers.xmlr   r   	getLoggerr_   rO   r   rj   rh   ru   r   r#   r    <module>r      s   2 2       8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8       $ $ $ $ $ $       7 7 7 7 7 7 % % % % % % # # # # # #             1 1 1 1 1 1 1 1 9 9 9 9 9 9 9 9		8	$	$D D D D D D D DN
$ 
$ 
$ 
$ 
$z 
$ 
$ 
$
v 
$sCx. 
 
 
 
 
 
r#   