Your IP : 216.73.216.213


Current Path : /opt/alt/python311/lib64/python3.11/test/__pycache__/
Upload File :
Current File : //opt/alt/python311/lib64/python3.11/test/__pycache__/test_pyexpat.cpython-311.pyc

�

�0�i؜��~�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZmZddlmZddlmZddlmZmZmZGd�d	ej��Zd
ZGd�dej��ZGd
�dej��ZGd�dej��ZGd�dej��ZGd�dej��ZGd�dej��Z Gd�dej��Z!Gd�dej��Z"Gd�dej��Z#Gd�dej��Z$Gd�d ej��Z%Gd!�d"ej��Z&Gd#�d$ej��Z'Gd%�d&ej(��Z)ej*ej+d'kd(��Gd)�d*e)ej����Z,e-d+krej.��dSdS),�N)�BytesIO)�support)�
import_helper�	os_helper)�expat)�errors)�sortdict�
is_emscripten�is_wasic�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�SetAttributeTestc�:�tjd���|_dS�N�!��namespace_separator)r�ParserCreate�parser��selfs �8/opt/alt/python311/lib64/python3.11/test/test_pyexpat.py�setUpzSetAttributeTest.setUps���(�S�A�A�A�����c���|�|jjd��dD];}||j_|�|jjt|�����<dS�NF)r��r)�assertIsr�buffer_text�bool�r�xs  r�test_buffer_textz!SetAttributeTest.test_buffer_texts`���
�
�d�k�-�u�5�5�5��	<�	<�A�&'�D�K�#��M�M�$�+�1�4��7�7�;�;�;�;�	<�	<rc���|�|jjd��dD];}||j_|�|jjt|�����<dSr)rr�namespace_prefixesr r!s  r�test_namespace_prefixesz(SetAttributeTest.test_namespace_prefixes"�d���
�
�d�k�4�e�<�<�<��	C�	C�A�-.�D�K�*��M�M�$�+�8�$�q�'�'�B�B�B�B�	C�	Crc���|�|jjd��dD];}||j_|�|jjt|�����<dSr)rr�ordered_attributesr r!s  r�test_ordered_attributesz(SetAttributeTest.test_ordered_attributes(r'rc���|�|jjd��dD];}||j_|�|jjt|�����<dSr)rr�specified_attributesr r!s  r�test_specified_attributesz*SetAttributeTest.test_specified_attributes.sd���
�
�d�k�6��>�>�>��	E�	E�A�/0�D�K�,��M�M�$�+�:�D��G�G�D�D�D�D�	E�	Erc�8�|�t��5d|j_ddd��n#1swxYwY|�t��5|jjddd��n#1swxYwY|�tt
|jt
d��d��|�t|jjt
d��d��|�tt|jt
d����dS)Nr�r)	�assertRaises�AttributeErrorr�returns_unicode�	TypeError�setattr�range�__setattr__�getattrrs r�test_invalid_attributesz(SetAttributeTest.test_invalid_attributes4s\��
�
�
�~�
.�
.�	,�	,�*+�D�K�'�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�
�
�
�~�
.�
.�	(�	(��K�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	
���)�W�d�k�5��:�:�q�I�I�I����)�T�[�%<�e�C�j�j�!�L�L�L����)�W�d�k�5��:�:�F�F�F�F�Fs�
4�8�8�
A2�2A6�9A6N)	�__name__�
__module__�__qualname__rr#r&r*r-r8�rrr
r
s������B�B�B�<�<�<�C�C�C�C�C�C�E�E�E�	G�	G�	G�	G�	Grr
s�<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<?xml-stylesheet href="stylesheet.css"?>
<!-- comment data -->
<!DOCTYPE quotations SYSTEM "quotations.dtd" [
<!ELEMENT root ANY>
<!ATTLIST root attr1 CDATA #REQUIRED attr2 CDATA #IMPLIED>
<!NOTATION notation SYSTEM "notation.jpeg">
<!ENTITY acirc "&#226;">
<!ENTITY external_entity SYSTEM "entity.file">
<!ENTITY unparsed_entity SYSTEM "entity.file" NDATA notation>
%unparsed_entity;
]>

<root attr1="value1" attr2="value2&#8000;">
<myns:subelement xmlns:myns="http://www.python.org/namespace">
     Contents of subelements
</myns:subelement>
<sub2><![CDATA[contents of CDATA section]]></sub2>
&external_entity;
&skipped_entity;
�
</root>
c�T�eZdZGd�d��Zgd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
S)�	ParseTestc��eZdZd�Zd�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�ZdS)�ParseTest.Outputterc��g|_dS�N)�outrs r�__init__zParseTest.Outputter.__init__]s
���D�H�H�Hrc��|j�dt|��zdzt|��z��dS)NzStart element: � )rC�append�reprr	�r�name�attrss   r�StartElementHandlerz'ParseTest.Outputter.StartElementHandler`sE���H�O�O�-��T�
�
�:�S�@�$�U�O�O�,�
-�
-�
-�
-�
-rc�Z�|j�dt|��z��dS)Nz
End element: �rCrGrH�rrJs  r�EndElementHandlerz%ParseTest.Outputter.EndElementHandlerds'���H�O�O�O�d�4�j�j�8�9�9�9�9�9rc��|���}|r,|j�dt|��z��dSdS)NzCharacter data: )�striprCrGrH�r�datas  r�CharacterDataHandlerz(ParseTest.Outputter.CharacterDataHandlergsJ���:�:�<�<�D��
A����� 2�T�$�Z�Z� ?�@�@�@�@�@�
A�
Arc��|j�dt|��zdzt|��z��dS)NzPI: rFrN)r�targetrTs   r�ProcessingInstructionHandlerz0ParseTest.Outputter.ProcessingInstructionHandlerls7���H�O�O�F�T�&�\�\�1�C�7�$�t�*�*�D�E�E�E�E�Erc��|j�dt|��zdzt|��z��dS)Nz	NS decl: rFrN)r�prefix�uris   r�StartNamespaceDeclHandlerz-ParseTest.Outputter.StartNamespaceDeclHandleros7���H�O�O�K�$�v�,�,�6��<�t�C�y�y�H�I�I�I�I�Irc�Z�|j�dt|��z��dS)NzEnd of NS decl: rN)rrZs  r�EndNamespaceDeclHandlerz+ParseTest.Outputter.EndNamespaceDeclHandlerrs(���H�O�O�.��f���=�>�>�>�>�>rc�:�|j�d��dS)N�Start of CDATA section�rCrGrs r�StartCdataSectionHandlerz,ParseTest.Outputter.StartCdataSectionHandlerus���H�O�O�4�5�5�5�5�5rc�:�|j�d��dS)N�End of CDATA sectionrars r�EndCdataSectionHandlerz*ParseTest.Outputter.EndCdataSectionHandlerxs���H�O�O�2�3�3�3�3�3rc�Z�|j�dt|��z��dS)Nz	Comment: rN�r�texts  r�CommentHandlerz"ParseTest.Outputter.CommentHandler{s'���H�O�O�K�$�t�*�*�4�5�5�5�5�5rc�N�|\}}}}|j�d|����dS)NzNotation declared: ra)r�argsrJ�base�sysid�pubids      r�NotationDeclHandlerz'ParseTest.Outputter.NotationDeclHandler~s1��'+�$�D�$��u��H�O�O�O�d�d�<�=�=�=�=�=rc�P�|\}}}}}|j�d|����dS)NzUnparsed entity decl: ra)rrk�
entityNamerl�systemId�publicId�notationNames       r�UnparsedEntityDeclHandlerz-ParseTest.Outputter.UnparsedEntityDeclHandler�s3��AE�>�J��h��,��H�O�O�O���?�@�@�@�@�@rc�:�|j�d��dS)N�Not standalonerrars r�NotStandaloneHandlerz(ParseTest.Outputter.NotStandaloneHandler�s���H�O�O�,�-�-�-��1rc�^�|\}}}}|j�d|dd�����dS)NzExternal entity ref: rra)rrk�contextrl�sysId�pubIds      r�ExternalEntityRefHandlerz,ParseTest.Outputter.ExternalEntityRefHandler�s8��*.�'�G�T�5�%��H�O�O�O��Q�R�R���B�C�C�C��1rc�>�|j�d|f��dS)N�
Start doctyperra�rrks  r�StartDoctypeDeclHandlerz+ParseTest.Outputter.StartDoctypeDeclHandler�s ���H�O�O�_�d�3�4�4�4��1rc�:�|j�d��dS)N�End doctyperrars r�EndDoctypeDeclHandlerz)ParseTest.Outputter.EndDoctypeDeclHandler�s���H�O�O�M�*�*�*��1rc�>�|j�d|f��dS)N�Entity declarationrrar�s  r�EntityDeclHandlerz%ParseTest.Outputter.EntityDeclHandler�s!���H�O�O�1�4�8�9�9�9��1rc�>�|j�d|f��dS)N�XML declarationrrar�s  r�XmlDeclHandlerz"ParseTest.Outputter.XmlDeclHandler�s!���H�O�O�.��5�6�6�6��1rc�>�|j�d|f��dS)N�Element declarationrrar�s  r�ElementDeclHandlerz&ParseTest.Outputter.ElementDeclHandler�s!���H�O�O�2�D�9�:�:�:��1rc�>�|j�d|f��dS)N�Attribute list declarationrrar�s  r�AttlistDeclHandlerz&ParseTest.Outputter.AttlistDeclHandler�s!���H�O�O�9�4�@�A�A�A��1rc�>�|j�d|f��dS)N�Skipped entityrrar�s  r�SkippedEntityHandlerz(ParseTest.Outputter.SkippedEntityHandler�s!���H�O�O�-�t�4�5�5�5��1rc��dSrBr<�r�userDatas  r�DefaultHandlerz"ParseTest.Outputter.DefaultHandler�����Drc��dSrBr<r�s  r�DefaultHandlerExpandz(ParseTest.Outputter.DefaultHandlerExpand�r�rN)r9r:r;rDrLrPrUrXr\r^rbrerirorurxr}r�r�r�r�r�r�r�r�r�r<rr�	Outputterr@\sy������	�	�	�	-�	-�	-�	:�	:�	:�	A�	A�	A�
	F�	F�	F�	J�	J�	J�	?�	?�	?�	6�	6�	6�	4�	4�	4�	6�	6�	6�	>�	>�	>�	A�	A�	A�	�	�	�	�	�	�
	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	rr�)rLrPrUrXruror\r^rirbrer�r�rxr}r�r�r�r�r�r�r�c	�X�|jD]!}t||t||�����"dS)z{
        Set each of the callbacks defined on handler and named in
        self.handler_names on the given parser.
        N)�
handler_namesr4r7)rr�handlerrJs    r�_hookup_callbackszParseTest._hookup_callbacks�s?��
�&�	:�	:�D��F�D�'�'�4�"8�"8�9�9�9�9�	:�	:rc�f�gd�}t||��D]\}}|�||���dS)N))r�)z1.0�
iso-8859-1rz,PI: 'xml-stylesheet' 'href="stylesheet.css"'zComment: ' comment data 'rw)r)�
quotationszquotations.dtdNr)r�)�root)rrNr<)r�)r��attr1�CDATANr)r�)r��attr2r�Nrz<Notation declared: ('notation', None, 'notation.jpeg', None))r�)�acircr�âNNNN)r�)�external_entityrNNzentity.fileNNzPUnparsed entity decl: ('unparsed_entity', None, 'entity.file', None, 'notation')rwr�u?Start element: 'root' {'attr1': 'value1', 'attr2': 'value2ὀ'}z1NS decl: 'myns' 'http://www.python.org/namespace'z>Start element: 'http://www.python.org/namespace!subelement' {}z)Character data: 'Contents of subelements'z9End element: 'http://www.python.org/namespace!subelement'zEnd of NS decl: 'myns'zStart element: 'sub2' {}r`z+Character data: 'contents of CDATA section'rdzEnd element: 'sub2'z0External entity ref: (None, 'entity.file', None))r�)�skipped_entityruCharacter data: 'µ'zEnd element: 'root')�zip�assertEqual)r�
operations�expected_operations�	operation�expected_operations     r�_verify_parse_outputzParseTest._verify_parse_output�s[��!
�!
�!
��D.1��=P�-Q�-Q�	<�	<�)�I�)����Y�(:�;�;�;�;�	<�	<rc�6�|���}tjd���}|�||��|�t
d��|j}|�|��|�tt|d��dS)NrrTu�)r�rrr��ParserTrCr�r0r1r7�rrCrr�s    r�test_parse_byteszParseTest.test_parse_bytes�s����n�n�����#��<�<�<�����v�s�+�+�+����T�4� � � ��W�
��!�!�*�-�-�-����.�'�6�8�D�D�D�D�Drc��|���}tjd���}|�||��|�t
�d��d��|j}|�|��dS)Nrrr�T)	r�rrr�r�rT�decoderCr�r�s    r�test_parse_strzParseTest.test_parse_str�s{���n�n�����#��<�<�<�����v�s�+�+�+����T�[�[��.�.��5�5�5��W�
��!�!�*�-�-�-�-�-rc��|���}tjd���}|�||��t	t
��}|�|��|j}|�|��dSr)	r�rrr�rrT�	ParseFilerCr�)rrCr�filer�s     r�test_parse_filezParseTest.test_parse_filesz���n�n�����#��<�<�<�����v�s�+�+�+��t�}�}����������W�
��!�!�*�-�-�-�-�-rc��tj��}tt��}|�|��|�tj��5}|�|��ddd��n#1swxYwY|�tj|j	j
��tjj��dSrB)
rrrrTr�r0�errorr��ErrorString�	exception�coder�XML_ERROR_FINISHED)rrr��cms    r�test_parse_againzParseTest.test_parse_again
s����#�%�%���t�}�}����������
�
�u�{�
+�
+�	#�r����T�"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�����*�2�<�+<�=�=��,�9�	;�	;�	;�	;�	;s�A>�>B�BN)r9r:r;r�r�r�r�r�r�r�r�r<rrr>r>[s�������S�S�S�S�S�S�S�S�j

�

�

�M�:�:�:�$<�$<�$<�L
E�
E�
E�.�.�.�
.�
.�
.�
;�
;�
;�
;�
;rr>c� �eZdZd�Zd�Zd�ZdS)�NamespaceSeparatorTestc��tj��tjd���tjd���dS)NrrF�rrrs r�
test_legalz!NamespaceSeparatorTest.test_legalsA��	�����
��t�4�4�4�4�
��s�3�3�3�3�3�3rc��	tjd���|���n:#t$r-}|�t|��d��Yd}~nd}~wwxYw	tjd���|���dS#t$r.}|�t|��d��Yd}~dSd}~wwxYw)N�*rzJParserCreate() argument 'namespace_separator' must be str or None, not intztoo longzCnamespace_separator must be at most one character, omitted, or None)rr�failr3r��str�
ValueError)r�es  r�test_illegalz#NamespaceSeparatorTest.test_illegal!s*��	^���2�6�6�6�6��I�I�K�K�K�K���	^�	^�	^����S��V�V�\�
^�
^�
^�
^�
^�
^�
^�
^�����	^����	W���:�>�>�>�>��I�I�K�K�K�K�K���	W�	W�	W����S��V�V�U�
W�
W�
W�
W�
W�
W�
W�
W�
W�����	W���s,�),�
A#�#A�A#�')B�
C
�#C�C
c�0�tjd���dS)N�rr�rs r�test_zero_lengthz'NamespaceSeparatorTest.test_zero_length0s��	��r�2�2�2�2�2�2rN)r9r:r;r�r�r�r<rrr�r�sD������4�4�4�
W�
W�
W�	3�	3�	3�	3�	3rr�c��eZdZd�Zd�ZdS)�
InterningTestc���tj��}g��fd�}||_||_|�dd���d}|�t
���d���D]}|�||u���dS)Nc�2����|��dSrB�rG)rJrk�Ls  �r�	collectorz%InterningTest.test.<locals>.collectorAs���
�H�H�T�N�N�N�N�Nrs<e> <e/> <e></e> </e>Tr�)rrrLrPr�r��len�
assertTrue)r�pr��tag�entryr�s     @r�testzInterningTest.test=s������ � ����	�	�	�	�	� )���'���	���(�$�/�/�/���d������Q����#�#�#��	*�	*�E��O�O�C�5�L�)�)�)�)�	*�	*rc���Gd�d��}tjd���}d|_||��}|j|_|�t
d��|�|jd��dS)Nc��eZdZd�Zd�ZdS)�7InterningTest.test_issue9402.<locals>.ExternalOutputterc�"�||_d|_dSrB)r�
parser_result�rrs  rrDz@InterningTest.test_issue9402.<locals>.ExternalOutputter.__init__Os��$���%)��"�"�"rc�p�|j�d��}|�dd��|_dS)Nr�rTr)r�ExternalEntityParserCreater�r�)rrzrlr{r|�external_parsers      rr}zPInterningTest.test_issue9402.<locals>.ExternalOutputter.ExternalEntityRefHandlerSs4��"&�+�"H�"H��"L�"L��%4�%:�%:�3��%E�%E��"��qrN)r9r:r;rDr}r<rr�ExternalOutputterr�Ns2������
*�
*�
*�
�
�
�
�
rr�rrrT)rrrr}r�rTr�r�)rr�rrCs    r�test_issue9402zInterningTest.test_issue9402Ls���	�	�	�	�	�	�	�	��#��<�<�<��������'�'��*-�*F��'����T�4� � � �����*�A�.�.�.�.�.rN)r9r:r;r�r�r<rrr�r�<s2������
*�
*�
*�/�/�/�/�/rr�c�r�eZdZd�Zd�Zd�Zd�Zd�Zd�Zgfd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�ZdS)�BufferTextTestc�~�g|_tj��|_d|j_|j|j_dS�Nr)�stuffrrrrrUrs rrzBufferTextTest.setUpas6����
��(�*�*���"#����+/�+D���(�(�(rc�~�|�|j||�d|j�dtt|������dS)Nz
stuff    = z
expected = )r�r��mapr�)r�expected�labels   r�checkzBufferTextTest.checkgsM�������X��5�5�$�*�*�*�c�#�x�&8�&8�&8�:�	;�	;�	;�	;�	;rc�:�|j�|��dSrB�r�rGrgs  rrUz#BufferTextTest.CharacterDataHandlerls���
���$�����rc��|j�d|z��|�d��}|dkrd|j_dS|dkrd|j_dSdS)Nz<%s>zbuffer-text�yesr�nor)r�rG�getrr)rrJrK�bts    rrLz"BufferTextTest.StartElementHandlerosf���
���&�4�-�(�(�(�
�Y�Y�}�
%�
%��
��;�;�&'�D�K�#�#�#�
�4�Z�Z�&'�D�K�#�#�#��Zrc�@�|j�d|z��dS)Nz</%s>r�rOs  rrPz BufferTextTest.EndElementHandlerws"���
���'�D�.�)�)�)�)�)rc�@�|j�d|z��dS)Nz	<!--%s-->r�rSs  rrizBufferTextTest.CommentHandlerzs#���
���+��,�-�-�-�-�-rc	�X�|D]&}t|j|t||�����'dSrB)r4rr7)r�handlersrJs   r�setHandlerszBufferTextTest.setHandlers}s<���	<�	<�D��D�K��w�t�T�':�':�;�;�;�;�	<�	<rc�`�tj��}|�|j��dSrB)rr�assertFalserr�s  r�test_default_to_disabledz'BufferTextTest.test_default_to_disabled�s-���#�%�%������+�,�,�,�,�,rc��|�|jj��|j�dd��|�|jdgd��dS)N�<a>1<b/>2<c/>3</a>T�123�$buffered text not properly collapsed)r�rrr�r�r�rs r�test_buffering_enabledz%BufferTextTest.test_buffering_enabled�sd�������/�0�0�0�����/��6�6�6������e�W�?�	A�	A�	A�	A�	Arc��|�dg��|j�dd��|�|jgd�d��dS)NrLs9<a>1<b buffer-text='no'/>2
3<c buffer-text='yes'/>4
5</a>T)�<a>�1�<b>�2�
�3�<c>z4
5z*buffering control not reacting as expected�rrr�r�r�rs r�test1zBufferTextTest.test1�sm��	
���/�0�1�1�1�����X�Z^�_�_�_������K�K�K�E�	G�	G�	G�	G�	Grc�v�|j�dd��|�|jdgd��dS)Ns&<a>1<b/>&lt;2&gt;<c/>&#32;
&#x20;3</a>Tz1<2> 
 3r	)rr�r�r�rs r�test2zBufferTextTest.test2�sM������D�d�K�K�K������k�]�?�	A�	A�	A�	A�	Arc��|�dg��|j�dd��|�|jgd�d��dS)NrLrT)rr
