o
    JAf                     @   s  	 d dl mZmZmZ d dl mZmZmZ d dlmZ d dl	m
Z
mZ d dlmZ ejZejZejZejjZejjZejjZejjZe Zeddeddedd	edd
eddeddeddeddeddd	ZG dd deZdd Zdd ZG dd dZeeefZG dd deZ G dd deZ!G dd de!Z"G dd  d e!Z#d!Z$d"e$ Z%G d#d$ d$eZ&G d%d& d&Z'G d'd( d(e'eZ(G d)d* d*e'e&Z)G d+d, d,e*Z+G d-d. d.eZ,d:d0d1Z-d:d2d3Z.d:d4d5Z/d:d6d7Z0d8d9 Z1dS );    )
xmlbuilderminidomNode)EMPTY_NAMESPACEEMPTY_PREFIXXMLNS_NAMESPACE)expat)_append_child_set_attribute_node)
NodeFilterNZcdataenumerationentityentitiesidZidrefZidrefsZnmtokenZnmtokens)	ZCDATAENUMZENTITYZENTITIESIDZIDREFZIDREFSZNMTOKENZNMTOKENSc                   @   sZ   e Zd ZdZdddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )ElementInfo
_attr_info_modeltagNameNc                 C   s   || _ g | _|| _d S N)r   r   r   )selfr   model r   +/usr/lib/python3.10/xml/dom/expatbuilder.py__init__?   s   
zElementInfo.__init__c                 C   s   | j | j| jfS r   r   r   r   r   r   __getstate__D      zElementInfo.__getstate__c                 C   s   |\| _ | _| _d S r   r   )r   stater   r   r   __setstate__G   s   zElementInfo.__setstate__c                 C   sN   | j D ] }|d |kr#|d }|d dkrtd   S t|d    S qtjS )N   r   (r   )r   _typeinfo_mapr   _no_type)r   anameinfotr   r   r   getAttributeTypeJ   s   
zElementInfo.getAttributeTypec                 C   s   t jS r   )r   r&   )r   ZnamespaceURIZ	localNamer   r   r   getAttributeTypeNST      zElementInfo.getAttributeTypeNSc                 C   s(   | j r| j d }|tjjtjjfvS dS Nr   F)r   r   r   ZXML_CTYPE_ANYZXML_CTYPE_MIXED)r   typer   r   r   isElementContentW   s   
zElementInfo.isElementContentc                 C   s   | j r| j d tjjkS dS r-   )r   r   r   ZXML_CTYPE_EMPTYr   r   r   r   isEmpty_   s   zElementInfo.isEmptyc                 C   s,   | j D ]}|d |kr|d dk  S qdS )Nr"   r#   r   F)r   )r   r'   r(   r   r   r   isIde   s
   
zElementInfo.isIdc                 C   s   |  ||fS r   )r1   )r   ZeuriZenameZaurir'   r   r   r   isIdNSk   s   zElementInfo.isIdNSr   )__name__
__module____qualname__	__slots__r   r   r!   r*   r+   r/   r0   r1   r2   r   r   r   r   r   <   s    

r   c                 C   s   |  ||S r   )_intern_setdefault)buildersr   r   r   _interno   s   r:   c                 C   s   | d}| j}t|dkr)|\}}}|||}d||f }|||}|||}nt|dkr=|\}}t}||| }}ntd| ||||||fS )N    z%s:%s   z4Unsupported syntax: spaces in URIs not supported: %r)splitr7   lenr   
ValueError)r8   namepartsinternuri	localnameprefixqnamer   r   r   _parse_ns_namer   s   



rH   c                   @   s   e Zd Z	 d:ddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 ZdS );ExpatBuilderNc                 C   sP   |d u rt  }|| _| jjd urt| jj| _nd | _t| _d | _| 	  d S r   )
r   ZOptions_optionsfilterFilterVisibilityController_filterr   _finish_start_element_parserreset)r   optionsr   r   r   r      s   zExpatBuilder.__init__c                 C   s
   	 t  S r   )r   ParserCreater   r   r   r   createParser   s   zExpatBuilder.createParserc                 C   sH   	 | j s!|  | _ | j jj| _d| j _d| j _d| j _| | j  | j S NT)	rO   rS   rC   
