
    <i                        d Z ddlmZ dZddlZddlmc mZ ddl	m
Z
mZmZmZ  G d dej                  Z G d d	ej        ej        ej                  Zdd
ZddZddZdS )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                  2    e Zd ZdZdZ	 dZdZdddZdd
ZdS )ParserzA Docutils-XML parser.)xmlzdocutils-xmlz
xml parser)r   FT)doctitle_xformvalidatereturnNonec                    |                      ||           t          ||          }t          |t          j                  s|                    |           |                                  dS )zg
        Parse `inputstring` and populate `document`, a "document tree".

        Provisional.
        N)setup_parseparse_element
isinstancer   documentappendfinish_parse)selfinputstringr   nodes       /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/docutils/parsers/docutils_xml.pyparsezParser.parse.   sg     	h///[(33$// 	"OOD!!!    Nr   r   )	__name__
__module____qualname____doc__	supportedconfig_sectionconfig_section_dependenciessettings_default_overridesr    r   r   r
   r
   !   sT          'I'!N".49.2"$ "$     r   r
   c                  4    e Zd ZdZej        ej        fdffZdS )Unknownz+An unknown element found by the XML parser.*N)r   r   r    r!   r   ElementTextcontent_modelr&   r   r   r(   r(   =   s*        55}ej1379MMMr   r(   c                   d}t          j        d          }t          |                     d                    D ]\  }}	 |                    |           |                                D ]#\  }}||}t          |dz             |j        d<   $T# t           j        $ rD}| |j	        
                    d| d	|j        j        |j        d
                    Y d}~ nd}~ww xY wt          ||          S )aU  
    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ir5   eventelementes	            r   r   r   B   s3   * DZ000F[33T3BBCC  4	KK"("4"4"6"6 9 9w<"D03AaC}--9 } 	 	 	##$<$<$<$<+3+<+D)*A $ 8 8 8 EEEEE	 h'''s   ABC"9CC"Tc                   |7t          j        dt          j        t                              }|j        dk     | +t          j        dd          }t          j        dd|          S 	 t          t          | j
                  }t          |t          j                  st          }n# t          $ r
 t          }Y nw xY w|t          j        k    r|}|j        p|j        j        |_        n
 |            }t%          |                     d                    |_        t+          |t                    r1| j
        |_        |j                            d| j
         d|           |                                 D ]\  }}|                    d	          s|dk    r!	 t          j        |         |          |j        |<   E# t:          t<          f$ r* ||j        v r|                                 }||j        |<   Y w xY wt+          |t          j!                  r||_!        nJt+          |t          j"                  r0|#                    |d
$                    |d                   |           |d         r|%                    |           |o,t+          |t          j&        t          j'        t          f           }tQ          || j)        |           | D ]<}|*                    tW          |||                     tQ          ||j,        |           =|S )a  
    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.
    Nz	xml input zNo XML element found.r2   zUnknown element type <z>.)	base_node{ namesids)-r   new_documentr   get_default_settingsr
   r4   r   problematic	paragraphgetattrtag
issubclassr*   r(   AttributeErrorr   rA   rB   intgetr5   r   tagnamer?   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   rD   tail)	rI   r   unindentproblem	nodeclassr   keyvaluechilds	            r   rD   rD   j   s    %k&.&CF&K&KM M;&&#B(?@@r2w///E7;//	)U]33 	 I   			EN"""/FX->-Fy{{GKK..//DI$   {!!4W[444 	" 	 	 	
 mmoo ) )
U>># 	#"6"6	)#(#=c#B5#I#IDOC  H% 	) 	) 	)d***#(DOC   	) $()) P"	D%7	8	8 P&&tSXXd7m-D-DhOOOE{ 
  K
%0%-I!K !K KH glH--- 0 0L(;;<<<D%*h////Ks$   (;B$ $B87B8"F668G10G1r   r   c                b   |sd S |rt          j        dd|          }t          | t          j                  r)|                     t          j        |                     d S |                                r;|                     t          j        |                                                     d S d S )Nz
 +
)resubr   r   TextElementr   r+   strip)r   rn   rp   s      r   rm   rm      s       *vfdD))$)** .EJt$$%%%%%	 . 	EJtzz||,,-----. .r   )N)NTr   )r!   
__future__r   __docformat__rx   xml.etree.ElementTreeetreeElementTreer6   docutilsr   r   r   r   r
   SpecialInliner*   r(   r   rD   rm   r&   r   r   <module>r      s    # " " " " "" 				 " " " " " " " " " 4 4 4 4 4 4 4 4 4 4 4 4    W^   8: : : : :emU\5= : : :
%( %( %( %(PI I I IX. . . . . .r   