rrrr� buffered text not properly splitrrs r�test3zBufferTextTest.test3�se�����/�0�1�1�1�����/��6�6�6������%I�%I�%I�;�	=�	=�	=�	=�	=rc��|�ddg��d|j_|j�dd��|�|jgd���dS)NrLrPrT)rr�</b>r�</c>�</a>)rrrUr�r�r�rs r�test4zBufferTextTest.test4�st�����/�1D�E�F�F�F�+/���(�����/��6�6�6������F�F�F�	H�	H�	H�	H�	Hrc��|�ddg��|j�dd��|�|jgd���dS)NrLrPs<a>1<b></b>2<c/>3</a>T)	rr
rrrrrrrrrs r�test5zBufferTextTest.test5�sj�����/�1D�E�F�F�F�����2�D�9�9�9������H�H�H�	J�	J�	J�	J�	Jrc��|�gd���|j�dd��|�|jgd�d��dS)N�rirPrLs<a>1<b/>2<c></c>345</a> T)	rr
rrrrr�345rrrrs r�test6zBufferTextTest.test6�st�����+�+�+�	,�	,�	,�����5�t�<�<�<������J�J�J�.�	0�	0�	0�	0�	0rc��|�gd���|j�dd��|�|jgd�d��dS)Nr"s,<a>1<b/>2<c></c>3<!--abc-->4<!--def-->5</a> T)
rr
rrrrrrz
<!--abc-->�4z
<!--def-->�5rrrrs r�test7zBufferTextTest.test7�s}�����+�+�+�	,�	,�	,�����I�4�P�P�P������H�H�H�;�	=�	=�	=�	=�	=rN)r9r:r;rr�rUrLrPrirrr
rrrrr r$r(r<rrr�r�`s ������E�E�E�;�;�;�
 � � �(�(�(�*�*�*�.�.�.�$&�<�<�<�<�-�-�-�A�A�A�G�G�G�A�A�A�
=�=�=�H�H�H�J�J�J�0�0�0�=�=�=�=�=rr�c�@�eZdZd�Zd�Zejd���Zd�ZdS)�HandlerExceptionTestc�(�td|�d����)NzStartElementHandler: <�>)�RuntimeErrorrIs   rrLz(HandlerExceptionTest.StartElementHandler�s���;�D�;�;�;�<�<�<rc��|�tj�|j��|��|�|j|��dSrB)r��os�path�basename�filenamerJ)rr�r2�funcnames    r�check_traceback_entryz*HandlerExceptionTest.check_traceback_entry�sH�������)�)�%�.�9�9�8�D�D�D������X�.�.�.�.�.rc�,�tjd��}|r tj�|��}nd}|rDtj|��5|�|��ddd��dS#1swxYwYdS|�|��dS)N�abs_builddirF)�	sysconfig�get_config_varr/r0�isdirr�
change_cwd�_test_exception)r�src_dir�have_sources   r�test_exceptionz#HandlerExceptionTest.test_exception�s����*�>�:�:���	 ��'�-�-��0�0�K�K��K��	.��%�g�.�.�
2�
2��$�$�[�1�1�1�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2�
2�
2�
� � ��-�-�-�-�-s�A2�2A6�9A6c�>�tj�dd��}tj��}|j|_	|�dd��|�d��nR#t$rE}|�	|j
dd|��tj|j
��}Yd}~nd}~wwxYw|�	t|��d|��|�|dd	d
��|�|dtj�|��d��|�|d
d	d��|rBtj�|��r%|�d|dj��dSdSdS)N�Modulesz	pyexpat.cs<a><b><c/></b></a>Tz%the parser did not raise RuntimeErrorrzStartElementHandler: <a>�ztest_pyexpat.pyr;r�StartElementrrLzcall_with_frame("StartElement")r/r0�joinrrrLr�r�r-r�rk�	traceback�
extract_tb�
__traceback__r�r4r1�exists�assertIn�line)rr=�	PYEXPAT_Cr�exc�entriess      rr;z$HandlerExceptionTest._test_exception�s����G�L�L��K�8�8�	��#�%�%��%)�%=��"�	>��L�L�.��5�5�5��I�I�=�>�>�>�>���	>�	>�	>����S�X�a�[�*D�c�J�J�J��*�3�+<�=�=�G�G�G�G�G�G�����	>����	
����W���q�'�2�2�2��"�"�7�1�:�#4�6G�	I�	I�	I��"�"�7�1�:�#%�7�#3�#3�I�#>�#>�#1�	3�	3�	3�	
�"�"�7�1�:�#4�6K�	M�	M�	M��	+�2�7�>�>�)�4�4�	+��M�M�:�!�!�*�/�
+�
+�
+�
+�
+�	+�	+�	+�	+s�+A-�-
B<�7;B7�7B<N)	r9r:r;rLr4r�cpython_onlyr>r;r<rrr*r*�s`������=�=�=�/�/�/�
��.�.���.� +�+�+�+�+rr*c�&�eZdZd�Zd�Zd�Zd�ZdS)�PositionTestc�0�|�d��dS)N�s��	check_posrIs   rrLz PositionTest.StartElementHandler�������s�����rc�0�|�d��dS)Nr�rRrOs  rrPzPositionTest.EndElementHandler�rTrc�.�||jj|jj|jjf}|�|jt
|j��kd��|j|j}|�||d|�d|����|xjdz
c_dS)Nztoo many parser eventszExpected position z, got position r)	r�CurrentByteIndex�CurrentLineNumber�CurrentColumnNumberr��uptor��
expected_listr�)r�event�posr�s    rrSzPositionTest.check_poss�����{�+��{�,��{�.�0��	
����	�C��(:�$;�$;�;�0�	2�	2�	2��%�d�i�0������h�h�:=�#�#�x�x�H�	J�	J�	J��	�	�Q��	�	�	�	rc���tj��|_|j|j_|j|j_d|_gd�|_d}|j�|d��dS)Nr))rQrrr)rQ�rr)rQ�rAr)r�r/rAr�)r���r)r��r_rs<a>
 <b>
  <c/>
 </b>
</a>T)rrrrLrPrZr[r�)r�xmls  rr�zPositionTest.test
so���(�*�*���*.�*B���'�(,�(>���%���	�Q�Q�Q���0������#�t�$�$�$�$�$rN)r9r:r;rLrPrSr�r<rrrOrO�sP������������
�
�
�	%�	%�	%�	%�	%rrOc��eZdZd�ZdS)�
sf1296433Testc����ddz}Gd�dt����fd�}tj��}||_|�t|j|�d����dS)Nz1<?xml version='1.0' encoding='iso8859'?><s>%s</s>�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac��eZdZdS)�Asf1296433Test.test_parse_only_xml_data.<locals>.SpecificExceptionN)r9r:r;r<rr�SpecificExceptionrj!s�������Drrkc�����rBr<)rhrks �rr�z7sf1296433Test.test_parse_only_xml_data.<locals>.handler$s	���#�#r�iso8859)�	ExceptionrrrUr0r��encode)rrdr�rrks    @r�test_parse_only_xml_dataz&sf1296433Test.test_parse_only_xml_datas����B�Z�P��	�	�	�	�	�	�	�	�	�	$�	$�	$�	$�	$��#�%�%��&-��#����)�V�\�3�:�:�i�3H�3H�I�I�I�I�IrN)r9r:r;rpr<rrrfrfs(������J�J�J�J�Jrrfc�H�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�ChardataBufferTestz.
    test setting of chardata buffer size
    c�X�|�|�d��d��dS)Nir�r��small_buffer_testrs r�test_1025_bytesz"ChardataBufferTest.test_1025_bytes1�,������/�/��5�5�q�9�9�9�9�9rc�X�|�|�d��d��dS)Ni�rrtrs r�test_1000_bytesz"ChardataBufferTest.test_1000_bytes4rwrc�,�tj��}d|_|�t��5d|_ddd��n#1swxYwY|�t��5d|_ddd��n#1swxYwY|�ttf��5tjdz|_ddd��n#1swxYwY|�t��5d|_ddd��dS#1swxYwYdS)Nr���rg�@)
