Server : Apache System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64 User : dh_edsupp ( 6597262) PHP Version : 8.2.26 Disable Function : NONE Directory : /lib/python3/dist-packages/future/backports/__pycache__/ |
Upload File : |
o ,�]W? � @ 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 r td��d S )Nz)_markupbase.ParserBase must be subclassed)� __class__r �RuntimeError��self� r �>/usr/lib/python3/dist-packages/future/backports/_markupbase.py�__init__6 s ��zParserBase.__init__c C s t d��)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 sd ||kr|S | j }|�d||�}|r(| j| | _|�d||�}||d | _|S | j| | | _|S )N� r )�rawdata�countr �rindexr )r �i�jr �nlines�posr r r � updateposK s �zParserBase.updatepos� c C s� | j }|d }|||� dksJ d��|||d � dkr!|d S |||d � dv r-dS t|�}|||d � dkr@| �|�S || d krK| �|�S | �||�\}}|d k rY|S |dkr`d| _||k r�|| }|dkr�||d |� }|dkr�| �|� |d S | �|� |d S |d v r�t||�}|s�dS |� � }nG|dv r�| �||�\} }n:|| jv r�|d }n0|d kr�|dkr�| � |d |�}n|tg d��v r�| �d| � n| �d� n | �d|| � |d k r�|S ||k sddS )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 � dksJ d��| �|d |�\}}|dk r!|S |tg d��v r2t�||d �}n|tg d��v rCt�||d �}n | �d||d |� � |sTdS |rf|�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 �}|sdS |r0|�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 s. | j }t|�}|}||k �r|| }|dkr�|||d � }|dkr$dS |dkr7| �||d � | �d| � |d |kr?dS |d |krGdS |||d � dkr_| j|d d �}|d k r^|S q | �|d |�\}}|dkrodS |tg d��vr�| �||d � | �d| � t| d | �} | ||�}|d k r�|S nx|dkr�|d |kr�dS | �|d |�\}}|d k r�|S || dkr�|d }nQ|dkr�|d }||k r�|| �� r�|d }||k r�|| �� s�||k r�|| dkr�|S | �||� | �d� ndS |�� �r|d }n | �||� | �d| � ||k sdS )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 � sx � ��� �<z ParserBase._parse_doctype_subsetc C sF | � ||�\}}|dkrdS | j}d||d � v r!|�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 � }|dkrdS |dkr!|d S | �||�\}}|dk r0|S |||d � }|dkr>dS |dkrvd||d � v rS|�d|�d }ndS |||d � �� rm|d }|||d � �� s_||d � sudS n| �||�\}}|||d � }|s�dS |dv r�t||�}|r�|�� }ndS |||d � }|s�dS |d kr�||d � d kr�dS | �|d |�\}}|dk r�|S |||d � }|s�dS |dkr�|d S q") 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 s` �� �z!ParserBase._parse_doctype_attlistc C s� | � ||�\}}|dk r|S | j} |||d � }|sdS |dkr&|d S |dv r8t||�}|s3dS |�� }n| � ||�\}}|dk rF|S q)Nr r r! r r_ )r, r r0 r1 )r r rX r9 r r r6 r8 r r r �_parse_doctype_notationX s&