
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a¬‹  ã                   @   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   ú9/opt/alt/python38/lib64/python3.8/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   s    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r6t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   s    zElementInfo.getAttributeTypeNSc                 C   s,   | j r$| j d }|tjjtjjfkS d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 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   )r/   )r   ZeuriZenameZaurir&   r   r   r   ÚisIdNSk   s    zElementInfo.isIdNS)N)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   r   r    r)   r*   r-   r.   r/   r0   r   r   r   r   r   <   s   

r   c                 C   s   |   ||¡S r   )Ú_intern_setdefault)ÚbuilderÚsr   r   r   Ú_interno   s    r8   c                 C   s˜   |  d¡}| j}t|ƒdkrR|\}}}|||ƒ}d||f }|||ƒ}|||ƒ}n4t|ƒdkrz|\}}t}|||ƒ }}ntd| ƒ‚|||ƒ|||fS )Nú é   z%s:%sé   z4Unsupported syntax: spaces in URIs not supported: %r)Úsplitr5   Úlenr   Ú
ValueError)r6   ÚnameÚpartsÚinternÚuriÚ	localnameÚprefixÚqnamer   r   r   Ú_parse_ns_namer   s    



rF   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 krt  ¡ }|| _| jjd k	r2t| 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   sF   | j s@|  ¡ | _ | j jj| _d| j _d| j _d| j _|  | j ¡ | j S ©NT)	rM   rQ   rA   Ú
setdefaultr5   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   rN   ¦   s      ÿ
zExpatBuilder.resetc                 C   s–   | j |_| j|_| j|_| j|_| jj	r0| j
|_| j|_| jjrH| j|_| jjrj| 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ÚProcessingInstructionHandlerrH   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   rT   ®   s$    
zExpatBuilder.installc                 C   s‚   |   ¡ }d}zH| d¡}|sqF| |d¡ |r@| jjr@|  |¡ d}q| dd¡ W n tk
rh   Y nX | j}|  ¡  d | _|S )NTi @  r   FÚ )	rU   ÚreadÚParserX   ÚdocumentElementÚ_setup_subsetÚParseEscaperN   rM   )r   Úfilerx   Zfirst_bufferÚbufferÚdocr   r   r   Ú	parseFileÅ   s"    

zExpatBuilder.parseFilec                 C   sP   |   ¡ }z| |d¡ |  |¡ W n tk
r6   Y nX | j}|  ¡  d | _|S rR   )rU   r{   r}   r~   rX   rN   rM   )r   Ústringrx   r�   r   r   r   ÚparseStringÛ   s    zExpatBuilder.parseStringc                 C   s.   | j jr*tƒ }| |¡ | ¡ }|| j j_d S r   )rX   Ú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rj| j |¡tkrjd | j _| j j	d= d }d | j
_d | j
_|r |d k	r†g |j_g |j_d | j
_d | j
_| j| j
_d S ©Néÿÿÿÿ)rX   ÚimplementationZcreateDocumentTypeÚownerDocumentr	   r…   rK   Ú
acceptNodeÚFILTER_REJECTÚ
childNodesrM   re   rg   r   Ú_seqÚ	notationsrj   rc   Ú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   s2   | j jr| j| j_| j| j_| js.| js.t	| _
d S r   )rH   rh   ri   rM   rj   rb   rc   rZ   rK   r   Ú_finish_end_elementr   r   r   r   r“     s
    