setdefaultr7   Zbuffer_textZordered_attributesZspecified_attributesinstallr   r   r   r   	getParser   s   
zExpatBuilder.getParserc                 C   s.   	 t td d | _| j| _| jj| _d| _d S NF)theDOMImplementationZcreateDocumentr   documentcurNode
_elem_info_cdatar   r   r   r   rP      s   

zExpatBuilder.resetc                 C   s   	 | j |_| j|_| j|_| j|_| jj	r| j
|_| j|_| jjr%| j|_| jjr6| j|_| j|_| j|_n| j|_| j|_| j|_| j|_| j|_ d S r   )!start_doctype_decl_handlerStartDoctypeDeclHandlerfirst_element_handlerStartElementHandlerend_element_handlerEndElementHandler
pi_handlerProcessingInstructionHandlerrJ   r   entity_decl_handlerEntityDeclHandlernotation_decl_handlerNotationDeclHandlercommentscomment_handlerCommentHandlerZcdata_sectionsstart_cdata_section_handlerStartCdataSectionHandlerend_cdata_section_handlerEndCdataSectionHandlercharacter_data_handler_cdataCharacterDataHandlercharacter_data_handlerexternal_entity_ref_handlerExternalEntityRefHandlerxml_decl_handlerZXmlDeclHandlerelement_decl_handlerZElementDeclHandlerattlist_decl_handlerZAttlistDeclHandlerr   parserr   r   r   rV      s&   
zExpatBuilder.installc                 C   s   	 |   }d}z%	 |d}|sn||d |r"| jjr"| | d}q	|dd W n	 ty5   Y nw | j}|   d | _|S )NTr"   i @  F    )	rW   readParserZ   documentElement_setup_subsetParseEscaperP   rO   )r   filerz   Zfirst_bufferbufferdocr   r   r   	parseFile   s*   

zExpatBuilder.parseFilec                 C   sP   	 |   }z||d | | W n	 ty   Y nw | j}|   d | _|S rT   )rW   r}   r   r   rZ   rP   rO   )r   stringrz   r   r   r   r   parseString   s   zExpatBuilder.parseStringc                 C   s4   	 | j jrt }|| | }|| j j_d S d S r   )rZ   doctypeInternalSubsetExtractorr   	getSubsetinternalSubset)r   r   Z	extractorsubsetr   r   r   r      s   
zExpatBuilder._setup_subsetc                 C   s   | j j|||}| j |_t| j | || j _| jr5| j|tkr5d | j _| j j	d= d }d | j
_d | j
_|rR|d urCg |j_g |j_d | j
_d | j
_| j| j
_d S d S N)rZ   implementationZcreateDocumentTypeownerDocumentr	   r   rM   
acceptNodeFILTER_REJECT
childNodesrO   rg   ri   r   _seq	notationsrl   re   end_doctype_decl_handlerEndDoctypeDeclHandler)r   ZdoctypeNamesystemIdpublicIdhas_internal_subsetr   r   r   r   r^      s(   
z'ExpatBuilder.start_doctype_decl_handlerc                 C   s:   | j jr	| j| j_| j| j_| js| jst	| _
d S d S d S r   )rJ   rj   rk   rO   rl   rd   re   r\   rM   r   _finish_end_elementr   r   r   r   r     s   


z%ExpatBuilder.end_doctype_decl_handlerc                 C   sH   | j ||}t| j| | jr | j|tkr"| j| d S d S d S r   )rZ   ZcreateProcessingInstructionr	   r[   rM   r   r   removeChild)r   targetdatanoder   r   r   rd     s
   zExpatBuilder.pi_handlerc                 C   s   | j j}| jr$| jr|d jtkr|d | d S | j|}d| _n"|r;|d jt	kr;|d }|j
| }||_
d S t }||_
| j|_t| j | d S )Nr   T)r[   r   r]   _cdata_continuenodeTypeCDATA_SECTION_NODEZ
appendDatarZ   ZcreateCDATASection	TEXT_NODEr   r   Textr   r	   )r   r   r   r   valuer   r   r   rq     s"   
z)ExpatBuilder.character_data_handler_cdatac                 C   s^   | j j}|r|d jtkr|d }|j| |_d S t }|j| |_| j|_t	| j | d S r   )
r[   r   r   r   r   r   r   rZ   r   r	   )r   r   r   r   r   r   r   rs   &  s   z#ExpatBuilder.character_data_handlerc           
      C   s   |rd S | j js
