<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
Pf                 @   s   d dl mZmZmZ d dlmZ d dlmZ ddlm	Z	 ddl
mZ ddl
mZ d	d
 ZG dd deZG dd deZG dd deZG dd deZG dd dejZdS )    )absolute_importdivisionunicode_literals)	text_type)etree   )
tag_regexp   )base)	_ihatexmlc             C   s*   | d krd S t | tr| S | jddS d S )Nasciistrict)
isinstancer   decode)s r    /usr/lib/python3.6/etree_lxml.py
ensure_str   s
    
r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Rootc             C   s   || _ g | _y:|jjrD| jjt| t|jjt|jjt|jj	 W n t
k
rZ   Y nX y|j }W n t
k
r   |}Y nX x|j d k	r|j }qW x |d k	r| jj| |j }qW d | _d | _d S )N)ZelementtreechildrenZdocinfoZinternalDTDappendDoctyper   Z	root_name	public_idZ
system_urlAttributeErrorZgetrootZgetpreviousgetnexttexttail)selfZetnoder   r   r   __init__   s*    




zRoot.__init__c             C   s
   | j | S )N)r   )r   keyr   r   r   __getitem__1   s    zRoot.__getitem__c             C   s   d S )Nr   )r   r   r   r   r   4   s    zRoot.getnextc             C   s   dS )Nr	   r   )r   r   r   r   __len__7   s    zRoot.__len__N)__name__
__module____qualname__r   r!   r   r"   r   r   r   r   r      s   r   c               @   s   e Zd Zdd Zdd ZdS )r   c             C   s(   || _ || _|| _|| _d | _d | _d S )N)	root_nodenamer   	system_idr   r   )r   r&   r'   r   r(   r   r   r   r   <   s    zDoctype.__init__c             C   s   | j jd S )Nr	   )r&   r   )r   r   r   r   r   E   s    zDoctype.getnextN)r#   r$   r%   r   r   r   r   r   r   r   ;   s   	r   c               @   s   e Zd Zdd Zdd ZdS )FragmentRootc                s$    fdd|D  _ d   _ _d S )Nc                s   g | ]}t  |qS r   )FragmentWrapper).0Zchild)r   r   r   
<listcomp>K   s    z)FragmentRoot.__init__.<locals>.<listcomp>)r   r   r   )r   r   r   )r   r   r   J   s    zFragmentRoot.__init__c             C   s   d S )Nr   )r   r   r   r   r   N   s    zFragmentRoot.getnextN)r#   r$   r%   r   r   r   r   r   r   r)   I   s   r)   c               @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )r*   c             C   sT   || _ || _t| jdr(t| jj| _nd | _t| jdrJt| jj| _nd | _d S )Nr   r   )r&   objhasattrr   r   r   )r   Zfragment_rootr-   r   r   r   r   S   s    zFragmentWrapper.__init__c             C   s   t | j|S )N)getattrr-   )r   r'   r   r   r   __getattr___   s    zFragmentWrapper.__getattr__c             C   s6   | j j}|j| }|t|d k r.||d  S d S d S )Nr	   )r&   r   indexlen)r   Zsiblingsidxr   r   r   r   b   s
    
zFragmentWrapper.getnextc             C   s
   | j | S )N)r-   )r   r    r   r   r   r!   j   s    zFragmentWrapper.__getitem__c             C   s
   t | jS )N)boolr-   )r   r   r   r   __bool__m   s    zFragmentWrapper.__bool__c             C   s   d S )Nr   )r   r   r   r   	getparentp   s    zFragmentWrapper.getparentc             C   s
   t | jS )N)strr-   )r   r   r   r   __str__s   s    zFragmentWrapper.__str__c             C   s
   t | jS )N)r7   r-   )r   r   r   r   __unicode__v   s    zFragmentWrapper.__unicode__c             C   s
   t | jS )N)r2   r-   )r   r   r   r   r"   y   s    zFragmentWrapper.__len__N)r#   r$   r%   r   r0   r   r!   r5   r6   r8   r9   r"   r   r   r   r   r*   R   s   r*   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TreeWalkerc             C   sJ   t |trt|| _t|}nt | _t|}tjj| | t	j
 | _d S )N)r   listsetfragmentChildrenr)   r   r
   NonRecursiveTreeWalkerr   r   ZInfosetFilterfilter)r   Ztreer   r   r   r   ~   s    


zTreeWalker.__init__c       	      C   s  t |tr:|\}}|dks&td| tjtt||fS t |trLtjfS t |t	rjtj
|j|j|jfS t |trt|d rtjt|jfS |jtjkrtjt|jfS |jtjkrtjt|jdd	 fS tjt|j}| r|j \}}nd }t|j}i }xbt|jj D ]P\}}t|}t|}tj|}|rX|||jd|jdf< n||d |f< qW tj|| j j!||t"|dkp|jfS d S )
Nr   r   z%Text nodes are text or tail, found %stagr	   r   r   )r   r   )#r   tupleAssertionErrorr
   ZTEXTr   r/   r   ZDOCUMENTr   ZDOCTYPEr'   r   r(   r*   r.   r-   r@   r   CommentCOMMENTr   ZEntityZENTITYr   matchgroupsr;   ZattribitemsgroupZELEMENTr?   ZfromXmlNamer2   )	r   r   r    rF   	namespacer@   Zattrsr'   valuer   r   r   getNodeDetails   s:    




zTreeWalker.getNodeDetailsc             C   sD   t |t stdt|s*|js*td|jr8|dfS |d S d S )NzText nodes have no childrenzNode has no childrenr   r   )r   rB   rC   r2   r   )r   r   r   r   r   getFirstChild   s
    zTreeWalker.getFirstChildc             C   sb   t |trL|\}}|dks&td| |dkrDt|r>|d S d S n|j S |jrZ|dfS |j S )Nr   r   z%Text nodes are text or tail, found %sr   )r   r   )r   rB   rC   r2   r   r   )r   r   r    r   r   r   getNextSibling   s    
zTreeWalker.getNextSiblingc             C   sJ   t |tr4|\}}|dks&td| |dkrB|S n|| jkrBd S |j S )Nr   r   z%Text nodes are text or tail, found %s)r   r   )r   rB   rC   r=   r6   )r   r   r    r   r   r   getParentNode   s    

zTreeWalker.getParentNodeN)r#   r$   r%   r   rL   rM   rN   rO   r   r   r   r   r:   }   s
   )	r:   N)Z
__future__r   r   r   Zpip._vendor.sixr   Zlxmlr   Ztreebuilders.etreer    r
   r   r   objectr   r   r)   r*   r>   r:   r   r   r   r   <module>   s   	&	+