rrrr0r��buffer_size�
OverflowError�sys�maxsizer3r�s  r�test_wrong_sizez"ChardataBufferTest.test_wrong_size7s����#�%�%�����
�
�
�z�
*�
*�	$�	$�!#�F��	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
�
�
�z�
*�
*�	#�	#�!"�F��	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�
�
�
�
�M�:�
;�
;�	1�	1�!$��q��F��	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�
�
�
�y�
)�
)�	'�	'�!&�F��	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	'sG�A	�	A
�A
�.B�B�	B�.C�C�C�4D	�	D
�D
c��d}d}tj��}|j|_d|_d|_d|_|�|��|�|jd��|j|_|�|jd��|�|��|�|jd��dS)Ns+<?xml version='1.0' encoding='iso8859'?><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</s>irrr)	rr�counting_handlerrUr|r�nr�r��r�xml1�xml2rs    r�test_unchanged_sizez&ChardataBufferTest.test_unchanged_sizeCs���J��!���#�%�%��&*�&;��#� ������������T����������#�#�#�$�/���������#�#�#�	���T����������#�#�#�#�#rc� �d}d}d}tj��}|j|_d|_d|_|�|jd��d|_|�|d��|�|jd��|�|jd��d|_|�	|j��|�|jd��td��D]}|�|d���|�|jd	��d|_|�|j��|�|jd��|�|d
��|�|jd��dS)Ns+<?xml version='1.0' encoding='iso8859'?><a>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc</a>r�rF�
r`T�)rrr�rUrr|r�r�r�rr5r�)rr�r��xml3r�is      r�test_disabling_bufferz(ChardataBufferTest.test_disabling_bufferZs���J����$���#�%�%��&*�&;��#����!�������+�T�2�2�2�������T�5�!�!�!�����+�T�2�2�2�������#�#�#��������+�,�,�,�����+�T�2�2�2��r���	&�	&�A��L�L��u�%�%�%�%�������$�$�$��������*�+�+�+�����+�T�2�2�2����T�4� � � �������$�$�$�$�$rc�&�|xjdz
c_dSr�)r�rgs  rr�z#ChardataBufferTest.counting_handlerxs�����!�����rc��dd|zzdz}tj��}|j|_d|_d|_d|_|�|��|jS)Ns+<?xml version='1.0' encoding='iso8859'?><s>�as</s>r�rr)rrr�rUr|rr�r�)r�
buffer_lenrdrs    rruz$ChardataBufferTest.small_buffer_test{s`��<�t�j�?P�P�SZ�Z���#�%�%��&*�&;��#�!������������S�����v�
rc��d}d}tj��}|j|_d|_d|_|�|jd��d|_|�|d��|xjdzc_|�|jd��|�|d	��|�|jd��dS)
Ns.<?xml version='1.0' encoding='iso8859'?><a><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa�aaa</s><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</s></a>rr�rFr�T�	rrr�rUrr|r�r�r�r�s    r�test_change_size_1z%ChardataBufferTest.test_change_size_1�s���N��8���#�%�%��&*�&;��#����!�������+�T�2�2�2�������T�5�!�!�!����a��������+�T�2�2�2����T�4� � � �������#�#�#�#�#rc��d}d}tj��}|j|_d|_d|_|�|jd��d|_|�|d��|jdz|_|�|jd��|�|d	��|�|jd
��dS)Ns.<?xml version='1.0' encoding='iso8859'?><a>a<s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar�rr�rFrr�Trbr�r�s    r�test_change_size_2z%ChardataBufferTest.test_change_size_2�s���O��8���#�%�%��&*�&;��#����!�������+�T�2�2�2�������T�5�!�!�!�#�/�1�4�������+�T�2�2�2����T�4� � � �������#�#�#�#�#rN)
r9r:r;�__doc__rvryr�r�r�r�rur�r�r<rrrrrr,s���������:�:�:�:�:�:�
'�
'�
'�$�$�$�.%�%�%�<���	�	�	�$�$�$� $�$�$�$�$rrrc��eZdZd�Zd�ZdS)�MalformedInputTestc��d}tj��}	|�|d��|���dS#tj$r.}|�t
|��d��Yd}~dSd}~wwxYw)Ns
Tz unclosed token: line 2, column 0)rrr�r��
ExpatErrorr�r��rrdrr�s    rrzMalformedInputTest.test1�s������#�%�%��	I��L�L��d�#�#�#��I�I�K�K�K�K�K����	I�	I�	I����S��V�V�%G�H�H�H�H�H�H�H�H�H�����	I���s�*A�B�#A;�;Bc���d}tj��}d}|�tj|��5|�|d��ddd��dS#1swxYwYdS)Ns<?xml version…='1.0'?>
z3XML declaration not well-formed: line 1, column \d+T)rr�assertRaisesRegexr�r�)rrdr�err_patterns    rrzMalformedInputTest.test2�s���2���#�%�%��L��
�
#�
#�E�$4�k�
B�
B�	$�	$��L�L��d�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s�A�A �#A N)r9r:r;rrr<rrr�r��s5������I�I�I�$�$�$�$�$rr�c��eZdZd�Zd�ZdS)�ErrorMessageTestc��|�tjtjtjtj��dSrB)r�r�XML_ERROR_SYNTAX�messages�codesrs r�
test_codeszErrorMessageTest.test_codes�sB������0�����f�6M�)N�O�	Q�	Q�	Q�	Q�	Qrc�*�d}tj��}	|�|d��|���dS#tj$r@}|�|jtjtj	��Yd}~dSd}~wwxYw)N�<T)
rrr�r�r�r�r�rr��XML_ERROR_UNCLOSED_TOKENr�s    r�test_expaterrorz ErrorMessageTest.test_expaterror�s������#�%�%��	L��L�L��d�#�#�#��I�I�K�K�K�K�K����	L�	L�	L����Q�V�#�\�&�*I�J�
L�
L�
L�
L�
L�
L�
L�
L�
L�����	L���s�*A�B�5B
�
BN)r9r:r;r�r�r<rrr�r��s:������Q�Q�Q�
L�L�L�L�Lrr�c��eZdZdZd�Zd�ZdS)�ForeignDTDTestszE
    Tests for the UseForeignDTD method of expat parser objects.
    c�
��g��fd�}tj��}|�d��|�tj��||_|�d��|��dg��g�dd�<tj��}|���|�tj��||_|�d��|��dg��dS)z�
        If UseForeignDTD is passed True and a document without an external
        entity reference is parsed, ExternalEntityRefHandler is first called
        with None for the public and system ids.
        c�6����||f��dSr�r��rzrl�	system_id�	public_id�handler_call_argss    �r�resolve_entityz<ForeignDTDTests.test_use_foreign_dtd.<locals>.resolve_entity��!����$�$�i��%;�<�<�<��1rTs<?xml version='1.0'?><element/>)NNN�rr�
UseForeignDTD�SetParamEntityParsing�XML_PARAM_ENTITY_PARSING_ALWAYSr}r�r��rr�rr�s   @r�test_use_foreign_dtdz$ForeignDTDTests.test_use_foreign_dtd�s�����	�	�	�	�	��#�%�%�����T�"�"�"��$�$�U�%J�K�K�K�*8��'����7�8�8�8����*�\�N�;�;�;� "��!�!�!���#�%�%���������$�$�U�%J�K�K�K�*8��'����7�8�8�8����*�\�N�;�;�;�;�;rc�
��g��fd�}tj��}|�d��|�tj��||_|�d��|��dg��dS)z�
        If UseForeignDTD is passed True and a document with an external
        entity reference is parsed, ExternalEntityRefHandler is called with
        the public and system ids from the document.
        c�6����||f��dSr�r�r�s    �rr�zCForeignDTDTests.test_ignore_use_foreign_dtd.<locals>.resolve_entity�r�rTs@<?xml version='1.0'?><!DOCTYPE foo PUBLIC 'bar' 'baz'><element/>)�bar�bazNr�r�s   @r�test_ignore_use_foreign_dtdz+ForeignDTDTests.test_ignore_use_foreign_dtd�s������	�	�	�	�	��#�%�%�����T�"�"�"��$�$�U�%J�K�K�K�*8��'����O�	Q�	Q�	Q����*�^�,<�=�=�=�=�=rN)r9r:r;r�r�r�r<rrr�r��s<��������<�<�<�8>�>�>�>�>rr�c�$�eZdZdZd�Zd�Zd�ZdS)�ParentParserLifetimeTestz�
    Subparsers make use of their parent XML_Parser inside of Expat.
    As a result, parent parsers need to outlive subparsers.

    See https://github.com/python/cpython/issues/139400.
    c�X�tj��}|�d��}~dSrB�rrr�)rr�	subparsers   r�2test_parent_parser_outlives_its_subparsers__singlezKParentParserLifetimeTest.test_parent_parser_outlives_its_subparsers__singles,���#�%�%���5�5�d�;�;�	�
�F�Frc��tj��}|�d��}|�d��}~dSrBr�)rr�
subparser_one�
subparser_twos    r�4test_parent_parser_outlives_its_subparsers__multiplezMParentParserLifetimeTest.test_parent_parser_outlives_its_subparsers__multiple
s?���#�%�%���9�9�$�?�?�
��9�9�$�?�?�
�
�F�Frc��tj��}|�d��}|�d��}~~dSrBr�)rrr��subsubparsers    r�1test_parent_parser_outlives_its_subparsers__chainzJParentParserLifetimeTest.test_parent_parser_outlives_its_subparsers__chainsB���#�%�%���5�5�d�;�;�	� �;�;�D�A�A��
��I�IrN)r9r:r;r�r�r�r�r<rrr�r��sK������������������rr�c� �eZdZd�Zd�Zd�ZdS)�ReparseDeferralTestc��tj��}tjdk}|�|���|��|�d��|�|���d��|�d��|�|���|��dS)N�rr�rFT)rr�version_infor�GetReparseDeferralEnabled�SetReparseDeferralEnabled)rr�enableds   r�test_getter_setter_round_tripz1ReparseDeferralTest.test_getter_setter_round_trip"s����#�%�%���%��2���
�
�f�6�6�8�8�'�B�B�B��(�(��/�/�/��
�
�f�6�6�8�8�%�@�@�@��(�(��.�.�.��
�
�f�6�6�8�8�'�B�B�B�B�Brc���tjdkr#|�dtj�d���g��fd�}tj��}||_|�|�����dD]}|�|d���|��g��|�dd��|��d	g��dS)
Nr�zExpat z" does not support reparse deferralc�2����|��dSrBr��rJ�_�starteds  �r�
start_elementzHReparseDeferralTest.test_reparse_deferral_enabled.<locals>.start_element3�����N�N�4� � � � � r�s<docs/>FrT�doc)	rr��skipTestrrLr�r�r�r��rr�r�chunkr�s    @r�test_reparse_deferral_enabledz1ReparseDeferralTest.test_reparse_deferral_enabled,s�����	�)�)��M�M�5�5�#5�5�5�5�
6�
6�
6���	!�	!�	!�	!�	!��#�%�%��%2��"�����8�8�:�:�;�;�;�%�	'�	'�E��L�L���&�&�&�&�	
����"�%�%�%����S�$��������5�'�*�*�*�*�*rc�F��g��fd�}tj��}||_tjdkr|�d��|�|�����dD]}|�|d���|��dg��dS)Nc�2����|��dSrBr�r�s  �rr�zIReparseDeferralTest.test_reparse_deferral_disabled.<locals>.start_elementGr�rr�Fr�r�)	rrrLr�r�rr�r�r�r�s    @r�test_reparse_deferral_disabledz2ReparseDeferralTest.test_reparse_deferral_disabledDs������	!�	!�	!�	!�	!��#�%�%��%2��"����*�*��,�,�U�3�3�3�����9�9�;�;�<�<�<�%�	'�	'�E��L�L���&�&�&�&�	
����5�'�*�*�*�*�*rN)r9r:r;r�r�r�r<rrr�r�!sD������C�C�C�+�+�+�0+�+�+�+�+rr�c�D�eZdZdZedd�d���Zd�Zd�Zej	d���Z
ej	d���Zej	d	���Zej	d
���Z
ej	d���Zd�Zd
�Zd�Zej	d���Zej	d���Zd�Zd�Zd�Zd�ZdS)�AttackProtectionTestBasez�
    Base class for testing protections against XML payloads with
    disproportionate amplification.

    The protections being tested should detect and prevent attacks
    that leverage disproportionate amplification from small inputs.
    �.)rhc���tjd|�d|�d������}d��fd�t	|��D����}tj|d��}|�|���S)z�Create a billion laughs attack payload.

        Be careful: the number of total items is pow(n, k), thereby
        requiring at least pow(ncols, nrows) * sizeof(text) memory!
        z]            <?xml version="1.0"?>
            <!DOCTYPE doc [
                <!ENTITY row0 "zc">
                <!ELEMENT doc (#PCDATA)>
            {body}
            ]>
            <doc>&rowz;</doc>
        rc3�>�K�|]}d|dz�dd|�d��z�d�V��dS)z<!ENTITY rowrz "z&row�;z">Nr<)�.0r��ncolss  �r�	<genexpr>zIAttackProtectionTestBase.exponential_expansion_payload.<locals>.<genexpr>qs[�����
�
��
<�1�q�5�;�;�K�1�K�K�K�%�$7�;�;�;�
�
�
�
�
�
rz    )�body)�textwrap�dedent�rstriprCr5�indent�format)�nrowsr�rh�templater�s `   r�exponential_expansion_payloadz6AttackProtectionTestBase.exponential_expansion_payload`s�����?�$�!%�$�$��$�$�$�
�
��V�X�X�	��y�y�
�
�
�
��5�\�\�
�
�
�
�
����t�W�-�-�����D��)�)�)rc��|�dd���}|�|tjd�������dS)NrrA)r�r�a'            <?xml version="1.0"?>
            <!DOCTYPE doc [
                <!ENTITY row0 ".">
                <!ELEMENT doc (#PCDATA)>
                <!ENTITY row1 "&row0;&row0;&row0;">
                <!ENTITY row2 "&row1;&row1;&row1;">
            ]>
            <doc>&row2;</doc>
        )r�r�r�r�r�)r�payloads  r�test_payload_generationz0AttackProtectionTestBase.test_payload_generationxs\���4�4�1�A�4�F�F������(�/�	3�	#
�	#
��V�X�X�		�		�		�		�		rc�D�d}|jtj||g|�Ri|��dS)z=Check that func(*args, **kwargs) is invalid for a sub-parser.zparser must be a root parserN�r�rr��r�funcrk�kwargs�msgs     r�assert_root_parser_failurez3AttackProtectionTestBase.assert_root_parser_failure�s7��,�����u�/��d�L�T�L�L�L�V�L�L�L�L�Lrc��dS)aAssert that func(*args, **kwargs) triggers the attack protection.

        Note: this method must ensure that the attack protection being tested
        is the one that is actually triggered at runtime, e.g., by matching
        the exact error message.
        Nr<)rrrkrs    r�assert_rejectedz(AttackProtectionTestBase.assert_rejected�����rc��dS)z7Set the activation threshold for the tested protection.Nr<�rr�	thresholds   r�set_activation_thresholdz1AttackProtectionTestBase.set_activation_threshold�rrc��dS)z?Set the maximum amplification factor for the tested protection.Nr<�rr�
max_factors   r�set_maximum_amplificationz2AttackProtectionTestBase.set_maximum_amplification�rrc��dS)z/Test when the activation threshold is exceeded.Nr<rs r�0test_set_activation_threshold__threshold_reachedzIAttackProtectionTestBase.test_set_activation_threshold__threshold_reached�rrc��dS)z3Test when the activation threshold is not exceeded.Nr<rs r�4test_set_activation_threshold__threshold_not_reachedzMAttackProtectionTestBase.test_set_activation_threshold__threshold_not_reached�rrc��tj��}tj|j|��}|�t|d��|�t|d��|�t|d��dS)N��?g�����)rr�	functools�partialrr0r3r��rr�setters   r�5test_set_activation_threshold__invalid_threshold_typezNAttackProtectionTestBase.test_set_activation_threshold__invalid_threshold_type�ss���#�%�%���"�4�#@�&�I�I�����)�V�S�1�1�1����)�V�T�2�2�2����*�f�b�1�1�1�1�1rc���tjd��}tj��}t	j|j|��}|�t||j	dz��dS)N�	_testcapir)
r�
import_modulerrrrrr0r}�
ULLONG_MAX)rrrrs    r�6test_set_activation_threshold__invalid_threshold_rangezOAttackProtectionTestBase.test_set_activation_threshold__invalid_threshold_range�s[��!�/��<�<�	��#�%�%���"�4�#@�&�I�I�����-���1E��1I�J�J�J�J�Jrc��tj��}|�d��}tj|j|��}|�|d��dS)Ni90)rrr�rrrr�rrr�rs    r�1test_set_activation_threshold__fail_for_subparserzJAttackProtectionTestBase.test_set_activation_threshold__fail_for_subparser�sT���#�%�%���5�5�d�;�;�	��"�4�#@�)�L�L���'�'���6�6�6�6�6rc��dS)z/Test when the amplification factor is exceeded.Nr<rs r�6test_set_maximum_amplification__amplification_exceededzOAttackProtectionTestBase.test_set_maximum_amplification__amplification_exceeded�rrc��dS)z3Test when the amplification factor is not exceeded.Nr<rs r�:test_set_maximum_amplification__amplification_not_exceededzSAttackProtectionTestBase.test_set_maximum_amplification__amplification_not_exceeded�rrc��td��}tj��}|�|�||����dS)N�inf)�floatrr�assertIsNoner)rr)rs   r�(test_set_maximum_amplification__infinityzAAttackProtectionTestBase.test_set_maximum_amplification__infinity�sE���E�l�l���#�%�%�����$�8�8���E�E�F�F�F�F�Frc���tj��}tj|j|��}|�t|d��|�t|d��dS)N�abc)rrrrrr0r3rs   r�7test_set_maximum_amplification__invalid_max_factor_typezPAttackProtectionTestBase.test_set_maximum_amplification__invalid_max_factor_type�s[���#�%�%���"�4�#A�6�J�J�����)�V�T�2�2�2����)�V�U�3�3�3�3�3rc�*�tj��}tj|j|��}tjd��}|�tj||td����|�tj||d��dS)Nz!'max_factor' must be at least 1.0�nang�G�z��?)
rrrrr�re�escaper�r�r*)rrrrs    r�8test_set_maximum_amplification__invalid_max_factor_rangezQAttackProtectionTestBase.test_set_maximum_amplification__invalid_max_factor_range�s{���#�%�%���"�4�#A�6�J�J���i�;�<�<�����u�/��f�e�E�l�l�K�K�K����u�/��f�d�C�C�C�C�Crc��tj��}|�d��}tj|j|��}|�|d��dS)Ng������^@)rrr�rrrrr"s    r�2test_set_maximum_amplification__fail_for_subparserzKAttackProtectionTestBase.test_set_maximum_amplification__fail_for_subparser�sT���#�%�%���5�5�d�;�;�	��"�4�#A�9�M�M���'�'���7�7�7�7�7rN)r9r:r;r��staticmethodr�r�rr.�abstractmethodrrrrrrr r#r%r'r,r/r4r6r<rrr�r�Ws����������<?�*�*�*�*��\�*�.���M�M�M�
	�������	��F�F���F�	��N�N���N�	��>�>���>�	��B�B���B�2�2�2�K�K�K�7�7�7�	��>�>���>�	��B�B���B�G�G�G�
4�4�4�D�D�D�8�8�8�8�8rr�)r�rzrequires Expat >= 2.7.2c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�MemoryProtectionTestc�D�d}|jtj||g|�Ri|��dS)z;Check that func(*args, **kwargs) hits the allocation limit.z#out of memory: line \d+, column \d+Nr�rs     rrz$MemoryProtectionTest.assert_rejected�s7��4�����u�/��d�L�T�L�L�L�V�L�L�L�L�Lrc�,�|�|��SrB)�"SetAllocTrackerActivationThresholdr	s   rrz-MemoryProtectionTest.set_activation_threshold�s���8�8��C�C�Crc�,�|�|��SrB)�#SetAllocTrackerMaximumAmplificationr
s   rrz.MemoryProtectionTest.set_maximum_amplification�s���9�9�*�E�E�Erc��tj��}|�|d��|�|�|d����|�dd���}|�|j|d��dS)NrArr�rb�r�r�T�rrrr+rr�rr��rrr�s   rrzEMemoryProtectionTest.test_set_activation_threshold__threshold_reached�s����#�%�%���%�%�f�a�0�0�0�	
���$�8�8���E�E�F�F�F��4�4�2�Q�4�G�G�����V�\�7�D�9�9�9�9�9rc�F�tj��}|�|tdd����|�|�|d����|�dd���}|�|�|d����dS)Nr�r_rrbrBT)	rrr�powr+rr��assertIsNotNoner�rDs   rrzIMemoryProtectionTest.test_set_activation_threshold__threshold_not_reached�s����#�%�%���%�%�f�c�"�a�j�j�9�9�9�	
���$�8�8���E�E�F�F�F��4�4�2�Q�4�G�G�����V�\�\�'�4�8�8�9�9�9�9�9rc��tj��}|�|d��|�|�|d����|�dd���}|�|j|d��dS)NrrrrrBTrCrDs   rr%zKMemoryProtectionTest.test_set_maximum_amplification__amplification_exceededs����#�%�%���%�%�f�a�0�0�0����$�8�8���E�E�F�F�F��4�4�1�A�4�F�F�����V�\�7�D�9�9�9�9�9rc�*�tj��}|�|d��|�|�|d����|�dd���}|�|�|d����dS)Nrg��@rrrBT)rrrr+rr�rGr�rDs   rr'zOMemoryProtectionTest.test_set_maximum_amplification__amplification_not_exceededs����#�%�%���%�%�f�a�0�0�0����$�8�8���E�E�F�F�F��4�4�1�A�4�F�F�����V�\�\�'�4�8�8�9�9�9�9�9rN)
r9r:r;rrrrrr%r'r<rrr;r;�s�������M�M�M�
D�D�D�F�F�F�:�:�:�:�:�:�:�:�:�:�:�:�:�:rr;�__main__)/r.rr/�platformr2r~r7r��unittestrD�iorr�r�test.supportrr�xml.parsersr�xml.parsers.expatrr	r
r�TestCaser
rTr>r�r�r�r*rOrfrrr�r�r�r�r��ABCr��skipIfr�r;r9�mainr<rr�<module>rUsP���
�
�
�����	�	�	�	�����	�	�	�	�
�
�
�
�����������������������������1�1�1�1�1�1�1�1�������$�$�$�$�$�$�9�9�9�9�9�9�9�9�9�9�%G�%G�%G�%G�%G�x�(�%G�%G�%G�P��6|;�|;�|;�|;�|;��!�|;�|;�|;�| 3� 3� 3� 3� 3�X�.� 3� 3� 3�F!/�!/�!/�!/�!/�H�%�!/�!/�!/�H\=�\=�\=�\=�\=�X�&�\=�\=�\=�@6+�6+�6+�6+�6+�8�,�6+�6+�6+�t%�%�%�%�%�8�$�%�%�%�>J�J�J�J�J�H�%�J�J�J�&x$�x$�x$�x$�x$��*�x$�x$�x$�t$�$�$�$�$��*�$�$�$�$L�L�L�L�L�x�(�L�L�L�"1>�1>�1>�1>�1>�h�'�1>�1>�1>�h!�!�!�!�!�x�0�!�!�!�H3+�3+�3+�3+�3+�(�+�3+�3+�3+�lB8�B8�B8�B8�B8�s�w�B8�B8�B8�J����#�i�/�1J�K�K�9:�9:�9:�9:�9:�3�X�5F�9:�9:�L�K�9:�x�z����H�M�O�O�O�O�O��r