
    k7i                        S r SSKJr  SrSSKrSSKJs  Jr  SSK	J
r
JrJrJr   " S S\R                  5      r " S S	\R                  \R                   \R"                  5      rSS
 jrSS jrSS jrg)zA Docutils-XML parser.

Provisional:
  The API is not fixed yet.
  Defined objects may be renamed or changed
  in any Docutils release without prior notice.
    )annotationsreStructuredTextN)frontendnodesparsersutilsc                  :    \ rS rSrSrSr SrSrSSS.rSS	 jr	S
r
g)Parser!   zA Docutils-XML parser.)xmlzdocutils-xmlz
xml parser)r   FT)doctitle_xformvalidatec                    U R                  X5        [        X5      n[        U[        R                  5      (       d  UR                  U5        U R                  5         g)zO
Parse `inputstring` and populate `document`, a "document tree".

Provisional.
N)setup_parseparse_element
isinstancer   documentappendfinish_parse)selfinputstringr   nodes       W/home/james-whalen/.local/lib/python3.13/site-packages/docutils/parsers/docutils_xml.pyparseParser.parse.   sE     	/[3$//OOD!     NreturnNone)__name__
__module____qualname____firstlineno____doc__	supportedconfig_sectionconfig_section_dependenciessettings_default_overridesr   __static_attributes__r   r   r   r
   r
   !   s+     'I'!N".49.2"$r   r
   c                  N    \ rS rSrSr\R                  \R                  4S44rSr	g)Unknown=   z+An unknown element found by the XML parser.*r   N)
r!   r"   r#   r$   r%   r   ElementTextcontent_modelr*   r   r   r   r,   r,   =   s    5}}ejj1379Mr   r,   c                   Sn[         R                  " SS9n[        U R                  SS95       HP  u  pE UR	                  U5        UR                  5        H%  u  pgUc  Un[        US-   5      UR                  S'   M'     MR     [        X!5      $ ! [         R                   aP  nUc  e UR                  R                  SU S	3UR                  R                  UR                  S
   S9   SnA  Mj  SnAff = f)a  
Parse `inputstring` as "Docutils XML", return `nodes.Element` instance.

:inputstring: XML source.
:document: `nodes.document` instance (default: a new dummy instance).
           Provides settings and reporter.
           Populated and returned, if the inputstring's root element
           is <document>.

Caution:
  The function does not detect invalid XML.

  To check the validity of the returned node,
  you may use its `validate()` method::

    node = parse_element('<tip><hint>text</hint></tip>')
    node.validate()

Provisional.
N)start)eventsT)keepends   source linezXML parse error: .r   )sourceline)ETXMLPullParser	enumerate
splitlinesfeedread_eventsstrattrib
ParseErrorreportererrorsettings_sourcepositionelement2node)	r   r   rootparserir:   eventelementes	            r   r   r   B   s    * DZ0F[33T3BC	KK"("4"4"6<"D03AaC}- #7 D '' }} 	##&7s!$<+3+<+<+D+D)*A $ 8 	s   A
BC2"AC--C2c                v   Uc>  [         R                  " S[        R                  " [        5      5      nUR
                  S:H    U c/  [        R                  " SS5      n[        R                  " SSU5      $  [        [        U R                  5      n[        U[        R                  5      (       d  [        nU[        R                  :X  a1  UnUR
                  =(       d    UR                   R"                  Ul        OU" 5       n[%        U R'                  S5      5      Ul        [+        U[        5      (       a9  U R                  Ul        UR.                  R1                  SU R                   S3US9  U R3                  5        HJ  u  pgUR5                  S5      (       d  US:X  a  M#   [        R6                  U   " U5      UR8                  U'   ML     [+        U[        RB                  5      (       a  XQl!        OD[+        U[        RD                  5      (       a%  URG                  US	RI                  US
   5      U5        US   (       a  URK                  U5        U=(       a4    [+        U[        RL                  [        RN                  [        45      (       + n[Q        XPRR                  U5        U  H4  nURU                  [W        XU5      5        [Q        XXRX                  U5        M6     U$ ! [         a
    [        n GN>f = f! [:        [<        4 a2    XeR>                  ;   a  URA                  5       nXuR8                  U'    GM  f = f)ad  
Convert an `etree` element and its children to Docutils doctree nodes.

:element:  `xml.etree` element
:document: see `parse_element()`
:unindent: Remove formatting indentation of follow-up text lines?
           Cf. `append_text()`.
           TODO: do we need an "unindent" configuration setting?

Return a `docutils.nodes.Element` instance.

Internal.
z	xml input zNo XML element found.r7   zUnknown element type <z>.)	base_node{ namesids)-r   new_documentr   get_default_settingsr
   r9   r   problematic	paragraphgetattrtag
issubclassr/   r,   AttributeErrorr   rF   rG   intgetr:   r   tagnamerD   warningitems
startswithATTRIBUTE_VALIDATORS
attributes
ValueErrorKeyErrorlist_attributessplit
decorationsubstitution_definitionnote_substitution_defjoinset_idFixedTextElementliteralappend_texttextr   rI   tail)	rN   r   unindentproblem	nodeclassr   keyvaluechilds	            r   rI   rI   j   s    %%k&.&C&CF&KM;&##B(?@r2w//E7;;/	)U]]33I ENN""//FX->->-F-F{GKK./DI$  {{!!$W[[M4 	" 	
 mmo
>>##"6	)#(#=#=c#B5#IDOOC 	 & $(())"	D%77	8	8&&tSXXd7m-DhOE{
  K
%00%--I!K KH llH-L(;<D**h/ 
 K_  	* H% 	)***#(OOC 	)s$   5?K !&K6K32K36=L87L8c                n   U(       d  g U(       a  [         R                  " SSU5      n[        U [        R                  5      (       a&  U R                  [        R                  " U5      5        g UR                  5       (       a4  U R                  [        R                  " UR                  5       5      5        g g )Nz
 +
)resubr   r   TextElementr   r0   strip)r   rs   ru   s      r   rr   rr      st     vvfdD)$))**EJJt$%	 	EJJtzz|,- 
r   )N)NTr   )r%   
__future__r   __docformat__r}   xml.etree.ElementTreeetreeElementTreer;   docutilsr   r   r   r   r
   SpecialInliner/   r,   r   rI   rr   r   r   r   <module>r      sa    #" 	 " " 4 4W^^ 8:emmU\\5== :
%(PIX.r   