Your IP : 18.117.196.51


Current Path : /opt/alt/python313/lib64/python3.13/xml/dom/__pycache__/
Upload File :
Current File : //opt/alt/python313/lib64/python3.13/xml/dom/__pycache__/expatbuilder.cpython-313.pyc

�

2}gm����SrSSKJrJrJr SSKJrJrJr SSKJ	r	 SSK
JrJr SSK
Jr \Rr\R r\R"r\R$R&r\R$R(r\R$R*r\R$R,r\R."5r\R2"SS5\R2"SS	5\R2"SS
5\R2"SS5\R2"SS5\R2"SS
5\R2"SS5\R2"SS5\R2"SS5S.	r"SS\5rSrSr"SS5r\\\4r "SS\5r!"SS\5r""SS\"5r#"SS\"5r$S r%S!\%-r&"S"S#\5r'"S$S%5r("S&S'\(\5r)"S(S)\(\'5r*"S*S+\+5r,"S,S-\5r-S3S.jr.S3S/jr/S3S0jr0S3S1jr1S2r2g)4z�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)�
NodeFilterN�cdata�enumeration�entity�entities�id�idref�idrefs�nmtoken�nmtokens)	�CDATA�ENUM�ENTITY�ENTITIES�ID�IDREF�IDREFS�NMTOKEN�NMTOKENSc�R�\rSrSrSrS
SjrSrSrSrSr	S	r
S
rSrSr
Srg)�ElementInfo�<��
_attr_info�_model�tagNameNc�*�Xl/UlX lg�N)r%r#r$)�selfr%�models   �;/opt/alt/python313/lib64/python3.13/xml/dom/expatbuilder.py�__init__�ElementInfo.__init__?s���������c�H�URURUR4$r'r"�r(s r*�__getstate__�ElementInfo.__getstate__Ds��������T�\�\�9�9r-c�.�UuUlUlUlgr'r")r(�states  r*�__setstate__�ElementInfo.__setstate__Gs��5:�2�����d�lr-c��URH3nUSU:XdMUSnUSS:Xa[Ss $[USs $ [R$)N����r�(r)r#�
_typeinfo_mapr�_no_type)r(�aname�info�ts    r*�getAttributeType�ElementInfo.getAttributeTypeJsX���O�O�D��A�w�%����H���Q�4�3�;�(��0�0�(��b��2�2�
$����r-c�"�[R$r')rr;)r(�namespaceURI�	localNames   r*�getAttributeTypeNS�ElementInfo.getAttributeTypeNSTs�����r-c��UR(aFURSnU[RR[RR4;$g�NrF)r$r	r)�
XML_CTYPE_ANY�XML_CTYPE_MIXED)r(�types  r*�isElementContent�ElementInfo.isElementContentWsF���;�;��;�;�q�>�D����� 9� 9� %��� ;� ;� =�=�
=�r-c�z�UR(a*URS[RR:H$grG)r$r	r)�XML_CTYPE_EMPTYr/s r*�isEmpty�ElementInfo.isEmpty_s)���;�;��;�;�q�>�U�[�[�%@�%@�@�@�r-c�P�URHnUSU:XdMUSS:Hs $ g)Nr7r8rF)r#)r(r<r=s   r*�isId�ElementInfo.isIdes0���O�O�D��A�w�%���B�x�4�'�'�$�r-c�&�URX445$r')rR)r(�euri�ename�aurir<s     r*�isIdNS�ElementInfo.isIdNSks���y�y�$��'�'r-r')�__name__�
__module__�__qualname__�__firstlineno__�	__slots__r+r0r4r?rDrKrOrRrX�__static_attributes__�r-r*r r <s4��1�I��
:�;� � ����(r-r c�$�URX5$r')�_intern_setdefault)�builder�ss  r*�_internreos���%�%�a�+�+r-c�0�SU;deURS5nURn[U5S:Xa'UupEnU"Xf5nU<SU<3nU"Xw5nU"XU5nO1[U5S:XaUupE[nU"XU5=puO[	SU-5eU"XD5XVU4$)N� ��:�z4Unsupported syntax: spaces in URIs not supported: %r)�splitrb�lenr�
ValueError)rc�name�parts�intern�uri�	localname�prefix�qnames        r*�_parse_ns_namerurs����$�;��;��J�J�s�O�E�
�
'�
'�F�
�5�z�Q��!&������'��!�9�-���u�$���9�0�	�	�U��q�������"�9�8�8��	��O�RV�V�W�W��#��Y��5�5r-c���\rSrSrSrS!SjrSrSrSrSr	S	r
S
rSrSr
S
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr S r!g)"�ExpatBuilder�zLDocument builder that uses Expat to build a ParsedXML.DOM document
instance.Nc�
�Uc[R"5nXlURRb%[	URR5UlOSUl[UlSUlUR5 gr')
r�Options�_options�filter�FilterVisibilityController�_filterr�_finish_start_element�_parser�reset)r(�optionss  r*r+�ExpatBuilder.__init__�sa���?� �(�(�*�G��
��=�=���+�5�d�m�m�6J�6J�K�D�L��D�L�*,�D�&�����
�
�r-c�,�[R"5$)zCreate a new parser object.)r	�ParserCreater/s r*�createParser�ExpatBuilder.createParser�s���!�!�#�#r-c�L�UR(d�UR5UlURRRUlSURlSURlSURlURUR5 UR$)z7Return the parser object, creating a new one if needed.T)	r�r�rp�
setdefaultrb�buffer_text�ordered_attributes�specified_attributes�installr/s r*�	getParser�ExpatBuilder.getParser�so���|�|��,�,�.�D�L�&*�l�l�&9�&9�&D�&D�D�#�'+�D�L�L�$�.2�D�L�L�+�04�D�L�L�-��L�L����&��|�|�r-c��[R[SS5UlURUlURR
UlSUlg)z6Free all data structures used during DOM construction.NF)�theDOMImplementation�createDocumentr�document�curNode�
_elem_info�_cdatar/s r*r��ExpatBuilder.reset�s>��,�;�;��T�4�)��
��}�}����-�-�2�2�����r-c��URUlURUlURUlURUlURR(aURUlURUl
URR(aURUlURR"(a4UR$UlUR(UlUR,UlOUR0UlUR2UlUR6UlUR:UlUR>Ul g)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�ProcessingInstructionHandlerr{r�entity_decl_handler�EntityDeclHandler�notation_decl_handler�NotationDeclHandler�comments�comment_handler�CommentHandler�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_handler�XmlDeclHandler�element_decl_handler�ElementDeclHandler�attlist_decl_handler�AttlistDeclHandler�r(�parsers  r*r��ExpatBuilder.install�s���*.�)H�)H��&�%)�%?�%?��"�#'�#;�#;�� �.2�o�o��+��=�=�!�!�'+�'?�'?�F�$�%)�%?�%?��"��=�=�!�!�$(�$8�$8�F�!��=�=�'�'�.2�.N�.N�F�+�,0�,J�,J�F�)�*.�*K�*K�F�'�*.�*E�*E�F�'�*.�*J�*J��'� $� 5� 5���$(�$=�$=��!�$(�$=�$=��!r-c��UR5nSnURS5=n(aaURUS5 U(a,URR(aURU5 SnURS5=n(aMaURSS5 URnUR5 SUlU$![a N1f=f)zAParse a document from a file object, returning the document
node.Ti@Fr-N)	r��read�Parser��documentElement�
_setup_subset�ParseEscaper�r�)r(�filer��first_buffer�buffer�docs      r*�	parseFile�ExpatBuilder.parseFile�s������!����	� �I�I�g�.�.�&�.����V�U�+��D�M�M�$A�$A��&�&�v�.�$��	!�I�I�g�.�.�&�.�

�L�L��d�#��m�m���
�
������
���	��	�s�A7C�
C�
C�Cc���UR5nURUS5 URU5 URnUR5 SUlU$![a N1f=f)z<Parse a document from a string, returning the document node.TN)r�r�r�r�r�r�r�)r(�stringr�r�s    r*�parseString�ExpatBuilder.parseString�sc�����!��	��L�L���&����v�&��m�m���
�
������
���	��	�s�#A�
A'�&A'c���URR(aF[5nURU5 UR	5nX0RRlgg)z/Load the internal subset if there might be one.N)r��doctype�InternalSubsetExtractorr��	getSubset�internalSubset)r(r��	extractor�subsets    r*r��ExpatBuilder._setup_subset�sH���=�=� � �/�1�I��!�!�&�)��(�(�*�F�39�M�M�!�!�0�	!r-c��URRRXU5nURUl[	URU5 XPRlUR(aoURRU5[:XaLSURlURRS	SnSURlSURlU(acUb"/URl/URlSURlSURlUR$URlgg�N���)r��implementation�createDocumentType�
ownerDocumentr
r�r~�
acceptNode�
FILTER_REJECT�
childNodesr�r�r�r�_seq�	notationsr�r��end_doctype_decl_handler�EndDoctypeDeclHandler)r(�doctypeName�systemId�publicId�has_internal_subsetr�s      r*r��'ExpatBuilder.start_doctype_decl_handler�s����-�-�.�.�A�A��8�-�� $�
�
����d�m�m�W�-� '�
�
���<�<�D�L�L�3�3�G�<�
�M�$(�D�M�M�!��
�
�(�(��,��G�-1�D�L�L�*�/3�D�L�L�,���"�(*�� � �%�)+��!�!�&�*.�D�L�L�'�8<�D�L�L�5�15�1N�1N�D�L�L�.�
r-c��URR(aURURlUR
URlUR(dUR(d[Ul
gggr')r{r�r�r�r�r�r�r�r~r�_finish_end_elementr/s r*r��%ExpatBuilder.end_doctype_decl_handlersM���=�=�!�!�*.�*>�*>�D�L�L�'�48�O�O����1����4�<�<�')�D�$�$0�r-c��URRX5n[URU5 UR(a@URRU5[:XaURRU5 gggr')r��createProcessingInstructionr
r�r~r�r��removeChild)r(�target�data�nodes    r*r��ExpatBuilder.pi_handler	s[���}�}�8�8��F���d�l�l�D�)��<�<�D�L�L�3�3�D�9�]�J��L�L�$�$�T�*�K�<r-c��URRnUR(a`UR(a,USR[
:XaUSR
U5 gURRU5nSUlOeU(a2USR[:XaUSnURU-nXCl
g[R"5nXl
URUl
[URU5 g)Nr�T)r�r�r��_cdata_continue�nodeType�CDATA_SECTION_NODE�
appendDatar��createCDATASection�	TEXT_NODEr�r�Textr�r
)r(r�r�r��values     r*r��)ExpatBuilder.character_data_handler_cdatas����\�\�,�,�
��;�;��&�&� ��n�-�-�1C�C��2��)�)�$�/���=�=�3�3�D�9�D�#'�D� �
�J�r�N�3�3�y�@��b�>�D��I�I��$�E��I���<�<�>�D��I�!%���D���d�l�l�D�)r-c�@�URRnU(a1USR[:XaUSnURU-Ulg[
R"5nURU-UlURUl[URU5 gr�)
r�r�r�r�r�rr�r�r�r
)r(r�r�r�s    r*r��#ExpatBuilder.character_data_handler#sv���\�\�,�,�
��*�R�.�1�1�Y�>��b�>�D��	�	�D�(�D�I���|�|�~���I�I��$��	�!�]�]����d�l�l�D�)r-c�*�U(agURR(dgURRXXW5nUb6URR	U5n	UR
R
U	5 URRRRR
U5 UR(aPURRU5[:Xa,URRRRS	gggr�)r{rr��_create_entity�createTextNoder��appendr�r�r~r�r�)
r(�
entityName�is_parameter_entityr��baser�r��notationNamer��childs
          r*r�� ExpatBuilder.entity_decl_handler.s������}�}�%�%���}�}�+�+�J�,4�D�����M�M�0�0��7�E��O�O�"�"�5�)��
�
���&�&�+�+�2�2�4�8��<�<�D�L�L�3�3�D�9�]�J��
�
�%�%�.�.�3�3�B�7�K�<r-c�p�URRXU5nURRRRRU5 UR(aPURRU5[:Xa,URRRRS	gggr�)	r��_create_notationr�r�r�r�r~r��
FILTER_ACCEPT)r(rrr�r�r�s      r*r��"ExpatBuilder.notation_decl_handler@s���}�}�-�-�l�h�O���
�
���'�'�,�,�3�3�D�9��<�<�D�L�L�3�3�D�9�]�J��
�
�%�%�/�/�4�4�R�8�K�<r-c��URRU5n[URU5 UR(a@URRU5[:XaURRU5 gggr')r��
createCommentr
r�r~r�r�r�)r(r�r�s   r*r��ExpatBuilder.comment_handlerFs[���}�}�*�*�4�0���d�l�l�D�)��<�<�D�L�L�3�3�D�9�]�J��L�L�$�$�T�*�K�<r-c� �SUlSUlg)NTF�r�r�r/s r*r��(ExpatBuilder.start_cdata_section_handlerLs�����$��r-c� �SUlSUlg)NFr
r/s r*r��&ExpatBuilder.end_cdata_section_handlerPs�����$��r-c��g�Nr7r`)r(�contextrr�r�s     r*r��(ExpatBuilder.external_entity_ref_handlerTs��r-c��URcUR(d[UlURUR5lUR	X5 gr')r~r�rr��start_element_handlerr�r�)r(rn�
attributess   r*r��"ExpatBuilder.first_element_handlerWs=���<�<�����')�D�$�/3�/I�/I�����,��"�"�4�4r-c��URRU5n[URU5 X0lU(ai[	S[U5S5HOn[R"X$[S[5nX$S-nXel
URUl[X55 MQ X0RRLaURU5 gg)Nrrjr7)r��
createElementr
r��rangerlr�Attrrrr�r�rr�r)r(rnrr��i�ar�s       r*r�"ExpatBuilder.start_element_handler]s����}�}�*�*�4�0���d�l�l�D�)�����1�c�*�o�q�1���L�L����!%�|�5��"�Q�3�����"&�-�-���#�D�,�
2��}�}�4�4�4��&�&�t�,�5r-c�b�UR(a�XRRLagURRU5nU[:Xa[U5 OU[:Xa[U5 OgURUl	URRU5 UR5 ggr')r~r�r��startContainerr��Rejecter�FILTER_SKIP�Skipper�
parentNoder�r��unlink)r(r��filts   r*r�"ExpatBuilder._finish_start_elementns����<�<��}�}�4�4�4���<�<�.�.�t�4�D��}�$������$���
���?�?�D�L��O�O�'�'��-��K�K�M�#r-c�`�URnURUlURU5 gr')r�r%r�)r(rnr�s   r*r�� ExpatBuilder.end_element_handler�s&���,�,���)�)���� � ��)r-c�r�URRUR5nU(aURX5 UR(aiXR
RLagURRU5[:Xa,URRU5 UR5 gggr')r��getr%�_handle_white_text_nodesr~r�r�r�r�r�r�r&)r(r�r=s   r*r�� ExpatBuilder._finish_end_element�s������"�"�7�?�?�3����)�)�'�8��<�<��-�-�7�7�7���|�|�&�&�w�/�=�@����(�(��1���� �A�r-c�T�URR(dUR5(dg/nURHKnUR[
:XdMURR5(aM:URU5 MM UHnURU5 M gr')
r{�whitespace_in_element_contentrKr�r�r�r��stripr�r�)r(r�r=�Lrs     r*r-�%ExpatBuilder._handle_white_text_nodes�sy���M�M�7�7��(�(�*�*��

���_�_�E��~�~��*�5�:�:�3C�3C�3E�3E������%�
�E����U�#�r-c��URRU5nUc[X5URU'gURbeX#lgr')r�r,r r$)r(rnr)r=s    r*r��!ExpatBuilder.element_decl_handler�sC�����"�"�4�(���<�$/��$<�D�O�O�D�!��;�;�&�&�&��Kr-c
��URRU5nUc[U5nX`RU'URR	SUSSUSX5/5 g�Nr)r�r,r r#r�)r(�elemrnrJ�default�requiredr=s       r*r��!ExpatBuilder.attlist_decl_handler�sV�����"�"�4�(���<��t�$�D�$(�O�O�D�!������
�4��t�W�a��@�	Br-c��XRlX RlUS:�a+U(aSURlgSURlgg)NrTF)r��version�encoding�
standalone)r(r=r>r?s    r*r��ExpatBuilder.xml_decl_handler�s=�� '�
�
��!)�
�
����?��+/��
�
�(�+0��
�
�(�	r-)r�r�r�r~r�rrbr{r�r�r�r')"rZr[r\r]�__doc__r+r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr�r�r-r�r�r�r_r`r-r*rwrw�s�����$�	��>�.�&�:�O�**�+�*�(	*�8�$9�+�%�%��5�-�"�.*�
	!�$�" �B�1r-rwc�B�\rSrSrSrSrSrSrSr\	R\R\	R\R\	R\R \	R"\R$\	R&\R(\	R*\R,\	R.\R0\	R2\R4\	R6\R8\	R:\R<\	R>\R@\	RB\RD0r#Sr$g)r}i�zkWrapper around a DOMBuilderFilter which implements the checks
to make the whatToShow filter attribute work.�r|c��Xlgr'rC)r(r|s  r*r+�#FilterVisibilityController.__init__�s���r-c��URURnURRU-(aNURR	U5nU[
:Xa[eU[;a[S[U5-5eU$[$)Nz)startContainer() returned illegal value: )�_nodetype_maskr�r|�
whatToShowr!�FILTER_INTERRUPTr��_ALLOWED_FILTER_RETURNSrm�reprr)r(r��mask�vals    r*r!�)FilterVisibilityController.startContainer�sz���"�"�4�=�=�1���;�;�!�!�D�(��+�+�,�,�T�2�C��&�&�!�!��1�1� �A�D��I�M�O�O��J� � r-c��URURnURRU-(a�URR	U5nU[
:Xa[eU[:Xa9URnURSSHnURU5 M [$U[;a[S[U5-5eU$[$)Nz%acceptNode() returned illegal value: )rGr�r|rHr�rIr�r#r%r��appendChildr�rJrmrKr)r(r�rLrM�parentrs      r*r��%FilterVisibilityController.acceptNode�s����"�"�4�=�=�1���;�;�!�!�D�(��+�+�(�(��.�C��&�&�!�!��k�!�����!�_�_�Q�/�E��&�&�u�-�0�%�$��1�1� �=��S�	�I�K�K��J� � r-N)%rZr[r\r]rAr^r+r!r�r�ELEMENT_NODEr�SHOW_ELEMENT�ATTRIBUTE_NODE�SHOW_ATTRIBUTEr��	SHOW_TEXTr��SHOW_CDATA_SECTION�ENTITY_REFERENCE_NODE�SHOW_ENTITY_REFERENCE�ENTITY_NODE�SHOW_ENTITY�PROCESSING_INSTRUCTION_NODE�SHOW_PROCESSING_INSTRUCTION�COMMENT_NODE�SHOW_COMMENT�
DOCUMENT_NODE�
SHOW_DOCUMENT�DOCUMENT_TYPE_NODE�SHOW_DOCUMENT_TYPE�DOCUMENT_FRAGMENT_NODE�SHOW_DOCUMENT_FRAGMENT�
NOTATION_NODE�
SHOW_NOTATIONrGr_r`r-r*r}r}�s���5��I��!�!�*	
���*�*A�*A����*�*C�*C����*�*>�*>����*�*G�*G��"�"�*�*J�*J����*�*@�*@��(�(�*�*P�*P����*�*A�*A����*�*B�*B����*�*G�*G��#�#�*�*K�*K����*�*B�*B�

�Nr-r}c��\rSrSrSrSrSrg)�FilterCrutchi�)�_builder�_level�
_old_start�_old_endc��SUlXlURnURUlUR
UlURUlURUlgr7)	rlrkr�r�rmr�rnrr�)r(rcr�s   r*r+�FilterCrutch.__init__sM������
����� �4�4����0�0��
�%)�%?�%?��"�#'�#;�#;�� r-)rkrlrnrmN)rZr[r\r]r^r+r_r`r-r*rjrj�s��>�I�<r-rjc�*�\rSrSrSrSrSrSrSrg)r"ir`c�p�[RX5 URnSHn[X#S5 M g)N)r�r�r�r�r�r�)rjr+r��setattr)r(rcr�rns    r*r+�Rejecter.__init__s1�����d�,������D�
�F�$�'�r-c�,�URS-Ulgr�rl�r(�argss  r*r�Rejecter.start_element_handlers���k�k�A�o��r-c���URS:XaTURRnURRU5 URUlURUlgURS-
Ulg�Nrr7)rlrkr�r�rmr�rnr�)r(rxr�s   r*r��Rejecter.end_element_handlersV���;�;�!���]�]�*�*�F��M�M�!�!�&�)�)-���F�&�'+�}�}�F�$��+�+��/�D�Kr-rvN)	rZr[r\r]r^r+rr�r_r`r-r*r"r"s���I�
(�&�*r-r"c�$�\rSrSrSrSrSrSrg)r$i'r`c��URRnUR"U6 URRULaURS-Ulggr)rkr�rmrl)r(rxr�s   r*r�Skipper.start_element_handler*sC���}�}�$�$��������=�=� � ��,��+�+��/�D�K�-r-c��URS:XaRURURRlUR
URRlSUlgURS-
UlUR
"U6 gr{)rlrmrkr�r�rnr�rws  r*r��Skipper.end_element_handler0s^���;�;�!��9=���D�M�M�!�!�5�6:�m�m�D�M�M�!�!�3� �D�M��+�+��/�D�K��M�M�4� r-)rkrlN)rZr[r\r]r^rr�r_r`r-r*r$r$'s���I�*�	!r-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�F�\rSrSrSrSSjrSrSrSrSr	S	r
S
rSrg)
�FragmentBuilderiOz�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��UR[:Xa
XlXlOURUlXl[
R
X5 gr')r�ra�originalDocumentrr�rwr+)r(rr�s   r*r+�FragmentBuilder.__init__Xs<�����}�,�$+�!�"�L�$+�$9�$9�D�!�"�L����d�,r-c�<�[RU5 SUlgr')rwr��fragmentr/s r*r��FragmentBuilder.resetas�����4� ���
r-c�@�URUR55$)zJParse a document fragment from a file object, returning the
fragment node.)r�r��r(r�s  r*r��FragmentBuilder.parseFilees������	�	��,�,r-c��XlUR5nURRnSnU(auUR=(d UR5nUR(a SUR<SUR<S3nO#UR(aSUR-nOSnUR5n[XEU4-nURUS5 URnUR5 U$! UR5 e=f)zEParse a document fragment from a string, returning the
fragment node.�zPUBLIC "z" "�"zSYSTEM "%s"T)
�_sourcer�r�r�r��_getDeclarationsr�r��_getNSattrs�_FRAGMENT_BUILDER_TEMPLATEr�r�r�)	r(r�r�r��identr��nsattrsr�r�s	         r*r��FragmentBuilder.parseStringjs��������!���'�'�/�/������+�+�F�t�/D�/D�/F�F�����#�,�,�g�.>�.>�@���!�!�%��(8�(8�8����F��"�"�$��-���0H�H��	��L�L��4�(��=�=���
�
�����
	��J�J�L��s�	C9�9Dc��URRRnSnU(Ga�[URR
5H�nURR
U5nU(aUS-nU<SUR<3nUR(a$U<SUR<SUR<S3nMrU<SUR<S3nM� [URR
5H�nURR
U5nU(aUS-nU<SUR<3nUR(a#U<SUR<SUR<S	3nODUR(aU<SUR<S	3nOU<S
URR<S	3nUR(aU<SUR<3nUS-nM� U$)
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.
r�z
  z<!NOTATION z	 PUBLIC "z"
             "z">z	 SYSTEM "z	<!ENTITY r�z "z
 NOTATION �>)rr�r�rr��length�item�nodeNamer�r�r�
firstChildr�r)r(r�rdr�notationrs      r*r�� FragmentBuilder._getDeclarations�sc���,�,�,�,�4�4������7�,�,�3�3�4��"�,�,�1�1�!�4����F�
�A�)*�H�,=�,=�>���$�$��h�/�/��1B�1B�D�A�./��0A�0A�B�A�5��7�+�+�2�2�3�� �)�)�.�.�q�1����F�
�A�'(�&�/�/�:���?�?��f�o�o�v���@�A��_�_�,-�v���?�A�%&��(9�(9�(>�(>�?�A��&�&�,-�v�/B�/B�C�A���G��4��r-c��g)Nr�r`r/s r*r��FragmentBuilder._getNSattrs�s��r-c��U[:Xa�URnURnURR	U5nUR
UlURR
5UlURUlURURS5 X`lXPlSUl	g[RXX#U5$!X`lXPlSUl	f=f)NTr�)�$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDr�r�r��ExternalEntityParserCreater��createDocumentFragmentr�r�r�rwr�)r(rrr�r��old_document�old_cur_noder�s        r*r��+FragmentBuilder.external_entity_ref_handler�s����;�;� �=�=�L��<�<�L��\�\�<�<�W�E�F� �1�1�D�M� �M�M�@�@�B�D�M��=�=�D�L�
$����T�\�\�4�0�+�� ,�
�#�����;�;��t�x�9�
9�� ,�� ,�
�#���s�C�C)r�rr�r�r�r�r')
rZr[r\r]rAr+r�r�r�r�r�r�r_r`r-r*r�r�Os+���-��-�
�8"�H�9r-r�c�>�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�
Namespacesi�z7Mix-in class for builders; adds support for namespaces.c��/Ulgr')�_ns_ordered_prefixesr/s r*�_initNamespaces�Namespaces._initNamespaces�s��%'��!r-c�<�[R"SS9nSUlU$)z'Create a new namespace-handling parser.rg)�namespace_separatorT)r	r��namespace_prefixesr�s  r*r��Namespaces.createParser�s���#�#��<��$(��!��
r-c��[RX5 URR(aURUlgg)z.Insert the namespace-handlers onto the parser.N)rwr�r{�namespace_declarations�start_namespace_decl_handler�StartNamespaceDeclHandlerr�s  r*r��Namespaces.install�s3�����T�*��=�=�/�/��1�1�
�,�0r-c�<�URRX45 g)z/Push this namespace declaration on our storage.N)r�r�)r(rsrqs   r*r��'Namespaces.start_namespace_decl_handler�s���!�!�(�(�&��7r-c���SU;a[X5up4pVO[nUnSn[n[R"XcXT5nUR
Ul[URU5 XplUR(a�URHzupSU(a+[R"[USU-5[US5nO![R"S[S[5nX8l
UR
Ul[Xx5 M| URSS2	U(a�UR5 UR n	UR"n
[%S['U5S5H�nX+nX+S-n
SU;a/[X5up4pV[R"XcXE5nX�U'X�X44'O/[R"U[U[5nX�U'X�[U4'UR
UlX�l
XxlM� gg)Nrg�xmlns:�xmlnsrrjr7)rurrr�Elementr�r�r
r�r�rrerr�r�_ensure_attributes�_attrs�_attrsNSrrl�ownerElement)r(rnrrqrrrsrtr�rr�r�rr<r�s              r*r� Namespaces.start_element_handler�s����$�;�,:�4�,F�)�C�F�E�!�C��E��I�!�F����u�6�=��!�]�]����d�l�l�D�)����$�$�#�8�8�������W�T�8�f�3D�%E�%4�f�g�G�A� ���W�o�%,�l�<�A���"&�-�-���#�D�,� 9��)�)�!�,���#�#�%��[�[�F��}�}�H��1�c�*�o�q�1��"�
��"�Q�3����%�<�4B�4�4O�1�C�F����U��C�A�$%�5�M�12�c�-�.����U�O�%*�L�:�A�$%�5�M�9:�o�u�5�6�"&�-�-�����!%��2�	r-c�\�URnSU;aF[X5up4pVURU:Xa URU:XaURU:XdS5eO2UR
U:XdS5eUR[:XdS5eURUlURU5 g)Nrgz$element stack messed up! (namespace)z&element stack messed up - bad nodeNamez*element stack messed up - bad namespaceURI)	r�rurBrCrsr�rr%r�)r(rnr�rqrrrsrts       r*r��Namespaces.end_element_handlers����l�l�G��d�{�0>�t�0J�-����,�,��3�#�-�-��:�#�N�N�f�4�?�?�?�5�4��'�'�4�/�@�?�@�/��+�+��>�D�C�D�>�"�-�-�D�L��$�$�W�-r-)r�r�N)rZr[r\r]rAr�r�r�r�rr�r_r`r-r*r�r��s)��A�'�
�3�8�-&�^�	.r-r�c��\rSrSrSrSrSrg)�ExpatBuilderNSi#z*Document builder that supports namespaces.c�N�[RU5 UR5 gr')rwr�r�r/s r*r��ExpatBuilderNS.reset&s�����4� ����r-r`N)rZr[r\r]rAr�r_r`r-r*r�r�#s
��4�r-r�c�$�\rSrSrSrSrSrSrg)�FragmentBuilderNSi+z*Fragment builder that supports namespaces.c�N�[RU5 UR5 gr')r�r�r�r/s r*r��FragmentBuilderNS.reset.s�����d�#����r-c�X�SnURn/nU(a�[US5(alURR5HNupEXC;aMUR	U5 U(aSU-nOSnU(aU<SU<SU<S3nMCSU<SU<S3nMP UR
nU(aM�U$)	zFReturn string of namespace attributes from this element and
ancestors.r��_ns_prefix_urir�r�z
    z='�'rg)r�hasattrr��itemsr�r%)r(�attrsrr2rsrq�declnames       r*r��FragmentBuilderNS._getNSattrs2s������,�,������w� 0�1�1�#*�#9�#9�#?�#?�#A�K�F��{� ��H�H�V�$��#+�f�#4��#*���5:�H�c� J���/7�� <��$B��(�(�G��g� �r-r`N)rZr[r\r]rAr�r�r_r`r-r*r�r�+s��4��r-r�c��\rSrSrSrSrg)r�iPzEException raised to short-circuit parsing in InternalSubsetExtractor.r`N)rZr[r\r]rAr_r`r-r*r�r�Ps��O�r-r�c�F�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
g)r�iTzBXML processor which can rip out the internal document type subset.Nc��UR$)z'Return the internal subset as a string.�r�r/s r*r��!InternalSubsetExtractor.getSubsetYs���{�{�r-c�P�[RX5 g![a gf=fr')rwr�r�r�s  r*r��!InternalSubsetExtractor.parseFile]s'��	��"�"�4�.���	��	����
%�%c�P�[RX5 g![a gf=fr')rwr�r�)r(r�s  r*r��#InternalSubsetExtractor.parseStringcs'��	��$�$�T�2���	��	�r�c�H�URUlURUlgr')r�r�rr�r�s  r*r��InternalSubsetExtractor.installis��)-�)H�)H��&�%)�%?�%?��"r-c��U(aDUR5n/UlURRUlURUlg[
5er')r�r�r��DefaultHandlerr�r�r�)r(rnr�r�r�r�s      r*r��2InternalSubsetExtractor.start_doctype_decl_handlerms@����^�^�%�F��D�K�$(�K�K�$6�$6�F�!�+/�+H�+H�F�(��-�r-c��SRUR5RSS5RSS5nXl[5e)Nr�z
�
�
)�joinr��replacer�)r(rds  r*r��0InternalSubsetExtractor.end_doctype_decl_handlerws;���G�G�D�K�K� �(�(���6�>�>�t�T�J�����m�r-c��[5er')r�)r(rnr�s   r*r�-InternalSubsetExtractor.start_element_handler|s
���m�r-r�)rZr[r\r]rAr�r�r�r�r�r�r�rr_r`r-r*r�r�Ts.��L�
�F����@� ��
r-r�c��U(a[5nO
[5n[U[5(a([	US5nURU5nSSS5 U$URU5nU$!,(df   W$=f)zsParse a document, returning the resulting Document node.

'file' may be either a file name or an open file object.
�rbN)r�rw�
isinstance�str�openr�)r��
namespacesrc�fp�results     r*�parser��sr��
� �"���.���$����
�$��
���&�&�r�*�F���M��"�"�4�(���M�	�
��M�s�A-�-
A<c�\�U(a[5nO
[5nURU5$)zGParse a document from a string, returning the resulting
Document node.
)r�rwr�)r�r�rcs   r*r�r��s'��� �"���.�����v�&�&r-c��U(a[U5nO[U5n[U[5(a([	US5nURU5nSSS5 U$URU5nU$!,(df   W$=f)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�rr�rcr�r�s      r*�
parseFragmentr��sw���#�G�,��!�'�*���$����
�$��
���&�&�r�*�F���M��"�"�4�(���M�	�
��M�s�A/�/
A>c�`�U(a[U5nO[U5nURU5$)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�rr�rcs    r*�parseFragmentStringr��s,��
�#�G�,��!�'�*�����v�&�&r-c�P�UR(a[U5$[U5$)z,Create a builder based on an Options object.)r�r�rw)r�s r*�makeBuilderr��s!������g�&�&��G�$�$r-)T)3rA�xml.domrrrrrr�xml.parsersr	�xml.dom.minidomr
r�xml.dom.NodeFilterrr�r�ra�DOMBuilderFilterrr�r#rI�getDOMImplementationr��TypeInfor:�objectr rerurwrJr}rjr"r$r�r�r�r�r�r��	Exceptionr�r�r�r�r�r�r�r`r-r*�<module>rs���:.�-�B�B��>�)��N�N�	��,�,���"�"�
��+�+�9�9�
��+�+�9�9�
��)�)�5�5���.�.�?�?���3�3�5��� � ��w�/�� � ��}�5�� � ��x�0�� � ��z�2�� � ��t�,�� � ��w�/�� � ��x�0�� � ��y�1�� � ��z�2�
�
�1(�&�1(�f,�6�&y1�y1�|	)�-��E��7
��7
�t
<�6�
<�*�|�*�8!�l�!�2?�%�*�+�	+��r9�l�r9�j\.�\.�~�Z���"�
�O�"�J	�)�	�)�l�)�X�$'��(	'�%r-

?>