Edit File: expatbuilder.cpython-36.pyc
3 � \��������������������@���s��d�Z�ddlmZmZmZ�ddlmZmZmZ�ddlm Z �ddl mZmZ�ddl mZ�ejZejZejZejjZejjZejjZejjZej��Zejdd�ejdd �ejdd �ejdd�ejdd�ejdd �ejdd�ejdd�ejdd�d� ZG�dd��de�Zdd��Zdd��ZG�dd��d�ZeeefZ G�dd��de�Z!G�dd��de�Z"G�dd��de"�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;d1d2�Z.d<d3d4�Z/d=d5d6�Z0d>d7d8�Z1d9d:��Z2dS�)?z�Facility to use the Expat parser to load a minidom instance from a string or file. This avoids all the overhead of SAX and pulldom to gain performance. �����)� xmlbuilder�minidom�Node)�EMPTY_NAMESPACE�EMPTY_PREFIX�XMLNS_NAMESPACE)�expat)� _append_child�_set_attribute_node)� NodeFilterNZcdata�enumeration�entity�entities�idZidrefZidrefsZnmtokenZnmtokens) ZCDATA�ENUMZENTITYZENTITIES�IDZIDREFZIDREFSZNMTOKENZNMTOKENSc���������������@���sZ���e�Zd�ZdZddd�Zdd��Zd d ��Zdd��Zd d��Zdd��Z dd��Z dd��Zdd��ZdS�)�ElementInfo� _attr_info�_model�tagNameNc�������������C���s���||�_�g�|�_||�_d�S�)N)r���r���r���)�selfr����model��r����,/usr/lib64/python3.6/xml/dom/expatbuilder.py�__init__?���s����zElementInfo.__init__c�������������C���s���|�j�|�j|�jfS�)N)r���r���r���)r���r���r���r����__getstate__D���s����zElementInfo.__getstate__c�������������C���s���|\|�_�|�_|�_d�S�)N)r���r���r���)r����stater���r���r����__setstate__G���s����zElementInfo.__setstate__c�������������C���sJ���xB|�j�D�]8}|d�|kr|d�}|d�dkr4td�S�t|d��S�qW�tjS�)N��������r����(r������r!���)r���� _typeinfo_mapr����_no_type)r����aname�info�tr���r���r����getAttributeTypeJ���s����zElementInfo.getAttributeTypec�������������C���s���t�jS�)N)r���r#���)r����namespaceURI� localNamer���r���r����getAttributeTypeNST���s����zElementInfo.getAttributeTypeNSc�������������C���s,���|�j�r$|�j�d�}|tjjtjjfkS�dS�d�S�)Nr���F)r���r���r���Z XML_CTYPE_ANYZXML_CTYPE_MIXED)r����typer���r���r����isElementContentW���s ���� zElementInfo.isElementContentc�������������C���s ���|�j�r|�j�d�tjjkS�dS�d�S�)Nr���F)r���r���r���ZXML_CTYPE_EMPTY)r���r���r���r����isEmpty_���s����zElementInfo.isEmptyc�������������C���s,���x&|�j�D�]}|d�|kr|d�dkS�qW�dS�)Nr���r���r���Fr!���)r���)r���r$���r%���r���r���r����isIde���s����zElementInfo.isIdc�������������C���s���|�j�||f�S�)N)r.���)r���ZeuriZenameZaurir$���r���r���r����isIdNSk���s����zElementInfo.isIdNS)r���r���r���)N) �__name__� __module__�__qualname__� __slots__r���r���r���r'���r*���r,���r-���r.���r/���r���r���r���r���r���<���s��� r���c�������������C���s���|�j�||�S�)N)�_intern_setdefault)�builder�sr���r���r����_interno���s����r7���c�������������C���s����d|kst��|jd�}|�j}t|�dkr^|\}}}|||�}d||f�}|||�}|||�}n4t|�dkr�|\}}t}|||��}}ntd|���|||�|||fS�)N� ����z%s:%sr���z4Unsupported syntax: spaces in URIs not supported: %r)�AssertionError�splitr4����lenr���� ValueError)r5����name�parts�intern�uri� localname�prefix�qnamer���r���r����_parse_ns_namer���s���� rE���c���������������@���s����e�Zd�ZdZd;dd�Zdd��Zdd��Zd d ��Zdd��Zd d��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��Zdd��Zdd ��Zd!d"��Zd#d$��Zd%d&��Zd'd(��Zd)d*��Zd+d,��Zd-d.��Zd/d0��Zd1d2��Zd3d4��Zd5d6��Zd7d8��Zd9d:��ZdS�)<�ExpatBuilderzPDocument builder that uses Expat to build a ParsedXML.DOM document instance.Nc�������������C���sP���|d�krt�j��}||�_|�jjd�k r2t|�jj�|�_nd�|�_t|�_d�|�_|�j ���d�S�)N) r���ZOptions�_options�filter�FilterVisibilityController�_filterr����_finish_start_element�_parser�reset)r����optionsr���r���r���r�������s����zExpatBuilder.__init__c�������������C���s���t�j��S�)zCreate a new parser object.)r����ParserCreate)r���r���r���r����createParser����s����zExpatBuilder.createParserc�������������C���sF���|�j�s@|�j��|�_�|�j�jj|�_d|�j�_d|�j�_d|�j�_|�j|�j���|�j�S�)z7Return the parser object, creating a new one if needed.T) rL���rP���r@���� setdefaultr4���Zbuffer_textZordered_attributesZspecified_attributes�install)r���r���r���r���� getParser����s���� zExpatBuilder.getParserc�������������C���s,���t�jtdd�|�_|�j|�_|�jj|�_d|�_dS�)z6Free all data structures used during DOM construction.NF)�theDOMImplementationZcreateDocumentr����document�curNode� _elem_info�_cdata)r���r���r���r���rM�������s ���� zExpatBuilder.resetc�������������C���s����|�j�|_|�j|_|�j|_|�j|_|�jj r0|�j |_|�j|_ |�jjrH|�j|_|�jjrj|�j|_|�j|_|�j|_n|�j|_|�j|_|�j|_|�j|_|�j|_ dS�)z>Install the callbacks needed to build the DOM into the parser.N)!�start_doctype_decl_handler�StartDoctypeDeclHandler�first_element_handler�StartElementHandler�end_element_handler�EndElementHandler� pi_handler�ProcessingInstructionHandlerrG���r����entity_decl_handler�EntityDeclHandler�notation_decl_handler�NotationDeclHandler�comments�comment_handler�CommentHandlerZcdata_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_handlerZXmlDeclHandler�element_decl_handlerZElementDeclHandler�attlist_decl_handlerZAttlistDeclHandler)r����parserr���r���r���rR�������s$���� zExpatBuilder.installc�������������C���s����|�j���}d}yLx:|jd�}|s P�|j|d��|rB|�jjrB|�j|��d}qW�|jdd��W�n�tk rl���Y�nX�|�j}|�j���d|�_|S�) zIParse a document from a file object, returning the document node.T����i���r���F��Ni�@��) rS����read�ParserU����documentElement� _setup_subset�ParseEscaperM���rL���)r����filert���Zfirst_buffer�buffer�docr���r���r���� parseFile����s$���� zExpatBuilder.parseFilec�������������C���sP���|�j���}y|j|d��|�j|��W�n�tk r6���Y�nX�|�j}|�j���d|�_|S�)z<Parse a document from a string, returning the document node.TN)rS���rx���rz���r{���rU���rM���rL���)r����stringrt���r~���r���r���r����parseString����s����zExpatBuilder.parseStringc�������������C���s.���|�j�jr*t��}|j|��|j��}||�j�j_dS�)z/Load the internal subset if there might be one.N)rU����doctype�InternalSubsetExtractorr����� getSubset�internalSubset)r���r}���Z extractor�subsetr���r���r���rz�������s ���� zExpatBuilder._setup_subsetc�������������C���s����|�j�jj|||�}|�j�|_t|�j�|��||�j�_|�jrj|�jj|�tkrjd�|�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�)Nr������)rU����implementationZcreateDocumentType� ownerDocumentr ���r����rJ���� acceptNode� FILTER_REJECT� childNodesrL���rb���rd���r����_seq� notationsrg���r`����end_doctype_decl_handler�EndDoctypeDeclHandler)r���ZdoctypeName�systemId�publicId�has_internal_subsetr����r���r���r���rY�������s$���� z'ExpatBuilder.start_doctype_decl_handlerc�������������C���s2���|�j�jr|�j|�j_|�j|�j_|�jp&|�js.t |�_ d�S�)N)rG���re���rf���rL���rg���r_���r`���rW���rJ���r����_finish_end_element)r���r���r���r���r������s ���� z%ExpatBuilder.end_doctype_decl_handlerc�������������C���s@���|�j�j||�}t|�j|��|�jr<|�jj|�tkr<|�jj|��d�S�)N)rU���ZcreateProcessingInstructionr ���rV���rJ���r����r�����removeChild)r����target�data�noder���r���r���r_�����s����zExpatBuilder.pi_handlerc�������������C���s����|�j�j}|�jrH|�jr4|d�jtkr4|d�j|��d�S�|�jj|�}d|�_nD|rv|d�jt krv|d�}|j |�}||_ d�S�tj��}||_ |�j|_ t|�j�|��d�S�)Nr���Tr����r����r����r����)rV���r����rX����_cdata_continue�nodeType�CDATA_SECTION_NODEZ appendDatarU���ZcreateCDATASection� TEXT_NODEr����r����Textr����r ���)r���r����r����r�����valuer���r���r���rl�����s"���� z)ExpatBuilder.character_data_handler_cdatac�������������C���s^���|�j�j}|r2|d�jtkr2|d�}|j|�|_d�S�tj��}|j|�|_|�j|_t |�j�|��d�S�)Nr���r����r����) rV���r����r����r����r����r���r����rU���r����r ���)r���r����r����r����r���r���r���rn���&��s����z#ExpatBuilder.character_data_handlerc������� ������C���s����|rd�S�|�j�jsd�S�|�jj||||�}|d�k rF|�jj|�} |jj| ��|�jjjjj|��|�j r||�j j |�tkr||�jjjjd=�d�S�)Nr���r����)rG���r���rU���Z_create_entityZcreateTextNoder�����appendr����r����rJ���r����r����) r���Z entityNameZis_parameter_entityr�����baser����r�����notationNamer�����childr���r���r���ra���1��s���� z ExpatBuilder.entity_decl_handlerc�������������C���sJ���|�j�j|||�}|�j�jjjj|��|�jrF|�jj|�tkrF|�j�jjjd=�d�S�)Nr���r����) rU���Z_create_notationr����r����r����r����rJ���r����� FILTER_ACCEPT)r���r����r����r����r����r����r���r���r���rc���C��s����z"ExpatBuilder.notation_decl_handlerc�������������C���s>���|�j�j|�}t|�j|��|�jr:|�jj|�tkr:|�jj|��d�S�)N)rU���Z createCommentr ���rV���rJ���r����r����r����)r���r����r����r���r���r���rf���I��s����zExpatBuilder.comment_handlerc�������������C���s���d|�_�d|�_d�S�)NTF)rX���r����)r���r���r���r���rh���O��s����z(ExpatBuilder.start_cdata_section_handlerc�������������C���s���d|�_�d|�_d�S�)NF)rX���r����)r���r���r���r���rj���S��s����z&ExpatBuilder.end_cdata_section_handlerc�������������C���s���dS�)Nr���r���)r����contextr����r����r����r���r���r���ro���W��s����z(ExpatBuilder.external_entity_ref_handlerc�������������C���s4���|�j�d�kr|�j�rt|�_|�j|�j��_|�j||��d�S�)N)rJ���rW���r���r�����start_element_handlerrS���r\���)r���r>���� attributesr���r���r���r[���Z��s����z"ExpatBuilder.first_element_handlerc�������������C���s����|�j�j|�}t|�j|��||�_|rtxPtdt|�d�D�]<}tj||�td�t �}||d��}||_ |�j�|_t||��q4W�||�j�j k r�|�j|��d�S�)Nr���r���r���)rU���Z createElementr ���rV����ranger<���r����Attrr���r���r����r����r ���ry���rK���)r���r>���r����r�����i�ar����r���r���r���r����`��s����z"ExpatBuilder.start_element_handlerc�������������C���sj���|�j�rf||�jjkrd�S�|�j�j|�}|tkr4t|���n|tkrFt|���nd�S�|j|�_ |jj |��|j���d�S�)N)rJ���rU���ry����startContainerr�����Rejecter�FILTER_SKIP�Skipper� parentNoderV���r�����unlink)r���r����Zfiltr���r���r���rK���q��s���� z"ExpatBuilder._finish_start_elementc�������������C���s���|�j�}|j|�_�|�j|��d�S�)N)rV���r����r����)r���r>���rV���r���r���r���r]������s����z ExpatBuilder.end_element_handlerc�������������C���s\���|�j�j|j�}|r|�j||��|�jrX||�jjkr4d�S�|�jj|�tkrX|�j j |��|j���d�S�)N)rW����getr����_handle_white_text_nodesrJ���rU���ry���r����r����rV���r����r����)r���rV���r%���r���r���r���r�������s����z ExpatBuilder._finish_end_elementc�������������C���sf���|�j�js|j���rd�S�g�}x.|jD�]$}|jtkr"|jj���r"|j|��q"W�x|D�]}|j |��qPW�d�S�)N) rG���Zwhitespace_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���s>���|�j�j|�}|d�kr&t||�|�j�|<�n|jd�ks4t�||_d�S�)N)rW���r����r���r���r:���)r���r>���r���r%���r���r���r���rr������s ����z!ExpatBuilder.element_decl_handlerc���������� ���C���sF���|�j�j|�}|d�kr&t|�}||�j�|<�|jjd�|d�d�|d||g��d�S�)Nr���)rW���r����r���r���r����)r����elemr>���r+����defaultZrequiredr%���r���r���r���rs������s���� z!ExpatBuilder.attlist_decl_handlerc�������������C���s2���||�j�_||�j�_|dkr.|r&d|�j�_nd|�j�_d�S�)Nr���TF)rU����version�encoding� standalone)r���r����r����r����r���r���r���rq������s���� zExpatBuilder.xml_decl_handler)N) r0���r1���r2����__doc__r���rP���rS���rM���rR���r���r����rz���rY���r����r_���rl���rn���ra���rc���rf���rh���rj���ro���r[���r����rK���r]���r����r����rr���rs���rq���r���r���r���r���rF�������s:��� rF���c���������������@���s����e�Zd�ZdZd Zdd��Zdd��Zdd��Zej e jeje j eje jeje jeje jeje jeje jeje jeje jeje jeje jej e j!iZ"d S�)rI���zoWrapper around a DOMBuilderFilter which implements the checks to make the whatToShow filter attribute work.rH���c�������������C���s ���||�_�d�S�)N)rH���)r���rH���r���r���r���r������s����z#FilterVisibilityController.__init__c�������������C���sT���|�j�|j�}|�jj|@�rL|�jj|�}|tkr0t�|tkrHtdt |����|S�t S�d�S�)Nz)startContainer() returned illegal value: )�_nodetype_maskr����rH���� whatToShowr�����FILTER_INTERRUPTr{����_ALLOWED_FILTER_RETURNSr=����reprr����)r���r�����mask�valr���r���r���r�������s����z)FilterVisibilityController.startContainerc�������������C���s����|�j�|j�}|�jj|@�r�|�jj|�}|tkr0t�|tkrd|j}x |j d�d���D�]}|j |��qNW�tS�|tkr|t dt|����|S�tS�d�S�)Nz%acceptNode() returned illegal value: )r����r����rH���r����r����r����r{���r����r����r����ZappendChildr����r����r=���r����r����)r���r����r����r�����parentr����r���r���r���r�������s����z%FilterVisibilityController.acceptNodeN)rH���)#r0���r1���r2���r����r3���r���r����r����r���ZELEMENT_NODEr���ZSHOW_ELEMENTZATTRIBUTE_NODEZSHOW_ATTRIBUTEr����Z SHOW_TEXTr����ZSHOW_CDATA_SECTIONZENTITY_REFERENCE_NODEZSHOW_ENTITY_REFERENCEZENTITY_NODEZSHOW_ENTITYZPROCESSING_INSTRUCTION_NODEZSHOW_PROCESSING_INSTRUCTIONZCOMMENT_NODEZSHOW_COMMENT� DOCUMENT_NODEZ SHOW_DOCUMENTZDOCUMENT_TYPE_NODEZSHOW_DOCUMENT_TYPEZDOCUMENT_FRAGMENT_NODEZSHOW_DOCUMENT_FRAGMENTZ NOTATION_NODEZ SHOW_NOTATIONr����r���r���r���r���rI������s"��� rI���c���������������@���s���e�Zd�ZdZdd��ZdS�) �FilterCrutch�_builder�_level� _old_start�_old_endc�������������C���s6���d|�_�||�_|j}|j|�_|j|�_|�j|_|�j|_d�S�)Nr���) r����r����rL���r\���r����r^���r����r����r]���)r���r5���rt���r���r���r���r�����s����zFilterCrutch.__init__N)r����r����r����r����)r0���r1���r2���r3���r���r���r���r���r���r������s���r����c���������������@���s(���e�Zd�Zf�Zdd��Zdd��Zdd��ZdS�)r����c�������������C���s0���t�j|�|��|j}xdD�]}t||d���qW�d�S�)Nr`���rg���rm���ri���rk���rp���)r`���rg���rm���ri���rk���rp���)r����r���rL����setattr)r���r5���rt���r>���r���r���r���r�����s��������zRejecter.__init__c�������������G���s���|�j�d�|�_�d�S�)Nr���)r����)r����argsr���r���r���r������s����zRejecter.start_element_handlerc�������������G���s@���|�j�dkr0|�jj}|�jj|��|�j|_|�j|_n|�j�d�|�_�d�S�)Nr���r���)r����r����rL���rR���r����r\���r����r^���)r���r����rt���r���r���r���r]��� ��s���� zRejecter.end_element_handlerN)r0���r1���r2���r3���r���r����r]���r���r���r���r���r������s���r����c���������������@���s ���e�Zd�Zf�Zdd��Zdd��ZdS�)r����c�������������G���s.���|�j�j}|�j|���|�j�j|k r*|�jd�|�_d�S�)Nr���)r����rV���r����r����)r���r����r����r���r���r���r����-��s���� zSkipper.start_element_handlerc�������������G���sD���|�j�dkr*|�j|�jj_|�j|�jj_d�|�_n|�j�d�|�_�|�j|���d�S�)Nr���r���)r����r����r����rL���r\���r����r^���)r���r����r���r���r���r]���3��s���� zSkipper.end_element_handlerN)r0���r1���r2���r3���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���������������@���sJ���e�Zd�ZdZddd�Zdd��Zdd��Zd d ��Zdd��Zd d��Z dd��Z dS�)�FragmentBuilderz�Builder which constructs document fragments given XML source text and a context node. The context node is expected to provide information about the namespace declarations which are in scope at the start of the fragment. Nc�������������C���s6���|j�tkr||�_||�_n|j|�_||�_tj|�|��d�S�)N)r����r�����originalDocumentr����r����rF���r���)r���r����rN���r���r���r���r���[��s���� zFragmentBuilder.__init__c�������������C���s���t�j|���d�|�_d�S�)N)rF���rM����fragment)r���r���r���r���rM���d��s���� zFragmentBuilder.resetc�������������C���s���|�j�|j���S�)zRParse a document fragment from a file object, returning the fragment node.)r����rw���)r���r|���r���r���r���r���h��s����zFragmentBuilder.parseFilec������� ��� ���C���s����||�_�|�j��}|�jj}d}|rV|jp*|�j��}|jrDd|j|jf�}qZ|jrZd|j�}nd}|�j��}t |||f�}y|j |d��W�n���|�j�����Y�nX�|�j}|�j���|S�)zMParse a document fragment from a string, returning the fragment node.rv���zPUBLIC "%s" "%s"zSYSTEM "%s"r���) �_sourcerS���r����r����r�����_getDeclarationsr����r�����_getNSattrs�_FRAGMENT_BUILDER_TEMPLATErx���rM���r����) r���r����rt���r����Zidentr����ZnsattrsrU���r����r���r���r���r����m��s,����zFragmentBuilder.parseStringc�������������C���s��|�j�jj}d}|�rxbt|jj�D�]R}|jj|�}|r>|d�}d||jf�}|jrfd||j|j f�}q"d||j f�}q"W�x�t|j j�D�]�}|j j|�}|r�|d�}d||jf�}|jr�d||j|j f�}n&|j r�d||j f�}nd ||jjf�}|j �rd ||j f�}|d�}q�W�|S�)z�Re-create the internal subset from the DocumentType node. This is only needed if we don't already have the internalSubset as a string. rv���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����Zlength�item�nodeNamer����r����r���Z firstChildr����r����)r���r����r6���r����Znotationr ���r���r���r���r�������s6���� z FragmentBuilder._getDeclarationsc�������������C���s���dS�)Nrv���r���)r���r���r���r���r�������s����zFragmentBuilder._getNSattrsc�������������C���s~���|t�krh|�j}|�j}|�jj|�}|�j|�_|�jj��|�_|�j|�_z|j|�j d��W�d�||�_||�_d�|�_ X�dS�t j|�||||�S�d�S�)Nr���r����)�$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDrU���rV���rL���ZExternalEntityParserCreater����ZcreateDocumentFragmentr����rx���r����rF���ro���)r���r����r����r����r����Zold_documentZold_cur_nodert���r���r���r���ro������s����z+FragmentBuilder.external_entity_ref_handler)N)r0���r1���r2���r����r���rM���r���r����r����r����ro���r���r���r���r���r����R��s��� $r����c���������������@���s@���e�Zd�ZdZdd��Zdd��Zdd��Zdd ��Zd d��Zdd ��Z dS�)� Namespacesz7Mix-in class for builders; adds support for namespaces.c�������������C���s ���g�|�_�d�S�)N)�_ns_ordered_prefixes)r���r���r���r����_initNamespaces���s����zNamespaces._initNamespacesc�������������C���s���t�jdd�}d|_|S�)z'Create a new namespace-handling parser.r8���)Znamespace_separatorT)r���rO���Znamespace_prefixes)r���rt���r���r���r���rP������s����zNamespaces.createParserc�������������C���s ���t�j|�|��|�jjr|�j|_dS�)z.Insert the namespace-handlers onto the parser.N)rF���rR���rG���Znamespace_declarations�start_namespace_decl_handlerZStartNamespaceDeclHandler)r���rt���r���r���r���rR������s����zNamespaces.installc�������������C���s���|�j�j||f��dS�)z/Push this namespace declaration on our storage.N)r����r����)r���rC���rA���r���r���r���r�������s����z'Namespaces.start_namespace_decl_handlerc�������������C���s���d|krt�|�|�\}}}}nt}|}d�}t}tj||||�}|�j|_t|�j|��||�_|�j r�xZ|�j D�]P\}}|r�tj t|�d|��t|d�}ntj dtdt�}||_ |�j|_t||��qdW�|�j d�d��=�|�r�|j���|j} |j} x�tdt|�d�D�]�}||�}||d��} d|k�rJt�|�|�\}}}}tj ||||�}|| |<�|| ||f<�n$tj |t|t�}|| |<�|| t|f<�|�j|_| |_ ||_q�W�d�S�)Nr8���zxmlns:�xmlnsr���r���r���)rE���r���r���r���ZElementrU���r����r ���rV���r����r����r7���r���r����r ���Z_ensure_attributes�_attrs�_attrsNSr����r<���ZownerElement)r���r>���r����rA���rB���rC���rD���r����r����r����r����r����r$���r����r���r���r���r�������sP���� z Namespaces.start_element_handlerc�������������C���s����|�j�}d|krHt|�|�\}}}}|j|kr>|j|kr>|j|ksltd��n$|j|ksZtd��|jtksltd��|j|�_�|�j |��d�S�)Nr8���z$element stack messed up! (namespace)z&element stack messed up - bad nodeNamez*element stack messed up - bad namespaceURI) rV���rE���r(���r)���rC���r:���r����r���r����r����)r���r>���rV���rA���rB���rC���rD���r���r���r���r]�����s���� zNamespaces.end_element_handlerN) r0���r1���r2���r����r����rP���rR���r����r����r]���r���r���r���r���r�������s���5r����c���������������@���s���e�Zd�ZdZdd��ZdS�)�ExpatBuilderNSz*Document builder that supports namespaces.c�������������C���s���t�j|���|�j���d�S�)N)rF���rM���r����)r���r���r���r���rM���)��s���� zExpatBuilderNS.resetN)r0���r1���r2���r����rM���r���r���r���r���r����&��s���r����c���������������@���s ���e�Zd�ZdZdd��Zdd��ZdS�)�FragmentBuilderNSz*Fragment builder that supports namespaces.c�������������C���s���t�j|���|�j���d�S�)N)r����rM���r����)r���r���r���r���rM���1��s���� zFragmentBuilderNS.resetc�������������C���s����d}|�j�}g�}xv|r�t|d�r|x\|jj��D�]N\}}||kr<q*|j|��|rTd|�}nd}|rld|||f�}q*d||f�}q*W�|j}qW�|S�)zNReturn string of namespace attributes from this element and ancestors.rv����_ns_prefix_urizxmlns:r����z%s %s='%s'z %s='%s')r�����hasattrr�����itemsr����r����)r����attrsr����r����rC���rA���Zdeclnamer���r���r���r����5��s"���� zFragmentBuilderNS._getNSattrsN)r0���r1���r2���r����rM���r����r���r���r���r���r����.��s���r����c���������������@���s���e�Zd�ZdZdS�)r{���zEException raised to short-circuit parsing in InternalSubsetExtractor.N)r0���r1���r2���r����r���r���r���r���r{���S��s���r{���c���������������@���sL���e�Zd�ZdZdZdd��Zdd��Zdd��Zd d ��Zdd��Z d d��Z dd��ZdS�)r����zBXML processor which can rip out the internal document type subset.Nc�������������C���s���|�j�S�)z'Return the internal subset as a string.)r����)r���r���r���r���r����\��s����z!InternalSubsetExtractor.getSubsetc�������������C���s*���yt�j|�|��W�n�tk r$���Y�nX�d�S�)N)rF���r���r{���)r���r|���r���r���r���r���`��s����z!InternalSubsetExtractor.parseFilec�������������C���s*���yt�j|�|��W�n�tk r$���Y�nX�d�S�)N)rF���r����r{���)r���r����r���r���r���r����f��s����z#InternalSubsetExtractor.parseStringc�������������C���s���|�j�|_|�j|_d�S�)N)rY���rZ���r����r\���)r���rt���r���r���r���rR���l��s����zInternalSubsetExtractor.installc�������������C���s0���|r&|�j���}g�|�_|�jj|_|�j|_nt���d�S�)N)rS���r����r����ZDefaultHandlerr����r����r{���)r���r>���r����r����r����rt���r���r���r���rY���p��s���� z2InternalSubsetExtractor.start_doctype_decl_handlerc�������������C���s,���dj�|�j�jdd�jdd�}||�_t���d�S�)Nrv���z � � )�joinr�����replacer{���)r���r6���r���r���r���r����z��s����z0InternalSubsetExtractor.end_doctype_decl_handlerc�������������C���s ���t����d�S�)N)r{���)r���r>���r����r���r���r���r������s����z-InternalSubsetExtractor.start_element_handler)r0���r1���r2���r����r����r����r���r����rR���rY���r����r����r���r���r���r���r����W��s��� r����Tc���������� ���C���sL���|rt���}nt��}t|�t�r>t|�d��}|j|�}W�dQ�R�X�n |j|��}|S�)z{Parse a document, returning the resulting Document node. 'file' may be either a file name or an open file object. �rbN)r����rF���� isinstance�str�openr���)r|���� namespacesr5����fp�resultr���r���r����parse���s���� r����c�������������C���s���|rt���}nt��}|j|��S�)zOParse a document from a string, returning the resulting Document node. )r����rF���r����)r����r����r5���r���r���r���r�������s����r����c���������� ���C���sP���|rt�|�}nt|�}t|�t�rBt|�d��}|j|�}W�dQ�R�X�n |j|��}|S�)z�Parse a fragment of a document, given the context from which it was originally extracted. context should be the parent of the node(s) which are in the fragment. 'file' may be either a file name or an open file object. r����N)r����r����r����r����r����r���)r|���r����r����r5���r����r����r���r���r���� parseFragment���s���� r����c�������������C���s ���|rt�|�}nt|�}|j|��S�)z�Parse a fragment of a document from a string, given the context from which it was originally extracted. context should be the parent of the node(s) which are in the fragment. )r����r����r����)r����r����r����r5���r���r���r����parseFragmentString���s���� r����c�������������C���s���|�j�rt|��S�t|��S�dS�)z,Create a builder based on an Options object.N)r����r����rF���)rN���r���r���r����makeBuilder���s����r����)T)T)T)T)3r����Zxml.domr���r���r���r���r���r���Zxml.parsersr���Zxml.dom.minidomr ���r ���Zxml.dom.NodeFilterr���r����r����r����ZDOMBuilderFilterr����r����r����r����ZgetDOMImplementationrT���ZTypeInfor"����objectr���r7���rE���rF���r����rI���r����r����r����r����r����r����r����r����r����� Exceptionr{���r����r����r����r����r����r����r���r���r���r����<module>���s^��� 3��C :u_%,