d S | j||||}|d ur#| j|}	|j|	 | jjjj| | j	r@| j	
|tkrB| jjjjd= d S d S d S r   )rJ   r   rZ   Z_create_entityZcreateTextNoder   appendr   r   rM   r   r   )
r   Z
entityNameZis_parameter_entityr   baser   r   notationNamer   childr   r   r   rf   1  s   
z ExpatBuilder.entity_decl_handlerc                 C   sR   | j |||}| j jjj| | jr%| j|tkr'| j jjjd= d S d S d S r   )	rZ   Z_create_notationr   r   r   r   rM   r   FILTER_ACCEPT)r   r   r   r   r   r   r   r   r   rh   C  s
   z"ExpatBuilder.notation_decl_handlerc                 C   sF   | j |}t| j| | jr| j|tkr!| j| d S d S d S r   )rZ   ZcreateCommentr	   r[   rM   r   r   r   )r   r   r   r   r   r   rk   I  s
   zExpatBuilder.comment_handlerc                 C   s   d| _ d| _d S )NTFr]   r   r   r   r   r   rm   O     
z(ExpatBuilder.start_cdata_section_handlerc                 C   s   d| _ d| _d S rX   r   r   r   r   r   ro   S  r   z&ExpatBuilder.end_cdata_section_handlerc                 C      dS Nr"   r   )r   contextr   r   r   r   r   r   rt   W     z(ExpatBuilder.external_entity_ref_handlerc                 C   s2   | j d u r| jst| _| j|  _| || d S r   )rM   r\   r   r   start_element_handlerrW   ra   )r   rA   
attributesr   r   r   r`   Z  s   z"ExpatBuilder.first_element_handlerc                 C   s   | j |}t| j| || _|r8tdt|dD ]}t|| td t	}||d  }||_
| j |_t|| q|| j jurE| | d S d S )Nr   r=   r"   )rZ   ZcreateElementr	   r[   ranger?   r   Attrr   r   r   r   r
   r~   rN   )r   rA   r   r   iar   r   r   r   r   `  s   z"ExpatBuilder.start_element_handlerc                 C   sn   | j r5|| jju rd S | j |}|tkrt|  n|tkr#t|  nd S |j| _	|j
| |  d S d S r   )rM   rZ   r~   startContainerr   RejecterFILTER_SKIPSkipper
parentNoder[   r   unlink)r   r   Zfiltr   r   r   rN   q  s   

