PK APOCALYPSE V1

APOCALYPSE V1

Current Path : /opt/hc_python/lib/python3.12/site-packages/lxml/__pycache__/
Upload File :
Current File : //opt/hc_python/lib/python3.12/site-packages/lxml/__pycache__/doctestcompare.cpython-312.pyc

�

���gCE���dZddlmZddlZddlZddlZ	ddlmZgd�Zejd�Z
ejd�Zejd�Zej Zd	�Zd
�Zej&dd�
�Zd�Zej,d�Zej,d�ZGd�de�ZGd�de�Zdd�Zdd�ZGd�d�Zd�ZddiZe dk(rddlZejB�yy#e	$r	ddl
mZY��wxYw)a�
lxml-based doctest output comparison.

Note: normally, you should just import the `lxml.usedoctest` and
`lxml.html.usedoctest` modules from within a doctest, instead of this
one::

    >>> import lxml.usedoctest # for XML output

    >>> import lxml.html.usedoctest # for HTML output

To use this module directly, you must call ``lxmldoctest.install()``,
which will cause doctest to use this in all subsequent calls.

This changes the way output is checked and comparisons are made for
XML or HTML-like content.

XML or HTML content is noticed because the example starts with ``<``
(it's HTML if it starts with ``<html``).  You can also use the
``PARSE_HTML`` and ``PARSE_XML`` flags to force parsing.

Some rough wildcard-like things are allowed.  Whitespace is generally
ignored (except in attributes).  In text (attributes and text in the
body) you can use ``...`` as a wildcard.  In an example it also
matches any trailing tags in the element, though it does not match
leading tags.  You may create a tag ``<any>`` or include an ``any``
attribute in the tag.  An ``any`` tag matches any tag, while the
attribute matches any and all attributes.

When a match fails, the reformatted example and gotten text is
displayed (indented), and a rough diff-like output is given.  Anything
marked with ``+`` is in the output but wasn't supposed to be, and
similarly ``-`` means its in the example but wasn't in the output.

You can disable parsing on one line with ``# doctest:+NOPARSE_MARKUP``
�)�etreeN)�escape)�
PARSE_HTML�	PARSE_XML�NOPARSE_MARKUP�LXMLOutputChecker�LHTMLOutputChecker�install�temp_installrrrc�(�|�y|j�S�N)�strip��vs �D/opt/hc_python/lib64/python3.12/site-packages/lxml/doctestcompare.pyrr8s���y���w�w�y��c�.�tjd|�S)N� )�_norm_whitespace_re�subrs r�norm_whitespacer>s���"�"�3��*�*rFT)�recover�remove_blank_textc�6�tj|t�Sr
)r�
fromstring�_html_parser��htmls r�html_fromstringrCs�����D�,�/�/rz^<[^>]+ (at|object) z[ \t\n][ \t\n]+c�~�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zdd
�Zdd�Z
dd�Zd
�Zd�Zd�Zd�Zd�Zdd�Zy)r)
�param�img�area�br�basefont�input�base�meta�link�colc�"�tjSr
)r�XML��selfs r�get_default_parserz$LXMLOutputChecker.get_default_parserPs���y�y�rc�J�t|dd�}|�|j}|}ntj}|j	|||�}|s|||||�S	||�}	||�}|j||�S#t
j$rYywxYw#t
j$rYywxYw)N�_temp_override_selfF)�getattr�_temp_call_super_check_output�
OutputChecker�check_output�
get_parserr�XMLSyntaxError�compare_docs)	r.�want�got�optionflags�alt_self�super_method�parser�want_doc�got_docs	         rr5zLXMLOutputChecker.check_outputSs����4�!6��=�����=�=�L��D�(�5�5�L�����s�K�8�����d�C��.�
.�	��d�|�H�	��S�k�G�� � ��7�3�3��
�#�#�	��	���#�#�	��	�s$�A3�B�3B	�B	�B"�!B"c��d}t|zryt|zrt}|St|zrtj
}|S|j
�j�jd�r'|j
�jd�rt}|S|j|�r!|j|�r|j�}|S)Nz<html)rrrrrr,r�lower�
startswith�_looks_like_markupr/)r.r9r:r;r>s     rr6zLXMLOutputChecker.get_parserhs������K�'����#�$�F��
���
$��Y�Y�F��
�
�j�j�l� � �"�-�-�g�6��)�)�+�(�(��1�$�F��
��%�%�d�+��)�)�#�.��,�,�.�F��
rc�t�|j�}|jd�xrtj|�S)N�<)rrC�_repr_re�search)r.�ss  rrDz$LXMLOutputChecker._looks_like_markupxs2��
�G�G�I�����S�!�+� ����*�*�	,rc� �|j|j|j�sy|j|j|jd�sy|j|j|jd�syd|j
vr�t
|j
j��}t
|j
j��}||k7ry|D]1}|j|j
||j
|d�r�1y|jdk7st|�rmt|�}t|�}|s|rS|r|sy|jd�}|jd�}	|j||	�sy|s|jdk(r	y|r�P|r�Sy)NFT�anyz...r)�tag_compare�tag�text_compare�text�tail�attrib�sorted�keys�len�list�popr8)
r.r9r:�	want_keys�got_keys�key�
want_children�got_children�
want_first�	got_firsts
          rr8zLXMLOutputChecker.compare_docs}sP��������#�'�'�2��� � ����C�H�H�d�;��� � ����C�H�H�d�;������#��t�{�{�/�/�1�2�I��c�j�j�o�o�/�0�H��H�$�� ���(�(����S�)9�3�:�:�c�?�E�R� �!��9�9����T�� ��J�M���9�L��<�$�L� �*�.�.�q�1�
�(�,�,�Q�/�	��(�(��Y�?� �#�
���5�(@��� �<�rc��|xsd}|xsd}|r2t|�j�}t|�j�}dtj|�z}|j	dd�}tj
||�ryy)N�z^%s$z\.\.\.z.*TF)rr�rer�replacerH)r.r9r:rs    rrNzLXMLOutputChecker.text_compare�ss���z�r���i�R���"�4�(�.�.�0�D�!�#�&�,�,�.�C���	�	�$��'���|�|�I�t�,��
�9�9�T�3���rc��|dk(ryt|ttf�rt|ttf�s||k(S|xsd}|xsd}|jd�r)|j	d�d|j	d�dk(S||k(S)NrKTr_z{...}�}���)�
isinstance�str�bytesrC�split)r.r9r:s   rrLzLXMLOutputChecker.tag_compare�s���5�=���4�#�u��.�!�#��U�|�4��3�;���z�r���i�R���?�?�7�#��:�:�c�?�2�&�#�)�)�C�.��*<�<�<��3�;�rc��|j}|j|||�}g}|�	||�}	||�}	|�|r>tj||||�}
|r"|j
|
�dj|�S|
S|tu}d|j|d�d|j	|d�d|j||	|d�g}dj|�S#tj$r.t	j
�d}|j
d|z�Y��wxYw#tj$r/t	j
�d}|j
d|z�Y��wxYw)	N�zIn example: %szIn actual output: %s�
z	Expected:�zGot:zDiff:)
r9r6rr7�sys�exc_info�appendr4�output_difference�joinr�
format_doc�collect_diff)
r.�exampler:r;r9r>�errorsr?�er@�valuer�
diff_partss
             rrpz#LXMLOutputChecker.output_difference�sZ���|�|������s�K�8������
4�!�$�<��
:� ��+���>�V�!�3�3��g�s�K�1�E���
�
�e�$��y�y��(�(�����(��!��o�o�h��a�8���o�o�g�t�Q�7���'�'��'�4��C�E�
��y�y��$�$��/�'�'�
4��L�L�N�1�%���
�
�.��2�3�
4��
�'�'�
:��L�L�N�1�%���
�
�4�q�8�9�
:�s"�C
�D�
>D�
D�>E�Ec�l�|sy|j|jvry|jst|�ryy)NFT)rM�
empty_tagsrOrT)r.�elrs   r�html_empty_tagz LXMLOutputChecker.html_empty_tag�s.����
�6�6����(��
�7�7�c�"�g��rc	��g}t|��s|jd|z�|j|�|j|j|��|j||�s_t	|j
�r*|j|j
|j
��|j|j|��t	|j�r*|j|j
|j��|jd�dj|�S|jd|z�|j|�|j|j|��|j||�s�|jd�t	|j
�rO|jd|z�|j|j
|j
��|jd�|D]'}|j|j|||dz���)|jd|z�|j|j|��|jd�t	|j�rO|jd|z�|j|j
|j��|jd�dj|�S)Nrrkr_rl)rTro�
format_tagr|rrO�format_text�format_end_tagrPrqrr)r.�docr�indent�prefix�partsr{s       rrrzLXMLOutputChecker.format_doc�s�����3�x��L�L��V��$��L�L�� ��L�L�����-�.��&�&�s�D�1�����?��L�L��!1�!1�#�(�(�!;�<����T�0�0��5�6��S�X�X�����T�-�-�c�h�h�7�8��L�L����7�7�5�>�!�
���S��Z� �
���V��
���T�_�_�S�)�*��"�"�3��-��L�L����S�X�X�����S��Z�(����T�-�-�c�h�h�7�8����T�"������T�_�_�R��v�a�x�@�A���L�L��V��$��L�L��,�,�S�1�2��L�L�������?��L�L��V��$��L�L��)�)�#�(�(�3�4��L�L����w�w�u�~�rc�D�|�y|r|j�}t|d�S)Nr_rj)r�html_escape)r.rOrs   rrzLXMLOutputChecker.format_texts%���<����:�:�<�D��4��#�#rc	�F�g}t|tj�ryt|jj��D],\}}|j
|�d|j|d��d���.|sd|jzSd|j�ddj|��d�S)	Nz<!--�="F�"�<%s>rFr�>)
rer�CommentBaserRrQ�itemsrorrMrq)r.r{�attrs�namerws     rr~zLXMLOutputChecker.format_tag	s������b�%�+�+�,��!�"�)�)�/�/�"3�4�K�D�%��L�L�d�D�,<�,<�U�E�,J�K�L�5���B�F�F�?�"���F�F�C�H�H�U�O�4�4rc�V�t|tj�ryd|jzS)Nz-->�</%s>)rerr�rM)r.r{s  rr�z LXMLOutputChecker.format_end_tags$���b�%�+�+�,�������rc	��g}t|�s�t|�s�|jd|z�|j|j||��|j||�sV|j|j	|j
|j
��|j|j
||��|j|j	|j|j��|jd�dj|�S|jd|z�|j|j||��|jd�t|j
�st|j
�rZ|jd|z�|j|j	|j
|j
��|jd�t|�}t|�}|s|r�|s6|j|j|jd�||dzd���<|s6|j|j|jd�||dzd���t|j|j|jd�|jd�||dz��|r��|r��|jd|z�|j|j
||��|jd�t|j�st|j�rZ|jd|z�|j|j	|j|j��|jd�dj|�S)Nrrkr_rrl�+�-)rTro�collect_diff_tagr|�collect_diff_textrO�collect_diff_end_tagrPrqrrUrrrVrs)r.r9r:rr�r�rZr[s        rrszLXMLOutputChecker.collect_diffs������4�y��S���L�L��V��$��L�L��.�.�t�S�9�:��&�&�s�D�1����T�3�3�D�I�I�s�x�x�H�I����T�6�6�t�S�A�B��L�L��/�/��	�	�3�8�8�D�E��L�L����7�7�5�>�!�
���S��Z� �
���T�*�*�4��5�6�
���T�������u�S�X�X���L�L��V��$��L�L��/�/��	�	�3�8�8�D�E��L�L����T�
�
��C�y���|� ����T�_�_�\�-=�-=�a�-@�$��q��RU�V�W������T�_�_�]�->�->�q�-A�4��PQ��SV�W�X���L�L��*�*��!�!�!�$�l�&6�&6�q�&9�4����K�
L��|�	���S��Z� �
���T�.�.�t�S�9�:�
���T�������u�S�X�X���L�L��V��$��L�L��/�/��	�	�3�8�8�D�E��L�L����w�w�u�~�rc
�h�|j|j|j�s|j�d|j�d�}n|j}g}|jdk(xsd|jv}t|jj	��D]�\}}||jvr+|s)|jd|�d|j
|d��d���?||jvr!|j|j||d�}n|j
|d�}|j|�d|�d����|sbt|jj	��D]<\}}||jvr�|jd|�d|j
|d��d���>|rd	|�d
d
j|��d�}|Sd|z}|S)
N� (got: �)rKr�r�Fr�r�rFrr�r�)	rLrMrQrRr�rorr�rq)	r.r9r:rMr�rKr�rwrOs	         rr�z"LXMLOutputChecker.collect_diff_tag@sn��������#�'�'�2�$(�H�H�c�g�g�6�C��'�'�C����h�h�%��7�5�D�K�K�#7��!�#�*�*�"2�"2�"4�5�K�D�%��4�;�;�&�s����4��1A�1A�%��1O�P�Q��4�;�;�&��1�1�$�+�+�d�2C�U�E�R�D��+�+�E�5�9�D����$��5�6�6��%�d�k�k�&7�&7�&9�:���e��3�:�:�%�����4��1A�1A�%��1O�P�Q� ;��"�C�H�H�U�O�4�C��
��3�,�C��
rc��|j|jk7r!|j�d|j�d�}d|zS|j}d|zS)Nr�r�r�)rM)r.r9r:rMs    rr�z&LXMLOutputChecker.collect_diff_end_tag[sE���8�8�s�w�w��$(�H�H�c�g�g�6�C���}���'�'�C���}�rc��|j|||�r|sy|j||�S|�d|�d�}|j||�S)Nr_r�r�)rNr)r.r9r:rrOs     rr�z#LXMLOutputChecker.collect_diff_textbsJ�����T�3��.����#�#�C��/�/�!%�s�+������e�,�,rN)T)r_)�__name__�
__module__�__qualname__rzr/r5r6rDr8rNrLrpr|rrrr~r�rsr�r�r��rrrrJsa��'�J��4�*� ,�
�:��%�@�!�F$�	5� �$�L�6�-rrc��eZdZd�Zy)r	c��tSr
)rr-s rr/z%LHTMLOutputChecker.get_default_parserks���rN)r�r�r�r/r�rrr	r	js��rr	c�F�|rtt_ytt_y)z�
    Install doctestcompare for all future doctests.

    If html is true, then by default the HTML parser will be used;
    otherwise the XML parser is used.
    N)r	�doctestr4rrs rr
