Hacked By AnonymousFox
�
�܋f�G � �< � d Z ddlmZ ddlZddlZddlZ ddlmZ n# e $ r ddl
mZ Y nw xY wg d�Z eZ
n# e$ r eefZ
Y nw xY wej d dk Z ej d� � Z ej d� � Z ej d � � Zej Zd
� Zd� Z ej dd
�� � Zd� Z ej d� � Z ej d� � Z G d� de� � Z G d� de � � Z!dd�Z"dd�Z# G d� de$� � Z%d� Z&ddiZ'e(dk rddlZ ej) � � dS dS ) 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_install� r r r c �2 � | �d S | � � � S �N)�strip��vs �f/builddir/build/BUILD/cloudlinux-venv-1.0.6/venv/lib64/python3.11/site-packages/lxml/doctestcompare.pyr r ? s � ��y��t��w�w�y�y�� c �8 � t � d| � � S )N� )�_norm_whitespace_re�subr s r �norm_whitespacer E s � ��"�"�3��*�*�*r FT)�recover�remove_blank_textc �6 � t j | t � � S r )r �
fromstring�_html_parser��htmls r �html_fromstringr J s � ���D�,�/�/�/r z^<[^>]+ (at|object) z[ \t\n][ \t\n]+c � � e Zd ZdZd� Zd� Zd� Zd� Zd� Zd� Z d� Z
d � Zdd�Zdd
�Z
dd�Zd� Zd� Zd� Zd� Zd� Zdd�ZdS )r )
�param�img�area�br�basefont�input�base�meta�link�colc � � t j S r )r �XML��selfs r �get_default_parserz$LXMLOutputChecker.get_default_parserW s
� ��y�r c �Z � t | dd � � }|�
| j }|} nt j }| � |||� � }|s || |||� � S ||� � }n# t
j $ r Y dS w xY w ||� � }n# t
j $ r Y dS w xY w| � ||� � S )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 r r6 zLXMLOutputChecker.check_outputZ s� � ��4�!6��=�=�����=�L��D�D�(�5�L�����s�K�8�8��� .��<��d�C��.� .�
.� ��v�d�|�|�H�H���#� � � ��5�5� ���� ��f�S�k�k�G�G���#� � � ��5�5� ����� � ��7�3�3�3s$ �A �A1�0A1�5B �B�Bc � � d }t |z rd S t |z rt }n�t |z r
t j }n�|� � � � � � � d� � r/|� � � � d� � rt }n>| � |� � r)| � |� � r| �
� � }|S )Nz<html)r r r r r r- r �lower�
startswith�_looks_like_markupr0 )r/ r: r; r<