File: //lib64/python3.9/site-packages/lxml/__pycache__/doctestcompare.cpython-39.pyc
a
    ��a�G  �                   @   sb  d Z ddlmZ ddlZddlZddlZzddlmZ W n e	yV   ddl
mZ Y n0 g d�ZzeZ
W n ey�   eefZ
Y n0 ejd dkZe�d�Ze�d�Ze�d	�ZejZd
d� Zdd
� Zejddd�Zdd� Ze�d�Ze�d�ZG dd� de�Z G dd� de �Z!d$dd�Z"d%dd�Z#G dd� de$�Z%dd � Z&d!d"iZ'e(d#k�r^ddlZe�)�  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                 C   s   | d u rd S | � � S d S �N)�strip��v� r   �9/usr/lib64/python3.9/site-packages/lxml/doctestcompare.pyr
   ?   s    r
   c                 C   s   t �d| �S )N� )�_norm_whitespace_re�subr   r   r   r   �norm_whitespaceE   s    r   FT)ZrecoverZremove_blank_textc                 C   s   t �| t�S r   )r   Z
fromstring�_html_parser��htmlr   r   r   �html_fromstringJ   s    r   z^<[^>]+ (at|object) z[ \t\n][ \t\n]+c                   @   s�   e Zd ZdZdd� Zdd� Zdd� Zdd	� Zd
d� Zdd
� Z	dd� Z
dd� Zd'dd�Zd(dd�Z
d)dd�Zdd� Zdd� Zdd� Zd d!� Zd"d#� Zd*d$d%�Zd&S )+r   )
ZparamZimgZarea�brZbasefont�input�base�meta�link�colc                 C   s   t jS r   )r   �XML��selfr   r   r   �get_default_parserW   s    z$LXMLOutputChecker.get_default_parserc           	      C   s�   t | dd �}|d ur | j}|} ntj}| �|||�}|sF|| |||�S z||�}W n tjyh   Y dS 0 z||�}W n tjy�   Y dS 0 | �||�S )N�_temp_override_selfF)�getattr�_temp_call_super_check_output�
OutputChecker�check_output�
get_parserr   �XMLSyntaxError�compare_docs)	r"