z%ExpatBuilder.end_doctype_decl_handlerc                 C   s@   | j  ||¡}t| j|ƒ | jr<| j |¡tkr<| j |¡ d S r   )rX   ZcreateProcessingInstructionr	   rY   rK   rŽ   r�   ÚremoveChild)r   ÚtargetÚdataÚnoder   r   r   rb     s    zExpatBuilder.pi_handlerc                 C   sœ   | j j}| jrH| jr4|d jtkr4|d  |¡ d S | j |¡}d| _nD|rv|d jt	krv|d }|j
| }||_
d S t ¡ }||_
| j|_t| j |ƒ d S )Nr‹   T)rY   r�   r[   Ú_cdata_continueÚnodeTypeÚCDATA_SECTION_NODEZ
appendDatarX   ZcreateCDATASectionÚ	TEXT_NODEr›   r   ÚTextr�   r	   )r   r›   r�   rœ   Úvaluer   r   r   ro     s$    ÿ
z)ExpatBuilder.character_data_handler_cdatac                 C   s^   | j j}|r2|d jtkr2|d }|j| |_d S t ¡ }|j| |_| j|_t	| j |ƒ d S rŠ   )
rY   r�   rž   r    r›   r   r¡   rX   r�   r	   )r   r›   r�   rœ   r   r   r   rq   &  s    z#ExpatBuilder.character_data_handlerc           
      C   s€   |rd S | j jsd S | j ||||¡}|d k	rF| j |¡}	|j |	¡ | jjjj |¡ | j	r|| j	 
|¡tkr|| jjjjd= d S rŠ   )rH   r   rX   Z_create_entityZcreateTextNoder�   Úappendr…   r‘   rK   rŽ   r�   )
r   Z
entityNameZis_parameter_entityr¢   Úbaser•   r–   ÚnotationNamerœ   Úchildr   r   r   rd   1  s    
 ÿz ExpatBuilder.entity_decl_handlerc                 C   sJ   | j  |||¡}| j jjj |¡ | jrF| j |¡tkrF| j jjjd= d S rŠ   )	rX   Z_create_notationr…   r’   r‘   r£   rK   rŽ   ÚFILTER_ACCEPT)r   r¥   r¤   r•   r–   rœ   r   r   r   rf   C  s    z"ExpatBuilder.notation_decl_handlerc                 C   s>   | j  |¡}t| j|ƒ | jr:| j |¡tkr:| j |¡ d S r   )rX   ZcreateCommentr	   rY   rK   rŽ   r�   r™   )r   r›   rœ   r   r   r   ri   I  s    zExpatBuilder.comment_handlerc                 C   s   d| _ d| _d S )NTF©r[   r�   r   r   r   r   rk   O  s    z(ExpatBuilder.start_cdata_section_handlerc                 C   s   d| _ d| _d S rV   r¨   r   r   r   r   rm   S  s    z&ExpatBuilder.end_cdata_section_handlerc                 C   s   dS ©Nr!   r   )r   Úcontextr¤   r•   r–   r   r   r   rr   W  s    z(ExpatBuilder.external_entity_ref_handlerc                 C   s2   | j d kr| jst| _| j|  ¡ _|  ||¡ d S r   )rK   rZ   r   r˜   Ústart_element_handlerrU   r_   )r   r?   Ú
attributesr   r   r   r^   Z  s    z"ExpatBuilder.first_element_handlerc                 C   sŠ   | j  |¡}t| j|ƒ || _|rptdt|ƒdƒD ]<}t || td t	¡}||d  }||_
| j |_t||ƒ q2|| j jk	r†|  |¡ d S )Nr   r;   r!   )rX   ZcreateElementr	   rY   Úranger=   r   ÚAttrr   r   r¢   r�   r
   r|   rL   )r   r?   r¬   rœ   ÚiÚar¢   r   r   r   r«   `  s     ÿz"ExpatBuilder.start_element_handlerc                 C   sj   | j rf|| jjkrd S | j  |¡}|tkr4t| ƒ n|tkrFt| ƒ nd S |j| _	|j 
|¡ | ¡  d S r   )rK   rX   r|   ÚstartContainerr�   ÚRejecterÚFILTER_SKIPÚSkipperÚ
parentNoderY   r™   Úunlink)r   rœ   Zfiltr   r   r   rL   q  s    

z"ExpatBuilder._finish_start_elementc                 C   s   | j }|j| _ |  |¡ d S r   )rY   rµ   r˜   )r   r?   rY   r   r   r   r`   ˆ  s    z ExpatBuilder.end_element_handlerc                 C   s\   | j  |j¡}|r|  ||¡ | jrX|| jjkr4d S | j |¡tkrX| j	 
|¡ | ¡  d S r   )rZ   Úgetr   Ú_handle_white_text_nodesrK   rX   r|   rŽ   r�   rY   r™   r¶   )r   rY   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 ]}| 	|¡ qFd S r   )
rH   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   s0   | j  |¡}|d kr&t||ƒ| j |< n||_d S r   )rZ   r·   r   r   )r   r?   r   r'   r   r   r   ru   ©  s    z!ExpatBuilder.element_decl_handlerc              
   C   sF   | j  |¡}|d kr&t|ƒ}|| j |< |j d |d d |d||g¡ d S ©Nr   )rZ   r·   r   r   r£   )r   Úelemr?   r,   ÚdefaultZrequiredr'   r   r   r   rv   ±  s    
