HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-310.pyc
o

@%Ne��@sjddlmZmZmZddlmZddlZddlmZddl	m
Z
ddlmZe�
d	�Zd
d�Zee�ZdS)�)�absolute_import�division�unicode_literals)�OrderedDictN)�string_types�)�base�)�moduleFactoryFactoryz
{([^}]*)}(.*)cs,|}|�d�j�G�fdd�dtj�}t�S)N�asdcs4eZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
S)z#getETreeBuilder.<locals>.TreeWalkera�Given the particular ElementTree representation, this implementation,
        to avoid using recursion, returns "nodes" as tuples with the following
        content:

        1. The current element

        2. The index of the element relative to its parent

        3. A stack of ancestor elements

        4. A flag "text", "tail" or None to indicate if the current node is a
           text node; either the text or tail of the current element (1)
        cs@t|t�r|\}}}}|dvrtjt||�fS|}t|d�s"|��}|jdvr+tjfS|jdkr>tj	|j
|�d�|�d�fS|j�krItj|j
fSt|jt
�sVJt|j���t�|j�}|re|��\}}nd}|j}t�}t|j���D]\}	}
t�|	�}|r�|
||�d�|�d�f<qt|
|d|	f<qttj|||t|�p�|j
fS)	N��text�tail�tag)�
DOCUMENT_ROOT�DOCUMENT_FRAGMENTz
<!DOCTYPE>�publicId�systemIdrr	)�
isinstance�tupler�TEXT�getattr�hasattr�getrootr�DOCUMENT�DOCTYPEr
�get�COMMENTr�type�
tag_regexp�match�groupsr�list�attrib�items�group�ELEMENT�len)�self�node�elt�_�flagr �	namespacer�attrs�name�value��ElementTreeCommentType��H/usr/lib/python3/dist-packages/pip/_vendor/html5lib/treewalkers/etree.py�getNodeDetails s<



�

�z2getETreeBuilder.<locals>.TreeWalker.getNodeDetailscSspt|t�r|\}}}}n
|dgdf\}}}}|dvrdS|jr%|||dfSt|�r6|�|�|dd|dfSdS)Nrr
r)rrr
r'�append�r(r)�element�key�parentsr,r3r3r4�
getFirstChildHs

z1getETreeBuilder.<locals>.TreeWalker.getFirstChildcSs�t|t�r|\}}}}ndS|dkr%t|�r#|�|�|dd|dfSdS|jr2|dkr2|||dfS|t|d�dkrJ|d|d|d|dfSdS)Nr
rr���r)rrr'r6rr7r3r3r4�getNextSiblingYs

z2getETreeBuilder.<locals>.TreeWalker.getNextSiblingcSs|t|t�r|\}}}}ndS|dkr|s|S|||dfS|��}|s$|St|d��|�dks1J�|t|d��|�|dfS)Nr
r<r)rr�popr"�count�index)r(r)r8r9r:r,�parentr3r3r4�
getParentNodems
z1getETreeBuilder.<locals>.TreeWalker.getParentNodeN)�__name__�
__module__�__qualname__�__doc__r5r;r=rBr3r1r3r4�
TreeWalkers
(rG)�Commentrr�NonRecursiveTreeWalker�locals)�ElementTreeImplementation�ElementTreerGr3r1r4�getETreeBuildersnrM)�
__future__rrr�collectionsr�re�pip._vendor.sixr�r�_utilsr
�compilerrM�getETreeModuler3r3r3r4�<module>s
u