add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
�

��Vc��cs��dZddlmZmZmZddlmZmZmZddlm	Z	ddl
mZmZddl
mZejZejZejZejjZejjZejjZejjZej��Zejdd��ejdd	��ejdd
��ejdd��ejdd��ejdd
��ejdd��ejdd��ejdd��d�	ZGd�de��Zd�Zd�ZGd�d��ZeeefZ Gd�de��Z!Gd�de��Z"Gd�de"��Z#Gd�de"��Z$d Z%d!e%zZ&Gd"�d#e��Z'Gd$�d%��Z(Gd&�d'e(e��Z)Gd(�d)e(e'��Z*Gd*�d+e+��Z,Gd,�d-e��Z-d4d/�Z.d4d0�Z/d4d1�Z0d4d2�Z1d3�Z2dS)5z�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)�
NodeFilterNZcdataZenumeration�entity�entities�idZidrefZidrefsZnmtokenZnmtokens)	ZCDATA�ENUMZENTITYZENTITIES�IDZIDREFZIDREFSZNMTOKENZNMTOKENScsJ�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�ZdS)
�ElementInfo��
_attr_info�_model�tagNameNcs0�||_g|_||_dS�N)rrr)�selfr�model�   �-/usr/lib64/python3.11/xml/dom/expatbuilder.py�__init__zElementInfo.__init__?s�������������cs*�|j|j|jfSrr�r� r�__getstate__zElementInfo.__getstate__Ds������T�\�9�9rcs0�|\|_|_|_dSrr)rZstate�  r�__setstate__zElementInfo.__setstate__Gs��5:�2�����d�l�l�lrcs��|jD]F}|d|kr8|d}|ddkrtdcSt|dcS�GtjS)N������rz(r)r�
_typeinfo_mapr�_no_type)r�aname�infoZt�    r�getAttributeTypezElementInfo.getAttributeTypeJss���O�	3�	3�D��A�w�%��
3���H���Q�4�3�;�3�(��0�0�0�0�(��b��2�2�2�2�
3���rcs�tjSr)rr$)r�namespaceURI�	localNamerr�getAttributeTypeNSzElementInfo.getAttributeTypeNSTs����rcsv�|jr1|jd}|tjjtjjfvSdS�NrF)rrrZ
XML_CTYPE_ANYZXML_CTYPE_MIXED)r�typerr�isElementContentzElementInfo.isElementContentWs?���;�	��;�q�>�D���� 9� %�� ;� =�=�
=��5rcsT�|jr |jdtjjkSdSr,)rrrZXML_CTYPE_EMPTYrrr�isEmptyzElementInfo.isEmpty_s'���;�	��;�q�>�U�[�%@�@�@��5rcsN�|jD]}|d|kr|ddkcS�dS)Nr!r"rF)r)rr%r&rr�isIdzElementInfo.isIdesC���O�	(�	(�D��A�w�%��
(��B�x�4�'�'�'�'�
(��urcs0�|�||f��Sr)r0)rZeuriZenameZaurir%�     r�isIdNSzElementInfo.isIdNSks���y�y�$���'�'�'rr)
�__name__�
__module__�__qualname__�	__slots__rrr r(r+r.r/r0r2�rrrr<s�������1�I�����
:�:�:�;�;�;� � � � � � ����������(�(�(�(�(rrcs.�|�||��Sr)�_intern_setdefault)�builder�srr�_internr;os���%�%�a��+�+�+rcsp�d|vsJ�|�d��}|j}t|��dkr2|\}}}|||��}|�d|��}|||��}|||��}n@t|��dkr|\}}t}|||��x}}nt	d|z���|||��|||fS)N� iz:�z4Unsupported syntax: spaces in URIs not supported: %r)Zsplitr8�lenr�
ValueError)r9�nameZparts�intern�uri�	localname�prefix�qname�        r�_parse_ns_namerGrs����$�;�����J�J�s�O�O�E�
�
'�F�
�5�z�z�Q��X�!&���Y������'�'��!�6�6�9�9�-����u�e�$�$���F�9�i�0�0�	�	�	�U���q��X����Y���"�F�9�i�8�8�8��	�	��O�RV�V�W�W�W��6�#�s���Y���5�5rcs��eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS) �ExpatBuilderzPDocument builder that uses Expat to build a ParsedXML.DOM document
    instance.Ncs��|�tj��}||_|jj�t	|jj��|_nd|_t|_d|_|�	��dSr)