ÿz!ExpatBuilder.attlist_decl_handlerc                 C   s2   || j _|| j _|dkr.|r&d| j _nd| j _d S )Nr   TF)rX   ÚversionÚencodingÚ
standalone)r   r¾   r¿   rÀ   r   r   r   rt   ¹  s    
zExpatBuilder.xml_decl_handler)N)r1   r2   r3   r   rQ   rU   rN   rT   r‚   r„   r}   r\   r“   rb   ro   rq   rd   rf   ri   rk   rm   rr   r^   r«   rL   r`   r˜   r¸   ru   rv   rt   r   r   r   r   rG   …   s8   
rG   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 )	rJ   ©rI   c                 C   s
   || _ d S r   rÁ   )r   rI   r   r   r   r   Î  s    z#FilterVisibilityController.__init__c                 C   sT   | j |j }| jj|@ rL| j |¡}|tkr0t‚|tkrHtdt	|ƒ ƒ‚|S t
S d S )Nz)startContainer() returned illegal value: )Ú_nodetype_maskrž   rI   Ú
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r0t‚|tkr`|j}|j	d d … D ]}| 
|¡ qLtS |tkrxtdt|ƒ ƒ‚|S tS d S )Nz%acceptNode() returned illegal value: )rÂ   rž   rI   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)"r1   r2   r3   r4   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   rJ   È  s:               ôrJ   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Ì   rM   r_   rÎ   ra   rÏ   r«   r`   )r   r6   rx   r   r   r   r     s    zFilterCrutch.__init__N)r1   r2   r3   r4   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)rc   rj   rp   rl   rn   rs   )rË   r   rM   Úsetattr)r   r6   rx   r?   r   r   r   r     s    zRejecter.__init__c                 G   s   | j d | _ d S r©   )rÍ   ©r   Úargsr   r   r   r«     s    zRejecter.start_element_handlerc                 G   s@   | j dkr0| jj}| j |¡ | j|_| j|_n| j d | _ d S ©Nr   r!   )rÍ   rÌ   rM   rT   rÎ   r_   rÏ   ra   )r   rÒ   rx   r   r   r   r`      s    