z"ExpatBuilder._finish_start_elementc                 C   s   | j }|j| _ | | d S r   )r[   r   r   )r   rA   r[   r   r   r   rb     s   z ExpatBuilder.end_element_handlerc                 C   sd   | j |j}|r| || | jr.|| jju rd S | j|tkr0| j	
| |  d S d S d S r   )r\   getr   _handle_white_text_nodesrM   rZ   r~   r   r   r[   r   r   )r   r[   r(   r   r   r   r     s   z ExpatBuilder._finish_end_elementc                 C   sZ   | j js| s
d S g }|jD ]}|jtkr |j s || q|D ]}|	| q#d S r   )
rJ   Zwhitespace_in_element_contentr/   r   r   r   r   stripr   r   )r   r   r(   Lr   r   r   r   r     s   

z%ExpatBuilder._handle_white_text_nodesc                 C   s2   | j |}|d u rt||| j |< d S ||_d S r   )r\   r   r   r   )r   rA   r   r(   r   r   r   rw     s   
z!ExpatBuilder.element_decl_handlerc              
   C   sF   | j |}|d u rt|}|| j |< |jd |d d |d||g d S Nr   )r\   r   r   r   r   )r   elemrA   r.   defaultrequiredr(   r   r   r   rx     s   
z!ExpatBuilder.attlist_decl_handlerc                 C   s8   || j _|| j _|dkr|rd| j _d S d| j _d S d S )Nr   TF)rZ   versionencoding
standalone)r   r   r   r   r   r   r   rv     s   zExpatBuilder.xml_decl_handlerr   )r3   r4   r5   r   rS   rW   rP   rV   r   r   r   r^   r   rd   rq   rs   rf   rh   rk   rm   ro   rt   r`   r   rN   rb   r   r   rw   rx   rv   r   r   r   r   rI      s<    
rI   c                   @   s   e Zd Z	 dZdd Zdd Zdd Zeje	j
eje	jeje	jeje	jeje	jeje	jeje	jeje	jeje	jeje	jeje	jeje	j iZ!dS )	rL   rK   c                 C   s
   || _ d S r   r   )r   rK   r   r   r   r     s   
z#FilterVisibilityController.__init__c                 C   sP   | j |j }| jj|@ r&| j|}|tkrt|tvr$tdt	| |S t
S )Nz)startContainer() returned illegal value: )_nodetype_maskr   rK   
whatToShowr   FILTER_INTERRUPTr   _ALLOWED_FILTER_RETURNSr@   reprr   )r   r   maskvalr   r   r   r     s   
z)FilterVisibilityController.startContainerc                 C   s   | j |j }| jj|@ r>| j|}|tkrt|tkr0|j}|j	d d  D ]}|
| q&tS |tvr<tdt| |S tS )Nz%acceptNode() returned illegal value: )r   r   rK   r   r   r   r   r   r   r   ZappendChildr   r   r@   r   r   )r   r   r   r   parentr   r   r   r   r     s    
z%FilterVisibilityController.acceptNodeN)"r3   r4   r5   r6   r   r   r   r   ZELEMENT_NODEr   ZSHOW_ELEMENTZATTRIBUTE_NODEZSHOW_ATTRIBUTEr   Z	SHOW_TEXTr   ZSHOW_CDATA_SECTIONZENTITY_REFERENCE_NODEZSHOW_ENTITY_REFERENCEZENTITY_NODEZSHOW_ENTITYZPROCESSING_INSTRUCTION_NODEZSHOW_PROCESSING_INSTRUCTIONZCOMMENT_NODEZSHOW_COMMENTDOCUMENT_NODEZSHOW_DOCUMENTZDOCUMENT_TYPE_NODEZSHOW_DOCUMENT_TYPEZDOCUMENT_FRAGMENT_NODEZSHOW_DOCUMENT_FRAGMENTZNOTATION_NODEZSHOW_NOTATIONr   r   r   r   r   rL     s&    rL   c                   @   s   e Zd ZdZdd ZdS )FilterCrutch)_builder_level
_old_start_old_endc                 C   s6   d| _ || _|j}|j| _|j| _| j|_| j|_d S r   )	r   r   rO   ra   r   rc   r   r   rb   )r   r8   rz   r   r   r   r     s   zFilterCrutch.__init__N)r3   r4   r5   r6   r   r   r   r   r   r     s    r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	r   r   c                 C   s,   t | | |j}dD ]}t||d  qd S )N)re   rl   rr   rn   rp   ru   )r   r   rO   setattr)r   r8   rz   rA   r   r   r   r     s
   zRejecter.__init__c                 G   s   | j d | _ d S r   )r   r   argsr   r   r   r     r   zRejecter.start_element_handlerc                 G   sB   | j dkr| jj}| j| | j|_| j|_d S | j d | _ d S Nr   r"   )r   r   rO   rV   r   ra   r   rc   )r   r   rz   r   r   r   rb      s   
zRejecter.end_element_handlerN)r3   r4   r5   r6   r   r   rb   r   r   r   r   r     s
    r   c                   @   s    e Zd ZdZdd Zdd ZdS )r   r   c                 G   s2   | j j}| j|  | j j|ur| jd | _d S d S r   )r   r[   r   r   )r   r   r   r   r   r   r   -  s
   
zSkipper.start_element_handlerc                 G   sF   | j dkr| j| jj_| j| jj_d | _d S | j d | _ | j|  d S r   )r   r   r   rO   ra   r   rc   r   r   r   r   rb   3  s   

zSkipper.end_element_handlerN)r3   r4   r5   r6   r   rb   r   r   r   r   r   *  s    r   z8http://xml.python.org/entities/fragment-builder/internalz<!DOCTYPE wrapper
  %%s [
  <!ENTITY fragment-builder-internal
    SYSTEM "%s">
%%s
]>
<wrapper %%s
>&fragment-builder-internal;</wrapper>c                   @   sH   e Zd Z	 dddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dS )FragmentBuilderNc                 C   s6   |j tkr|| _|| _n|j| _|| _t| | d S r   )r   r   originalDocumentr   r   rI   r   )r   r   rQ   r   r   r   r   [  s   
zFragmentBuilder.__init__c                 C   s   t |  d | _d S r   )rI   rP   fragmentr   r   r   r   rP   d  s   

zFragmentBuilder.resetc                 C   s   	 |  | S r   )r   r|   r   r   r   r   r   r   h  s   zFragmentBuilder.parseFilec           	      C   s   	 || _ |  }| jj}d}|r,|jp|  }|jr#d|j|jf }n|jr+d|j }nd}|  }t	|||f }z|
|d W n   |    | j}|   |S )N zPUBLIC "%s" "%s"zSYSTEM "%s"T)_sourcerW   r   r   r   _getDeclarationsr   r   _getNSattrs_FRAGMENT_BUILDER_TEMPLATEr}   rP   r   )	r   r   rz   r   identr   ZnsattrsrZ   r   r   r   r   r   m  s2   

zFragmentBuilder.parseStringc                 C   s  	 | j jj}d}|rt|jjD ])}|j|}|r|d }d||jf }|jr2d||j|j	f }qd||j	f }qt|j
jD ]C}|j
|}|rN|d }d||jf }|jrbd||j|j	f }n|j	rmd||j	f }nd	||jjf }|jrd
||jf }|d }q@|S )Nr   z
  z%s<!NOTATION %sz!%s PUBLIC "%s"
             "%s">z%s SYSTEM "%s">z%s<!ENTITY %sz %s PUBLIC "%s"
             "%s"z%s SYSTEM "%s"z%s "%s"z%s NOTATION %s>)r   r   r   r   r   lengthitemZnodeNamer   r   r   Z
firstChildr   r   )r   r   r9   r   Znotationr   r   r   r   r     s<   

z FragmentBuilder._getDeclarationsc                 C   r   )Nr   r   r   r   r   r   r     r   zFragmentBuilder._getNSattrsc                 C   s   |t kr<| j}| j}| j|}| j| _| j | _| j| _z|| j	d W || _|| _d | _	dS || _|| _d | _	w t
| ||||S )NTr   )$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDrZ   r[   rO   ZExternalEntityParserCreater   ZcreateDocumentFragmentr   r}   r   rI   rt   )r   r   r   r   r   Zold_documentZold_cur_noderz   r   r   r   rt     s&   
z+FragmentBuilder.external_entity_ref_handlerr   )
r3   r4   r5   r   rP   r   r   r   r   rt   r   r   r   r   r   R  s    
	$r   c                   @   s6   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 ZdS )
Namespacesc                 C   s
   g | _ d S r   )_ns_ordered_prefixesr   r   r   r   _initNamespaces  s   
zNamespaces._initNamespacesc                 C   s   	 t jdd}d|_|S )Nr;   )Znamespace_separatorT)r   rR   Znamespace_prefixesry   r   r   r   rS     s   zNamespaces.createParserc                 C   s&   	 t | | | jjr| j|_d S d S r   )rI   rV   rJ   Znamespace_declarationsstart_namespace_decl_handlerZStartNamespaceDeclHandlerry   r   r   r   rV     s   zNamespaces.installc                 C   s   	 | j ||f d S r   )r   r   )r   rF   rD   r   r   r   r     s   z'Namespaces.start_namespace_decl_handlerc                 C   s  d|v rt | |\}}}}nt}|}d }t}t||||}| j|_t| j| || _| j	r`| j	D ](\}}|rEt
t| d| t|d}nt
dtdt}||_| j|_t|| q1| j	d d = |r|  |j}	|j}
tdt|dD ]J}|| }||d  }d|v rt | |\}}}}t
||||}||	|< ||
||f< nt
|t|t}||	|< ||
t|f< | j|_||_||_qtd S d S )Nr;   xmlns:xmlnsr   r=   r"   )rH   r   r   r   ZElementrZ   r   r	   r[   r   r   r:   r   r   r
   Z_ensure_attributes_attrs_attrsNSr   r?   ZownerElement)r   rA   r   rD   rE   rF   rG   r   r   r   r   r   r'   r   r   r   r   r     sZ   z Namespaces.start_element_handlerFc                 C   s6   | j }d|v rt| |\}}}}|j| _ | | d S )Nr;   )r[   rH   r   r   )r   rA   r[   rD   rE   rF   rG   r   r   r   rb     s
   