r
ns��� 2��� 1��rc�$�|rt}nt}t�}|jd}|�}|j}||_|jdj
}|jj
}tt_t||||||�y)z�
    Use this *inside* a doctest to enable this checker for this
    doctest only.

    If html is true, then by default the HTML parser will be used;
    otherwise the XML parser is used.
    r.�checkN)
r	r�_find_doctest_frame�f_locals�_checker�__func__r5rr��_RestoreChecker)	r�
del_module�Checker�frame�dt_self�checker�old_checker�
check_func�checker_check_funcs	         rrrzs����$��#���!�E��n�n�V�$�G��i�G��"�"�K��G������(�1�1�J� �-�-�6�6���G�M��G�[�'�� 2�� rc�<�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
r�c���||_||_|j|j_||j_||_||_||_|j�|j�yr
)
r�r��
call_superr3r1r��
clone_funcr��
install_clone�install_dt_self)r.r�r��new_checkerr�r�r�s       r�__init__z_RestoreChecker.__init__�sY�����"���59�_�_����2�+6����(�$���$���$����������rc��|jj|_|jj|_|j
j|j_yr
)r��__code__�	func_code�__globals__�func_globalsr�r-s rr�z_RestoreChecker.install_clone�s;�����1�1��� �O�O�7�7���#'�?�?�#;�#;���� rc�:�|j|j_yr
)r�r�r�r-s r�uninstall_clonez_RestoreChecker.uninstall_clone�s��#'�>�>���� rc�\�|jj|_||j_yr
)r��_DocTestRunner__record_outcome�	prev_funcr-s rr�z_RestoreChecker.install_dt_self�s�����D�D���6:����3rc�:�|j|j_yr
)r�r�r�r-s r�uninstall_dt_selfz!_RestoreChecker.uninstall_dt_self�s��6:�n�n����3rc���|jreddl}|j|j=d|jvr;|jjdd�\}}|j|}t	||�yyy)Nr�.rj)r�rm�modules�rsplit�delattr)r.rm�package�module�package_mods     r�uninstall_modulez _RestoreChecker.uninstall_module�sd���?�?�����D�O�O�,��d�o�o�%�"&�/�/�"8�"8��a�"@����!�k�k�'�2����V�,�&�rc��|j�|j�|j`|j`|j
|i|��}|j
�|Sr
)r�r�r�r1r3r�r�)r.�args�kw�results    r�__call__z_RestoreChecker.__call__�sT��������� ��L�L�,��L�L�6������,��,�������
rc��|j�	|j|i|��|j�S#|j�wxYwr
)r�r�r�)r.r�r�s   rr�z_RestoreChecker.call_super�s?������	!�"�4�?�?�D�/�B�/���� ��D��� �s	�4�AN)r�r�r�r�r�r�r�r�r�r�r�r�rrr�r��s+��
�<�2�;�E�-��!rr�c��ddl}|jd�}|r!|j}d|vr|S|j}|r�!t	d��)Nrrj�BOOMzBCould not find doctest (only use this function *inside* a doctest))rm�	_getframer��f_back�LookupError)rmr��ls   rr�r��sO����C�M�M�!��E�
��N�N���Q�;��L�������L�N�Nr�basicai
    >>> temp_install()
    >>> print """<xml a="1" b="2">stuff</xml>"""
    <xml b="2" a="1">...</xml>
    >>> print """<xml xmlns="http://example.com"><tag   attr="bar"   /></xml>"""
    <xml xmlns="...">
      <tag attr="..." />
    </xml>
    >>> print """<xml>blahblahblah<foo /></xml>""" # doctest: +NOPARSE_MARKUP, +ELLIPSIS
    <xml>...foo /></xml>
    �__main__)F)FN)"�__doc__�lxmlrrmr`r�rrr��ImportError�cgi�__all__�register_optionflagrrrr4rr�
HTMLParserrr�compilerGrrr	r
rr�r��__test__r��testmodr�rr�<module>r�s2��#�J�
�	��*�*�<��)�W�
(�
(��
6�
�'�G�'�'��4�	�,��,�,�-=�>���%�%�
��+� �u�����F��0��2�:�:�-�.�� �b�j�j�!3�4��^-�
�^-�@	�*��
2�! �F,!�,!�\
N��
�	���z����G�O�O����q
�*�)�*�s�C.�.C<�;C<

if you don't want to be vaporized in a nuclear explosion, i simply have to become nuclear myself… i am atomic