zRejecter.end_element_handlerN)r1   r2   r3   r4   r   r«   r`   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   s.   | j j}| j|Ž  | j j|k	r*| jd | _d S r©   )rÌ   rY   rÎ   rÍ   )r   rÒ   rœ   r   r   r   r«   -  s    
zSkipper.start_element_handlerc                 G   sD   | j dkr*| j| jj_| j| jj_d | _n| j d | _ | j|Ž  d S rÓ   )rÍ   rÎ   rÌ   rM   r_   rÏ   ra   rÑ   r   r   r   r`   3  s    
zSkipper.end_element_handlerN)r1   r2   r3   r4   r«   r`   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                   @   sF   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�   rG   r   )r   rª   rO   r   r   r   r   [  s    
zFragmentBuilder.__init__c                 C   s   t  | ¡ d | _d S r   )rG   rN   Úfragmentr   r   r   r   rN   d  s    
zFragmentBuilder.resetc                 C   s   |   | ¡ ¡S r   )r„   rz   ©r   r   r   r   r   r‚   h  s    zFragmentBuilder.parseFilec           	      C   sª   || _ |  ¡ }| jj}d}|rV|jp*|  ¡ }|jrDd|j|jf }qZ|jrZd|j }nd}|  ¡ }t	|||f }z| 
|d¡ W n   |  ¡  ‚ Y nX | j}|  ¡  |S )Nry   zPUBLIC "%s" "%s"zSYSTEM "%s"r!   )Ú_sourcerU   rÕ   r…   rˆ   Ú_getDeclarationsr–   r•   Ú_getNSattrsÚ_FRAGMENT_BUILDER_TEMPLATEr{   rN   rÖ   )	r   rƒ   rx   r…   Zidentr‰   ZnsattrsrX   rÖ   r   r   r   r„   m  s.    
ÿzFragmentBuilder.parseStringc                 C   s  | j jj}d}|�rt|jjƒD ]R}|j |¡}|r<|d }d||jf }|jrdd||j|j	f }q d||j	f }q t|j
jƒD ]†}|j
 |¡}|rœ|d }d||jf }|jrÄd||j|j	f }n&|j	rÚd||j	f }nd	||jjf }|jrþd
||jf }|d }q€|S )Nry   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’   ZlengthÚitemZnodeNamer–   r•   r   Z
firstChildr›   r¥   )r   r…   r7   r¯   Znotationr   r   r   r   rÙ   ‰  s:    
ÿÿ
z FragmentBuilder._getDeclarationsc                 C   s   dS )Nry   r   r   r   r   r   rÚ   ­  s    zFragmentBuilder._getNSattrsc                 C   s~   |t krh| j}| j}| j |¡}| j| _| j ¡ | _| j| _z| 	| jd¡ W 5 || _|| _d | _X dS t
 | ||||¡S d S )Nr!   r‹   )Ú$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDrX   rY   rM   ZExternalEntityParserCreaterÕ   ZcreateDocumentFragmentrÖ   rØ   r{   rG   rr   )r   rª   r¤   r•   r–   Zold_documentZold_cur_noderx   r   r   r   rr   °  s(        ÿz+FragmentBuilder.external_entity_ref_handler)N)
r1   r2   r3   r   rN   r‚   r„   rÙ   rÚ   rr   r   r   r   r   rÔ   R  s   	
	$rÔ   c                   @   s4   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 )Nr9   )Znamespace_separatorT)r   rP   Znamespace_prefixesrw   r   r   r   rQ   Ï  s    zNamespaces.createParserc                 C   s    t  | |¡ | jjr| j|_d S r   )rG   rT   rH   Znamespace_declarationsÚstart_namespace_decl_handlerZStartNamespaceDeclHandlerrw   r   r   r   rT   Õ  s    ÿzNamespaces.installc                 C   s   | j  ||f¡ d S r   )rà   r£   )r   rD   rB   r   r   r   râ   Ü  s    z'Namespaces.start_namespace_decl_handlerc                 C   s‚  d|krt | |ƒ\}}}}nt}|}d }t}t ||||¡}| j|_t| j|ƒ || _| j	rÀ| j	D ]P\}}|rŠt 
t| d| ƒt|d¡}nt 
dtdt¡}||_| j|_t||ƒ qb| j	d d …= |�r~| ¡  |j}	|j}
tdt|ƒdƒD ]’}|| }||d  }d|k�rDt | |ƒ\}}}}t 
||||¡}||	|< ||
||f< n$t 
|t|t¡}||	|< ||
t|f< | j|_||_||_qêd S )Nr9   úxmlns:Úxmlnsr   r;   r!   )rF   r   r   r   ZElementrX   r�   r	   rY   rà   r®   r8   r   r¢   r
   Z_ensure_attributesÚ_attrsÚ_attrsNSr­   r=   ZownerElement)r   r?   r¬   rB   rC   rD   rE   rœ   r°   rå   ræ   r¯   r&   r¢   r   r   r   r«   à  s^      ÿ ÿ
 ÿz Namespaces.start_element_handlerN)	r1   r2   r3   rá   rQ   rT   râ   r«   r`   r   r   r   r   rß   Ç  s   5rß   c                   @   s   e Zd Zdd„ ZdS )ÚExpatBuilderNSc                 C   s   t  | ¡ |  ¡  d S r   )rG   rN   rá   r   r   r   r   rN   )  s    