rZOptions�_options�filter�FilterVisibilityController�_filterr
�_finish_start_element�_parser�reset)r�optionsrrrzExpatBuilder.__init__�sk���	+� �(�*�*�G���
��=��	,�5�d�m�6J�K�K�D�L�L��D�L�*,�D�&�����
�
�����rcs(�tj��S)zCreate a new parser object.)r�ParserCreaterrr�createParserzExpatBuilder.createParser�s���!�#�#�#rcs��|jsm|���|_|jjj|_d|j_d|j_d|j_|�|j��|jS)z7Return the parser object, creating a new one if needed.T)	rNrRrAZ
setdefaultr8Zbuffer_textZordered_attributesZspecified_attributes�installrrr�	getParserzExpatBuilder.getParser�si���|�	'��,�,�.�.�D�L�&*�l�&9�&D�D�#�'+�D�L�$�.2�D�L�+�04�D�L�-��L�L���&�&�&��|�rcs��t�tdd��|_|j|_|jj|_d|_dS)z6Free all data structures used during DOM construction.NF)�theDOMImplementationZcreateDocumentr�document�curNode�
_elem_info�_cdatarrrrOzExpatBuilder.reset�s@��,�;�;��T�4�)�)��
��}����-�2�������rcs��|j|_|j|_|j|_|j|_|jj	r|j
|_|j|_
|jjr|j|_|jjr%|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�ProcessingInstructionHandlerrIr�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�parserrrrSzExpatBuilder.install�s���*.�)H��&�%)�%?��"�#'�#;�� �.2�o��+��=�!�	@�'+�'?�F�$�%)�%?��"��=�!�	9�$(�$8�F�!��=�'�	F�.2�.N�F�+�,0�,J�F�)�*.�*K�F�'�'�*.�*E�F�'�*.�*J��'� $� 5���$(�$=��!�$(�$=��!�!�!rcsp�|���}d}		|�d��}|sn<|�|d��|r!|jjr|�|��d}�T|�dd��n#t$rYnwxYw|j}|���d|_|S)zIParse a document from a file object, returning the document
        node.Tr!i@FrN)	rT�read�ParserV�documentElement�
_setup_subset�ParseEscaperOrN)r�filervZfirst_buffer�buffer�doc�      r�	parseFilezExpatBuilder.parseFile�s������!�!����	�
%����7�+�+��������V�U�+�+�+��/�D�M�$A�/��&�&�v�.�.�.�$��
%�
�L�L��d�#�#�#�#���	�	�	��D�	�����m���
�
��������
s�A+B�
B�Bcs��|���}	|�|d��|�|��n#t$rYnwxYw|j}|���d|_|S)z<Parse a document from a string, returning the document node.TN)rTrxrzr{rVrOrN)r�stringrvr~r'r�parseStringzExpatBuilder.parseString�s������!�!��	��L�L���&�&�&����v�&�&�&�&���	�	�	��D�	�����m���
�
��������
s�+A�
A�Acs��|jjrJt��}|�|��|���}||jj_dSdS)z/Load the internal subset if there might be one.N)rV�doctype�InternalSubsetExtractorr��	getSubset�internalSubset)rr}Z	extractor�subsetr'rrzzExpatBuilder._setup_subset�s\���=� �	:�/�1�1�I��!�!�&�)�)�)��(�(�*�*�F�39�D�M�!�0�0�0�		:�	:rcs��|jj�|||��}|j|_t	|j|��||j_|jrV|j�|��tkr3d|j_|jj	d=d}d|j
_d|j
_|rE|�g|j
_g|j_d|j
_d|j
_|j|j
_dSdS�N�����)rVZimplementationZcreateDocumentType�
ownerDocumentrr�rL�
acceptNode�
FILTER_REJECT�
childNodesrNrcrer�_seq�	notationsrhra�end_doctype_decl_handler�EndDoctypeDeclHandler)rZdoctypeName�systemId�publicId�has_internal_subsetr�rrrZz'ExpatBuilder.start_doctype_decl_handler�s����-�.�A�A���8�-�-�� $�
����d�m�W�-�-�-� '��
���<�	4�D�L�3�3�G�<�<�
�M�	4�$(�D�M�!��
�(��,��G�-1�D�L�*�/3�D�L�,��	O��
,�(*�� �%�)+��!�&�*.�D�L�'�8<�D�L�5�15�1N�D�L�.�.�.�
	O�	Orcs��|jjr|j|j_|j|j_|js|jst|_
dSdSdSr)rIrfrgrNrhr`rarXrLr
�_finish_end_elementrrrr�z%ExpatBuilder.end_doctype_decl_handlers]���=�!�	?�*.�*>�D�L�'�48�O���1���	*�4�<�	*�')�D�$�$�$�	*�	*�	*�	*rcs��|j�||��}t|j|��|jr?|j�|��tkr|j�|��dSdSdSr)rVZcreateProcessingInstructionrrWrLr�r��removeChild)rZtarget�data�noder'rr`zExpatBuilder.pi_handlers����}�8�8���F�F���d�l�D�)�)�)��<�	+�D�L�3�3�D�9�9�]�J�	+��L�$�$�T�*�*�*�*�*�	+�	+�	+�	+rcs��|jj}|jr\|jr3|djt
kr|d�|��dS|j�|��}d|_nY|r1|djtkr|d}|j
|z}||_
dStj��}||_
|j|_
t|j|��dS)Nr�T)rWr�rY�_cdata_continue�nodeType�CDATA_SECTION_NODEZ
appendDatarVZcreateCDATASection�	TEXT_NODEr�r�Textr�r)rr�r�r��valuer1rrmz)ExpatBuilder.character_data_handler_cdatas����\�,�
��;�	/��&�
� ��n�-�1C�C�
��2��)�)�$�/�/�/����=�3�3�D�9�9�D�#'�D� � �
�	/�J�r�N�3�y�@�	/��b�>�D��I��$�E��D�I��F��<�>�>�D��D�I�!%��D���d�l�D�)�)�)�)�)rcs�|jj}|r/|djtkr|d}|j|z|_dStj��}|j|z|_|j|_t|j|��dSr�)
rWr�r�r�r�rr�rVr�r)rr�r�r�r'rroz#ExpatBuilder.character_data_handler&s~���\�,�
��	�*�R�.�1�Y�>�	��b�>�D��	�D�(�D�I��F��|�~�~���I��$��	�!�]����d�l�D�)�)�)�)�)rcs��|rdS|jjsdS|j�||||��}|�4|j�|��}	|j�|	��|jjjj�|��|j	r<|j	�
|��tkr|jjjjd=dSdSdSr�)rIrrVZ_create_entityZcreateTextNoder��appendr�r�rLr�r�)
rZ
entityNameZis_parameter_entityr��baser�r��notationNamer��childs
          rrbz ExpatBuilder.entity_decl_handler1s����	��F��}�%�	��F��}�+�+�J��,4�l�D�D���	*��M�0�0��7�7�E��O�"�"�5�)�)�)��
��&�+�2�2�4�8�8�8��<�	8�D�L�3�3�D�9�9�]�J�	8��
�%�.�3�B�7�7�7�	8�	8�	8�	8rcs�|j�|||��}|jjjj�|��|jr<|j�|��tkr|jjjjd=dSdSdSr�)	rVZ_create_notationr�r�r�r�rLr��
FILTER_ACCEPT)rr�r�r�r�r�rrrdz"ExpatBuilder.notation_decl_handlerCs����}�-�-�l�H�h�O�O���
��'�,�3�3�D�9�9�9��<�	9�D�L�3�3�D�9�9�]�J�	9��
�%�/�4�R�8�8�8�	9�	9�	9�	9rcs��|j�|��}t|j|��|jr?|j�|��tkr|j�|��dSdSdSr)rVZ
createCommentrrWrLr�r�r�)rr�r�rrrgzExpatBuilder.comment_handlerIs���}�*�*�4�0�0���d�l�D�)�)�)��<�	+�D�L�3�3�D�9�9�]�J�	+��L�$�$�T�*�*�*�*�*�	+�	+�	+�	+rcs"�d|_d|_dS)NTF�rYr�rrrriz(ExpatBuilder.start_cdata_section_handlerOs�����$����rcs"�d|_d|_dS)NFr�rrrrkz&ExpatBuilder.end_cdata_section_handlerSs�����$����rc��dS�Nr!r7)r�contextr�r�r�r1rrpz(ExpatBuilder.external_entity_ref_handlerWs���qrcs��|j�|jst|_|j|���_|�||��dSr)rLrXr
r��start_element_handlerrTr])rr@�
attributesrrr\z"ExpatBuilder.first_element_handlerZsN���<�	*���	*�')�D�$�/3�/I������,��"�"�4��4�4�4�4�4rcs��|j�|��}t|j|��||_|rvt	dt|��d��D]W}t
j||tdt��}||dz}||_
|j|_t||���X||jj
ur|�|��dSdS)Nrr=r!)rVZ
createElementrrW�ranger>r�Attrrrr�r�r	ryrM)rr@r�r��i�ar��       rr�z"ExpatBuilder.start_element_handler`s����}�*�*�4�0�0���d�l�D�)�)�)�����	-��1�c�*�o�o�q�1�1�
-�
-���L��A���!%�|�5�5��"�1�Q�3������"&�-���#�D�!�,�,�,�,��t�}�4�4�	-��&�&�t�,�,�,�,�,�	-�	-rcsP�|jr�||jjurdS|j�|��}|tkrt|��n|tkrt|��ndS|j|_	|j�
|��|���dSdSr)rLrVry�startContainerr��Rejecter�FILTER_SKIP�Skipper�
parentNoderWr��unlink)rr�ZfiltrrrMz"ExpatBuilder._finish_start_elementqs����<�	��t�}�4�4�
����<�.�.�t�4�4�D��}�$�
���������$�
���
�
�
�
����?�D�L��O�'�'��-�-�-��K�K�M�M�M�M�M�#	�	rcsV�|j}|j|_|�|��dSr)rWr�r�)rr@rWrrr^z ExpatBuilder.end_element_handler�s-���,���)���� � ��)�)�)�)�)rcsL�|j�|j��}|r|�||��|jrc||jjurdS|j�|��tkr2|j	�
|��|���dSdSdSr)rX�getr�_handle_white_text_nodesrLrVryr�r�rWr�r�)rrWr&rrr�z ExpatBuilder._finish_end_element�s�����"�"�7�?�3�3���	9��)�)�'�4�8�8�8��<�	!��$�-�7�7�
����|�&�&�w�/�/�=�@�
!���(�(��1�1�1���� � � � � �	!�	!�
!�
!rcs�|jjs|���sdSg}|jD]@}|jt
kr.|j���s|�|���A|D]}|�	|���dSr)
rIZwhitespace_in_element_contentr.r�r�r�r�Zstripr�r�)rr�r&�Lr�r1rr�z%ExpatBuilder._handle_white_text_nodes�s����M�7�	��(�(�*�*�	��F�

���_�	 �	 �E��~��*�
 �5�:�3C�3C�3E�3E�
 ����������	$�	$�E����U�#�#�#�#�	$�	$rcs��|j�|��}|�t||��|j|<dS|j�J�||_dSr)rXr�rr)rr@rr&r'rrsz!ExpatBuilder.element_decl_handler�sT����"�"�4�(�(���	 �$/��e�$<�$<�D�O�D�!�!�!��;�&�&�&��D�K�K�Krc
s��|j�|��}|�t|��}||j|<|j�d|dd|d||g��dS�Nr)rXr�rrr�)rZelemr@r-ZdefaultZrequiredr&r�rrtz!ExpatBuilder.attlist_decl_handler�su����"�"�4�(�(���	)��t�$�$�D�$(�D�O�D�!�����
�4��t�W�a��x�@�	B�	B�	B�	B�	Brcs~�||j_||j_|dkr|rd|j_dSd|j_dSdS)NrTF)rV�version�encoding�
standalone)rr�r�r�r'rrrzExpatBuilder.xml_decl_handler�sT�� '��
��!)��
����?�	1��
1�+/��
�(�(�(�+0��
�(�(�(�		1�	1rr) r3r4r5�__doc__rrRrTrOrSr�r�rzrZr�r`rmrorbrdrgrirkrpr\r�rMr^r�r�rsrtrrr7rrrHrH�s�������������$�$�$�	�	�	����>�>�>�.���,���:�:�:�O�O�O�**�*�*�+�+�+�*�*�*�(	*�	*�	*�8�8�8�$9�9�9�+�+�+�%�%�%�%�%�%����5�5�5�-�-�-�"���.*�*�*�
	!�	!�	!�$�$�$�" � � �B�B�B�1�1�1�1�1rrHcsL�eZdZdZdZd�Zd�Zd�Zej	e
jeje
j
eje
jeje
jeje
jeje
jeje
jeje
jeje
jeje
jeje
jej e
j!iZ"dS)rKzoWrapper around a DOMBuilderFilter which implements the checks
    to make the whatToShow filter attribute work.�rJcs�||_dSrr�)rrJrrrz#FilterVisibilityController.__init__�s
������rcs��|j|j}|jj|zrV|j�|��}|t
krt�|tvrtdt|��z���|StS)Nz)startContainer() returned illegal value: )�_nodetype_maskr�rJ�
whatToShowr��FILTER_INTERRUPTr{�_ALLOWED_FILTER_RETURNSr?�reprr�)rr��mask�valr'rr�z)FilterVisibilityController.startContainer�s����"�4�=�1���;�!�D�(�		!��+�,�,�T�2�2�C��&�&�
"�!�!��1�1�
O� �A�D��I�I�M�O�O�O��J� � rcs~�|j|j}|jj|zr�|j�|��}|t
krt�|tkr5|j}|j	dd�D]}|�
|���tS|tvrtdt|��z���|StS)Nz%acceptNode() returned illegal value: )r�r�rJr�r�r�r{r�r�r�ZappendChildr�r�r?r�r�)rr�r�r�Zparentr�rrr�z%FilterVisibilityController.acceptNode�s����"�4�=�1���;�!�D�(�	!��+�(�(��.�.�C��&�&�
"�!�!��k�!�
%����!�_�Q�Q�Q�/�.�.�E��&�&�u�-�-�-�-�$�$��1�1�
K� �=��S�	�	�I�K�K�K��J� � rN)#r3r4r5r�r6rr�r�rZELEMENT_NODEr
ZSHOW_ELEMENTZATTRIBUTE_NODEZSHOW_ATTRIBUTEr�Z	SHOW_TEXTr�ZSHOW_CDATA_SECTIONZENTITY_REFERENCE_NODEZSHOW_ENTITY_REFERENCEZENTITY_NODEZSHOW_ENTITYZPROCESSING_INSTRUCTION_NODEZSHOW_PROCESSING_INSTRUCTIONZCOMMENT_NODEZSHOW_COMMENT�
DOCUMENT_NODEZ
SHOW_DOCUMENTZDOCUMENT_TYPE_NODEZSHOW_DOCUMENT_TYPEZDOCUMENT_FRAGMENT_NODEZSHOW_DOCUMENT_FRAGMENTZ
NOTATION_NODEZ
SHOW_NOTATIONr�r7rrrKrK�s�������5�5��I����!�!�!�!�!�!�*	
��*�*A���*�*C���*�*>���*�*G��"�*�*J���*�*@��(�*�*P���*�*A���*�*B���*�*G��#�*�*K���*�*B�

�N�N�NrrKc��eZdZdZd�ZdS)�FilterCrutch)�_builder�_level�
_old_start�_old_endcs��d|_||_|j}|j|_|j|_|j|_|j|_dSr�)	r�r�rNr]r�r_r�r�r^)rr9rvrrrzFilterCrutch.__init__sG�������
���� �4����0��
�%)�%?��"�#'�#;�� � � rN)r3r4r5r6rr7rrr�r�s(������>�I�<�<�<�<�<rr�cs$�eZdZdZd�Zd�Zd�ZdS)r�r7csv�t�||��|j}dD]}t||d���dS)N)rarhrnrjrlrq)r�rrNZsetattr)rr9rvr@r'rrzRejecter.__init__sQ�����d�G�,�,�,�����	(�	(�D�
�F�D�$�'�'�'�'�	(�	(rcs$�|jdz|_dSr�)r��r�argsrrr�zRejecter.start_element_handlers���k�A�o����rcs��|jdkr@|jj}|j�|��|j|_|j|_dS|jdz
|_dS�Nrr!)r�r�rNrSr�r]r�r_)rr�rvrrr^zRejecter.end_element_handler s\���;�!��	*��]�*�F��M�!�!�&�)�)�)�)-��F�&�'+�}�F�$�$�$��+��/�D�K�K�KrN)r3r4r5r6rr�r^r7rrr�r�sF�������I�
(�
(�
(�&�&�&�*�*�*�*�*rr�c��eZdZdZd�Zd�ZdS)r�r7csp�|jj}|j|�|jj|ur|jdz|_dSdSr�)r�rWr�r�)rr�r�rrr�zSkipper.start_element_handler-sH���}�$���������=� ��,�	*��+��/�D�K�K�K�	*�	*rcs��|jdkr5|j|jj_|j|jj_d|_dS|jdz
|_|j|�dSr�)r�r�r�rNr]r�r_r�rrr^zSkipper.end_element_handler3s^���;�!��	!�9=��D�M�!�5�6:�m�D�M�!�3� �D�M�M�M��+��/�D�K��D�M�4� � � � rN)r3r4r5r6r�r^r7rrr�r�*s7�������I�*�*�*�	!�	!�	!�	!�	!rr�z8http://xml.python.org/entities/fragment-builder/internalz�<!DOCTYPE wrapper
  %%s [
  <!ENTITY fragment-builder-internal
    SYSTEM "%s">
%%s
]>
<wrapper %%s
>&fragment-builder-internal;</wrapper>cs>�eZdZdZd
d�Zd�Zd�Zd�Zd�Zd�Z	d	�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.
    Ncs��|jtkr||_||_n|j|_||_t
�||��dSr)r�r��originalDocumentr�r�rHr)rr�rPrrrzFragmentBuilder.__init__[sQ����}�,�	#�$+�D�!�"�D�L�L�$+�$9�D�!�"�D�L����d�G�,�,�,�,�,rcsH�t�|��d|_dSr)rHrO�fragmentrrrrOzFragmentBuilder.resetds!�����4� � � ���
�
�
rcsP�|�|�����S)zRParse a document fragment from a file object, returning the
        fragment node.)r�rw�rr|rrr�zFragmentBuilder.parseFilehs ������	�	���,�,�,rcs��||_|���}|jj}d}|rH|jp|���}|jrd|j�d|j�d�}n|jr
d|jz}nd}|���}t|||fz}	|�
|d��n#|����xYw|j}|���|S)zMParse a document fragment from a string, returning the
        fragment node.�zPUBLIC "z" "�"zSYSTEM "%s"T)
�_sourcerTr�r�r��_getDeclarationsr�r��_getNSattrs�_FRAGMENT_BUILDER_TEMPLATErxrOr�)	rr�rvr�Zidentr�ZnsattrsrVr�s	         rr�zFragmentBuilder.parseStringms
��������!�!���'�/�����	��+�F�t�/D�/D�/F�/F�F���
9�
9�#�,�,�,�g�.>�.>�.>�@����!�
9�%��(8�8����F��"�"�$�$��-����0H�H��	��L�L��4�(�(�(�(��	��J�J�L�L�L������=���
�
�����s�B/�/Ccsb�|jjj}d}|�rt|jj��D]Y}|j�|��}|r|dz}|�d|j��}|jr|�d|j�d|j	�d�}�L|�d|j	�d�}�Zt|j
j��D]�}|j
�|��}|r|dz}|�d|j��}|jr|�d|j�d|j	�d	�}n'|j	r|�d|j	�d	�}n|�d
|jj�d	�}|j
r|�d|j
��}|dz}��|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.
        r�z
  z<!NOTATION z	 PUBLIC "z"
             "z">z	 SYSTEM "z	<!ENTITY r�z "z
 NOTATION z>)r�r�r�r�r�ZlengthZitem�nodeNamer�r�rZ
firstChildr�r�)rr�r:r�Znotationrrrr�z FragmentBuilder._getDeclarations�s����,�,�4�����	��7�,�3�4�4�	
C�	
C��"�,�1�1�!�4�4���#��F�
�A�)*���H�,=�,=�>���$�C��1�1�h�/�/�/��1B�1B�1B�D�A�A�./�Q�Q��0A�0A�0A�B�A�A��7�+�2�3�3�
�
�� �)�.�.�q�1�1���#��F�
�A�'(�q�q�&�/�/�:���?�@��1�1�f�o�o�o�v����@�A�A��_�@�,-�A�A�v����?�A�A�%&�Q�Q��(9�(>�(>�(>�?�A��&�D�,-�A�A�v�/B�/B�C�A���G����rcr�)Nr�r7rrrr�zFragmentBuilder._getNSattrs�s���rrcs��|tkr�|j}|j}|j�|��}|j|_|j���|_|j|_	|�|j	d��||_||_d|_	n#||_||_d|_	wxYwdSt�|||||��S)NTr�)�$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDrVrWrNZExternalEntityParserCreater�ZcreateDocumentFragmentr�rxr�rHrp)rr�r�r�r�Zold_documentZold_cur_nodervrFrrpz+FragmentBuilder.external_entity_ref_handler�s����;�;�	9� �=�L��<�L��\�<�<�W�E�E�F� �1�D�M� �M�@�@�B�B�D�M��=�D�L�
$����T�\�4�0�0�0�+��� ,��
�#����� ,��� ,��
�#���#�#�#�#��2��;�;��g�t�X�x�9�9�
9s�+B�B3r)r3r4r5r�rrOr�r�r�r�rpr7rrr�r�Rs���������-�-�-�-����-�-�-�
���8"�"�"�H���9�9�9�9�9rr�cs8�eZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z	d	S)
�
Namespacesz7Mix-in class for builders; adds support for namespaces.cs�g|_dSr)�_ns_ordered_prefixesrrr�_initNamespaceszNamespaces._initNamespaces�s��%'��!�!�!rcs>�tjd���}d|_|S)z'Create a new namespace-handling parser.r<)Znamespace_separatorT)rrQZnamespace_prefixesrurrrRzNamespaces.createParser�s"���#��<�<�<��$(��!��
rcsp�t�||��|jjr|j|_dSdS)z.Insert the namespace-handlers onto the parser.N)rHrSrIZnamespace_declarations�start_namespace_decl_handlerZStartNamespaceDeclHandlerrurrrSzNamespaces.install�sC�����T�6�*�*�*��=�/�	3��1�
�,�,�,�	3�	3rcs>�|j�||f��dS)z/Push this namespace declaration on our storage.N)r�r�)rrDrBrrr�z'Namespaces.start_namespace_decl_handler�s#���!�(�(�&�#��7�7�7�7�7rcs��d|vrt||��\}}}}nt}|}d}t}tj||||��}|j|_t|j|��||_|j	r�|j	D]y\}}|r.tj
t|d|z��t|d��}n!tj
dtdt��}||_
|j|_t||���z|j	dd�=|r�|���|j}	|j}
t%dt'|��d��D]�}||}||dz}
d|vr9t||��\}}}}tj
||||��}||	|<||
||f<n2tj
|t|t��}||	|<||
t|f<|j|_|
|_
||_��dSdS)Nr<�xmlns:�xmlnsrr=r!)rGrrrZElementrVr�rrWr�r�r;rr�r	Z_ensure_attributes�_attrs�_attrsNSr�r>ZownerElement)rr@r�rBrCrDrEr�r�r�r�r�r%r�s              rr�z Namespaces.start_element_handler�s*���$�;�	"�,:�4��,F�,F�)�C��F�E�E�!�C��E��I�!�F���u�c�6�9�=�=��!�]����d�l�D�)�)�)�����$�	-�#�8�	
-�	
-�����<���W�T�8�f�3D�%E�%E�%4�f�g�G�G�A�A� ��W�o�%,�l�<�<�A����"&�-���#�D�!�,�,�,�,��)�!�!�!�,��	&��#�#�%�%�%��[�F��}�H��1�c�*�o�o�q�1�1�
&�
&��"�1�
��"�1�Q�3����%�<�	;�4B�4��4O�4O�1�C��F�E���U�C��F�C�C�A�$%�F�5�M�12�H�c�9�-�.�.���U�O�%*�L�:�:�A�$%�F�5�M�9:�H�o�u�5�6�"&�-������!%����'	&�	&�
&�
&rTcs>�|j}d|vrAt||��\}}}}|j|kr|j|kr|j|ks
Jd���n/|j|ks
Jd���|jtks
Jd���|j|_|�|��dS)Nr<z$element stack messed up! (namespace)z&element stack messed up - bad nodeNamez*element stack messed up - bad namespaceURI)	rWrGr)r*rDr�rr�r�)rr@rWrBrCrDrEr�rr^zNamespaces.end_element_handlers����l�G��d�{�

D�0>�t�T�0J�0J�-��Y����,��3�?�#�-��:�?�#�N�f�4�?�?�?�?�?�?�?�
�'�4�/�@�@�?�@�@�@��+��>�D�D�C�D�D�D�"�-�D�L��$�$�W�-�-�-�-�-rN)
r3r4r5r�r�rRrSr�r�r^r7rrr�r��sz������A�A�'�'�'�
���3�3�3�8�8�8�-&�-&�-&�^.�	.�	.�	.�	.�	.rr�cr�)�ExpatBuilderNSz*Document builder that supports namespaces.c�b�t�|��|���dSr)rHrOr�rrrrOzExpatBuilderNS.reset)s.�����4� � � ��������rN)r3r4r5r�rOr7rrr�r�&s)������4�4�����rr�cr�)�FragmentBuilderNSz*Fragment builder that supports namespaces.cr�r)r�rOr�rrrrOzFragmentBuilderNS.reset1s.�����d�#�#�#��������rcs�d}|j}g}|rst|d��rZ|j���D]@\}}||vr�
|�|��|rd|z}nd}|r|�d|�d|�d�}�7d|�d|�d�}�A|j}|�s|S)	zNReturn string of namespace attributes from this element and
        ancestors.r��_ns_prefix_urir�r�z
    z='z'r<)r�Zhasattrr�Zitemsr�r�)r�attrsr�r�rDrBZdeclnamer�rr�zFragmentBuilderNS._getNSattrs5s������,�����	)��w� 0�1�1�

=�#*�#9�#?�#?�#A�#A�=�=�K�F�C���{�!� ��H�H�V�$�$�$��+�#+�f�#4���#*���=�5:�U�U�H�H�H�c�c�c� J���=�/7�h�h���� <����(�G��	)� �rN)r3r4r5r�rOr�r7rrr�r�.s8������4�4��������rr�cs�eZdZdZdS)r{zEException raised to short-circuit parsing in InternalSubsetExtractor.N)r3r4r5r�r7rrr{r{Ss������O�O��Drr{cs@�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�ZdS)
r�zBXML processor which can rip out the internal document type subset.Ncs�|jS)z'Return the internal subset as a string.)r�rrrr�z!InternalSubsetExtractor.getSubset\s
���{�rc�`�	t�||��dS#t$rYdSwxYwr)rHr�r{r�rrr�z!InternalSubsetExtractor.parseFile`sE��	��"�"�4��.�.�.�.�.���	�	�	��D�D�	������
-�-cr�r)rHr�r{)rr�rrr�z#InternalSubsetExtractor.parseStringfsE��	��$�$�T�6�2�2�2�2�2���	�	�	��D�D�	���r�cs6�|j|_|j|_dSr)rZr[r�r]rurrrSzInternalSubsetExtractor.installls��)-�)H��&�%)�%?��"�"�"rcs��|r:|���}g|_|jj|_|j|_dSt
���r)rTr�r�ZDefaultHandlerr�r�r{)rr@r�r�r�rvrrrZz2InternalSubsetExtractor.start_doctype_decl_handlerpsH���	 ��^�^�%�%�F��D�K�$(�K�$6�F�!�+/�+H�F�(�(�(��-�-�rcs��d�|j���dd���dd��}||_t���)Nr�z
z
z
)Zjoinr�Zreplacer{)rr:rrr�z0InternalSubsetExtractor.end_doctype_decl_handlerzsF���G�G�D�K� � �(�(���6�6�>�>�t�T�J�J������m�m�rcs�t���r)r{)rr@r�rrr�z-InternalSubsetExtractor.start_element_handlers���m�m�r)r3r4r5r�r�r�r�r�rSrZr�r�r7rrr�r�Ws�������L�L�
�F����������@�@�@� � � ����
����rr�Tcs�|rt��}nt��}t|t��r>t	|d��5}|�|��}ddd��n#1swxYwYn|�|��}|S)z{Parse a document, returning the resulting Document node.

    'file' may be either a file name or an open file object.
    �rbN)r�rH�
isinstance�str�openr�)r|�
namespacesr9�fp�resultr1r�parser��s���
�!� �"�"����.�.���$����)�
�$��
�
�	+���&�&�r�*�*�F�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+���"�"�4�(�(���Ms�A'�'A+�.A+csj�|rt��}nt��}|�|��S)zOParse a document from a string, returning the resulting
    Document node.
    )r�rHr�)r�r�r9rrr�r��s6���!� �"�"����.�.�����v�&�&�&rcs�|rt|��}nt|��}t|t��r>t	|d��5}|�|��}ddd��n#1swxYwYn|�|��}|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�r9r�r�rr�
parseFragmentr��s����+�#�G�,�,���!�'�*�*���$����)�
�$��
�
�	+���&�&�r�*�*�F�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+���"�"�4�(�(���Ms�A)�)A-�0A-csn�|rt|��}nt|��}|�|��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�r9r'r�parseFragmentStringr��s<��
�+�#�G�,�,���!�'�*�*�����v�&�&�&rcsL�|jrt|��St|��S)z,Create a builder based on an Options object.)r�r�rH)rPrr�makeBuilderr��s)����%��g�&�&�&��G�$�$�$r)T)3r�Zxml.domrrrrrrZxml.parsersrZxml.dom.minidomrr	Zxml.dom.NodeFilterr
r�r�r�ZDOMBuilderFilterr�r�r�r�ZgetDOMImplementationrUZTypeInfor#Zobjectrr;rGrHr�rKr�r�r�r�r�r�r�r�r�Z	Exceptionr{r�r�r�r�r�r�r7rr�<module>r�sZ����:.�-�-�-�-�-�-�-�-�-�B�B�B�B�B�B�B�B�B�B�������>�>�>�>�>�>�>�>�)�)�)�)�)�)��N�	��,���"�
��+�9�
��+�9�
��)�5���.�?��3�w�3�5�5��!�� ��w�/�/� �� ��}�5�5� �� ��x�0�0� �� ��z�2�2� �� ��t�,�,� �� ��w�/�/� �� ��x�0�0� �� ��y�1�1� �� ��z�2�2�
�
�
�1(�1(�1(�1(�1(�&�1(�1(�1(�f,�,�,�6�6�6�&|1�|1�|1�|1�|1�|1�|1�|1�B
)�-��E��7
�7
�7
�7
�7
��7
�7
�7
�t
<�
<�
<�
<�
<�6�
<�
<�
<�*�*�*�*�*�|�*�*�*�8!�!�!�!�!�l�!�!�!�2?�%�*�+�	+��r9�r9�r9�r9�r9�l�r9�r9�r9�j\.�\.�\.�\.�\.�\.�\.�\.�~�����Z�����"�"�"�"�"�
�O�"�"�"�J	�	�	�	�	�)�	�	�	�)�)�)�)�)�l�)�)�)�X����$'�'�'�'�����(	'�	'�	'�	'�%�%�%�%�%r