File: //usr/local/lib/python3.9/site-packages/future/backports/__pycache__/_markupbase.cpython-39.pyc
a
q�dgW? � @ sX d Z ddlZe�d�jZe�d�jZe�d�Ze�d�Ze�d�Z[G dd � d e �Z
dS )
a Shared support for scanning document type declarations in HTML and XHTML.
Backported for python-future from Python 3.3. Reason: ParserBase is an
old-style class in the Python 2.7 source of markupbase.py, which I suspect
might be the cause of sporadic unit-test failures on travis-ci.org with
test_htmlparser.py. The test failures look like this:
======================================================================
ERROR: test_attr_entity_replacement (future.tests.test_htmlparser.AttributesStrictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/travis/build/edschofield/python-future/future/tests/test_htmlparser.py", line 661, in test_attr_entity_replacement
[("starttag", "a", [("b", "&><"'")])])
File "/home/travis/build/edschofield/python-future/future/tests/test_htmlparser.py", line 93, in _run_check
collector = self.get_collector()
File "/home/travis/build/edschofield/python-future/future/tests/test_htmlparser.py", line 617, in get_collector
return EventCollector(strict=True)
File "/home/travis/build/edschofield/python-future/future/tests/test_htmlparser.py", line 27, in __init__
html.parser.HTMLParser.__init__(self, *args, **kw)
File "/home/travis/build/edschofield/python-future/future/backports/html/parser.py", line 135, in __init__
self.reset()
File "/home/travis/build/edschofield/python-future/future/backports/html/parser.py", line 143, in reset
_markupbase.ParserBase.reset(self)
TypeError: unbound method reset() must be called with ParserBase instance as first argument (got EventCollector instance instead)
This module is used as a foundation for the html.parser module. It has no
documented public API and should not be used directly.
� Nz[a-zA-Z][-_.a-zA-Z0-9]*\s*z(\'[^\']*\'|"[^"]*")\s*z--\s*>z ]\s*]\s*>z]\s*>c @ s� e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� ZdZ d
d� Z
d#dd�Zd$dd�Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zd d!� Zd"S )%�
ParserBaseziParser base class which provides some common support methods used
by the SGML/HTML and XHTML parsers.c C s | j tu rtd��d S )Nz)_markupbase.ParserBase must be subclassed)� __class__r �RuntimeError��self� r �F/usr/local/lib/python3.9/site-packages/future/backports/_markupbase.py�__init__6 s
�zParserBase.__init__c C s t d��d S )Nz.subclasses of ParserBase must override error())�NotImplementedError)r �messager r r �error; s �zParserBase.errorc C s d| _ d| _d S )N� r ��lineno�offsetr r r r �reset? s zParserBase.resetc C s | j | jfS )z&Return current line number and offset.r r r r r �getposC s zParserBase.getposc C sb ||kr|S | j }|�d||�}|rN| j| | _|�d||�}||d | _n| j| | | _|S )N�
r
)�rawdata�countr �rindexr )r �i�jr �nlines�posr r r � updateposK s zParserBase.updatepos� c
C s� | j }|d }|||� dks&J d��|||d � dkrB|d S |||d � dv rZdS t|�}|||d � dkr�| �|�S || d kr�| �|�S | �||�\}}|d
k r�|S |dkr�d| _||k �r�|| }|dk�r||d |� }|dk�r| �|� n
| �|� |d S |d
v �r<t||�}|�s2dS |� � }n�|dv �rX| �||�\} }n||| jv �rn|d }nf|d k�r�|dk�r�| �
|d |�}n,|tg d��v �r�| �d| � n
| �d� n| �d|| � |d
k r�|S q�dS )N� �<!z$unexpected call to parse_declarationr
�>)�-r ���z--�[r �doctyper z"'�4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)�attlist�linktype�link�elementz&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration)
r �len�
parse_comment�parse_marked_section�
_scan_name�_decl_otherchars�handle_decl�unknown_decl�_declstringlit_match�end�_parse_doctype_subset�setr )
r r r r �n�decltype�c�data�m�namer r r �parse_declaration[ s\
�zParserBase.parse_declarationr
c C s� | j }|||d � dks"J d��| �|d |�\}}|dk rB|S |tg d��v rdt�||d �}n<|tg d��v r�t�||d �}n| �d||d |� � |s�dS |r�|�d�}| �||d |� � |� d�S ) N� z<![z)unexpected call to parse_marked_section()r )�temp�cdata�ignore�include�rcdata)�if�else�endifz+unknown status keyword %r in marked sectionr! )
r r, r3 �_markedsectionclose�search�_msmarkedsectioncloser �startr/ r1 )r r �reportr �sectNamer �matchr r r r+ � s
zParserBase.parse_marked_sectionc C sj | j }|||d � dkr$| �d� t�||d �}|s<dS |r`|�d�}| �||d |� � |�d�S )N� �<!--z"unexpected call to parse_comment()r! r )r r �
_commentcloserE rG �handle_commentr1 )r r rH r rJ r r r r r* � s
zParserBase.parse_commentc
C s2 | j }t|�}|}||k �r.|| }|dk�r8|||d � }|dkrJdS |dkrp| �||d � | �d| � |d |kr�dS |d |kr�dS |||d � dkr�| j|d d
�}|d k r|S q| �|d |�\}}|dkr�dS |tg d��v�r| �||d � | �d| � t| d
| �} | ||�}|d k �r,|S q|dk�r�|d |k�rTdS | �|d |�\}}|d k �rv|S || dk�r,|d }q|dk�r�|d }||k �r�|| �� �r�|d }�q�||k �r�|| dk�r�|S | �||� | �d� ndS q|�� �r|d }q| �||� | �d| � qdS )N�<r r! r r
z*unexpected char in internal subset (in %r)rK rL r )rH )r% r( �entity�notationz)unknown declaration %r in internal subset�_parse_doctype_�%�;�]r z%unexpected char after internal subsetz%unexpected char %r in internal subset) r r) r r r* r, r3 �getattr�isspace)
r r �declstartposr r4 r r6 �sr9 �methr r r r2 � sp
�
z ParserBase._parse_doctype_subsetc C sF | � ||�\}}|dkrdS | j}d||d � v rB|�d|�d S dS )Nr! r r
)r, r �find)r r rX r9 r r r r r �_parse_doctype_element s z!ParserBase._parse_doctype_elementc C s� | j }| �||�\}}|||d � }|dkr2dS |dkrB|d S | �||�\}}|dk r^|S |||d � }|dkrzdS |dkr�d||d � v r�|�d|�d }ndS |||d � �� r�|d }q�||d � s�dS n| �||�\}}|||d � }|�sdS |dv �rDt||�}|�r&|�� }ndS |||d � }|�sDdS |d k�r�||d � d k�rddS | �|d |�\}}|dk �r�|S |||d � }|�s�dS |dkrB|d S qBd S )
Nr
r r! r r �(�)�'"�#)r r, r[ rW r0 r1 )r r rX r r9 r r6 r8 r r r �_parse_doctype_attlist sX
z!ParserBase._parse_doctype_attlistc C s� | � ||�\}}|dk r|S | j}|||d � }|s:dS |dkrJ|d S |dv rnt||�}|sddS |�� }q"| � ||�\}}|dk r"|S q"d S )Nr r
r! r r_ )r, r r0 r1 )r r rX r9 r r r6 r8 r r r �_parse_doctype_notationX s"