zExpatBuilderNS.resetN)r1   r2   r3   rN   r   r   r   r   rç   &  s   rç   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚFragmentBuilderNSc                 C   s   t  | ¡ |  ¡  d S r   )rÔ   rN   rá   r   r   r   r   rN   1  s    
zFragmentBuilderNS.resetc                 C   s‚   d}| j }g }|r~t|dƒrv|j ¡ D ]N\}}||kr8q&| |¡ |rPd| }nd}|rhd|||f }q&d||f }q&|j}q|S )Nry   Ú_ns_prefix_urirã   rä   z%s
    %s='%s'z %s='%s')rª   Úhasattrré   Úitemsr£   rµ   )r   Úattrsrª   rº   rD   rB   Zdeclnamer   r   r   rÚ   5  s"    


zFragmentBuilderNS._getNSattrsN)r1   r2   r3   rN   rÚ   r   r   r   r   rè   .  s   rè   c                   @   s   e Zd ZdS )r~   N)r1   r2   r3   r   r   r   r   r~   S  s   r~   c                   @   sH   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   s*   zt  | |¡ W n tk
r$   Y nX d S r   )rG   r‚   r~   r×   r   r   r   r‚   `  s    z!InternalSubsetExtractor.parseFilec                 C   s*   zt  | |¡ W n tk
r$   Y nX d S r   )rG   r„   r~   )r   rƒ   r   r   r   r„   f  s    z#InternalSubsetExtractor.parseStringc                 C   s   | j |_| j|_d S r   )r\   r]   r«   r_   rw   r   r   r   rT   l  s    zInternalSubsetExtractor.installc                 C   s0   |r&|   ¡ }g | _| jj|_| j|_ntƒ ‚d S r   )rU   r‰   r£   ZDefaultHandlerr“   r”   r~   )r   r?   r–   r•   r—   rx   r   r   r   r\   p  s    

z2InternalSubsetExtractor.start_doctype_decl_handlerc                 C   s,   d  | j¡ dd¡ dd¡}|| _tƒ ‚d S )Nry   z
Ú
ú)Újoinr‰   Úreplacer~   )r   r7   r   r   r   r“   z  s    z0InternalSubsetExtractor.end_doctype_decl_handlerc                 C   s
   t ƒ ‚d S r   )r~   )r   r?   rì   r   r   r   r«     s    z-InternalSubsetExtractor.start_element_handler)r1   r2   r3   r‰   r‡   r‚   r„   rT   r\   r“   r«   r   r   r   r   r†   W  s   
r†   Tc              	   C   sL   |rt ƒ }ntƒ }t| tƒr>t| dƒ�}| |¡}W 5 Q R X n
| | ¡}|S ©NÚrb)rç   rG   Ú
isinstanceÚstrÚopenr‚   )r   Ú
namespacesr6   ÚfpÚresultr   r   r   Úparseƒ  s    

rù   c                 C   s   |rt ƒ }ntƒ }| | ¡S r   )rç   rG   r„   )rƒ   rö   r6   r   r   r   r„   •  s    r„   c              	   C   sP   |rt |ƒ}nt|ƒ}t| tƒrBt| dƒ�}| |¡}W 5 Q R X n
| | ¡}|S rñ   )rè   rÔ   ró   rô   rõ   r‚   )r   rª   rö   r6   r÷   rø   r   r   r   ÚparseFragment   s    


rú   c                 C   s    |rt |ƒ}nt|ƒ}| | ¡S r   )rè   rÔ   r„   )rƒ   rª   rö   r6   r   r   r   ÚparseFragmentString´  s    
rû   c                 C   s   | j rt| ƒS t| ƒS d S r   )rö   rç   rG   )rO   r   r   r   ÚmakeBuilderÀ  s    rü   )T)T)T)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getDOMImplementationrW   ZTypeInfor$   Úobjectr   r8   rF   rG   rÅ   rJ   rË   r²   r´   rÞ   rÛ   rÔ   rß   rç   rè   Ú	Exceptionr~   r†   rù   r„   rú   rû   rü   r   r   r   r   Ú<module>   sd   








÷3  C
:ÿ	÷ÿu_%,