zNamespaces.end_element_handlerN)	r3   r4   r5   r   rS   rV   r   r   rb   r   r   r   r   r     s    /r   c                   @   s   e Zd Z	 dd ZdS )ExpatBuilderNSc                 C      t |  |   d S r   )rI   rP   r   r   r   r   r   rP   )     
zExpatBuilderNS.resetN)r3   r4   r5   rP   r   r   r   r   r   &  s    r   c                   @   s   e Zd Z	 dd Zdd ZdS )FragmentBuilderNSc                 C   r   r   )r   rP   r   r   r   r   r   rP   1  r   zFragmentBuilderNS.resetc                 C   s   	 d}| j }g }|rAt|dr<|j D ]'\}}||v rq|| |r)d| }nd}|r5d|||f }qd||f }q|j}|s
|S )Nr   _ns_prefix_urir   r   z%s
    %s='%s'z %s='%s')r   hasattrr   itemsr   r   )r   attrsr   r   rF   rD   Zdeclnamer   r   r   r   5  s&   


zFragmentBuilderNS._getNSattrsN)r3   r4   r5   rP   r   r   r   r   r   r   .  s    r   c                   @   s   e Zd Z	 dS )r   N)r3   r4   r5   r   r   r   r   r   S  s    r   c                   @   sJ   e Zd Z	 dZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dS )r   Nc                 C   s   	 | j S r   )r   r   r   r   r   r   \  s   z!InternalSubsetExtractor.getSubsetc                 C   (   z	t | | W d S  ty   Y d S w r   )rI   r   r   r   r   r   r   r   `  
   z!InternalSubsetExtractor.parseFilec                 C   r   r   )rI   r   r   )r   r   r   r   r   r   f  r   z#InternalSubsetExtractor.parseStringc                 C   s   | j |_| j|_d S r   )r^   r_   r   ra   ry   r   r   r   rV   l  s   zInternalSubsetExtractor.installc                 C   s.   |r|   }g | _| jj|_| j|_d S t r   )rW   r   r   ZDefaultHandlerr   r   r   )r   rA   r   r   r   rz   r   r   r   r^   p  s   
z2InternalSubsetExtractor.start_doctype_decl_handlerc                 C   s(   d | jdddd}|| _t )Nr   z

)joinr   replacer   )r   r9   r   r   r   r   z  s   z0InternalSubsetExtractor.end_doctype_decl_handlerc                 C   s   t  r   )r   )r   rA   r   r   r   r   r     r,   z-InternalSubsetExtractor.start_element_handler)r3   r4   r5   r   r   r   r   rV   r^   r   r   r   r   r   r   r   W  s    
r   Tc                 C   sf   	 |rt  }nt }t| tr,t| d}||}W d    |S 1 s%w   Y  |S || }|S Nrb)r   rI   
isinstancestropenr   )r   
namespacesr8   fpresultr   r   r   parse  s   


r  c                 C   s   	 |rt  }nt }|| S r   )r   rI   r   )r   r  r8   r   r   r   r     s
   
r   c                 C   sj   	 |rt |}nt|}t| tr.t| d}||}W d    |S 1 s'w   Y  |S || }|S r   )r   r   r   r  r  r   )r   r   r  r8   r  r  r   r   r   parseFragment  s   



r  c                 C   s"   	 |rt |}nt|}|| S r   )r   r   r   )r   r   r  r8   r   r   r   parseFragmentString  s
   

r  c                 C   s   	 | j rt| S t| S r   )r  r   rI   )rQ   r   r   r   makeBuilder  s   r	  )T)2Zxml.domr   r   r   r   r   r   Zxml.parsersr   Zxml.dom.minidomr	   r
   Zxml.dom.NodeFilterr   r   r   r   ZDOMBuilderFilterr   r   r   r   ZgetDOMImplementationrY   ZTypeInfor%   objectr   r:   rH   rI   r   rL   r   r   r   r   r   r   r   r   r   	Exceptionr   r   r  r   r  r  r	  r   r   r   r   <module>   sh    








3  
C:	u_%
,


