o
    /h*                     @   s   d dl Z e dZdddZdd Zdd	 Zd
d Zdd Zdd Zdd Z	eeeeee	dZ
i ZdddZdddZdddZdddZdddZdS )     NzY('[^']*'|"[^"]*"|::|//?|\.\.|\(\)|[/.*:\[\]\(\)@=])|((?:\{[^}]+\})?[^/\[\]\(\)@=\s]+)|\s+Tc           
   	   c   s    |r| d p| dnd }d}t| D ]^}|\}}|rm|d dkrmd|v rQ|rQ|dd\}}	z|s7t|d|| |	f fV  W n& tyP   td| w | rY|V  n|rg|sg|d||f fV  n|V  d}q|V  |d	k}qd S )
N Fr   {:   z{%s}%sz!prefix %r not found in prefix map@)getxpath_tokenizer_refindallsplitKeyErrorSyntaxError	isdecimal)
pattern
namespaceswith_prefixesdefault_namespaceparsing_attributetokenttypetagprefixuri r   E/var/www/html/myenv/lib/python3.10/site-packages/lxml/_elementpath.pyxpath_tokenizerI   s4    
r   c                    s   |d   fdd}|S )Nr   c                 3        | D ]
}|  E d H  qd S Niterchildrenresultelemr   r   r   selectf      zprepare_child.<locals>.selectr   nextr   r#   r   r"   r   prepare_childd   s   r'   c                 C      dd }|S )Nc                 s   s     | D ]
}| dE d H  qd S )N*r   r   r   r   r   r#   l   r$   zprepare_star.<locals>.selectr   r%   r   r   r   prepare_stark   s   r*   c                 C   r(   )Nc                 S   s   | S r   r   )r    r   r   r   r#   r   s   zprepare_self.<locals>.selectr   r%   r   r   r   prepare_selfq   s   r+   c                    sB   |  }|d dkrd n|d s|d  nt d fdd}|S )Nr   r)   r   zinvalid descendantc                 3   r   r   )iterdescendantsr   r"   r   r   r#   ~   r$   z"prepare_descendant.<locals>.select)r   r%   r   r"   r   prepare_descendantv   s   
r-   c                 C   r(   )Nc                 s   s&    | D ]}|  }|d ur|V  qd S r   )	getparent)r    r!   parentr   r   r   r#      s   zprepare_parent.<locals>.selectr   r%   r   r   r   prepare_parent   s   r0   c                    s  d}g }	 |  }|d dkrn-|dkrq|d r,|d d d dv r,d|d dd f}||d p2d	7 }| |d  q|d
krL|d fdd}|S |dkra|d |d fdd}|S |d	krytd|d sy|d fdd}|S |dks|dkrtd|d s|d |d rfdd}|S fdd}|S |d	ks|dks|dkr|d	krt|d d   dk r̈ dkrtdtdn&|d dkrtd|dkrz
t|d d  W n ty   tdw d  fdd}|S td)Nr   r   r   ])r   r   z'"'-z@-c                 3   s$    | D ]}|  d ur|V  qd S r   r   r   )keyr   r   r#         z!prepare_predicate.<locals>.selectz@-='c                 3   s$    | D ]}|  kr|V  qd S r   r5   r   )r6   valuer   r   r#      r7   z-?\d+$c                 3   s&    | D ]}|  D ]}|V   qd S r   r   )r    r!   _r"   r   r   r#      s   z.='z-='c                 3   s<    | D ]}|  D ]}d| kr|V   nq
qd S Nr   )r   joinitertext)r    r!   e)r   r8   r   r   r#      s   c                 3   s(    | D ]}d |  kr|V  qd S r:   )r;   r<   r   )r8   r   r   r#      s   z-()z-()-z3indices in path predicates are 1-based, not 0-basedzpath index >= 1 expectedlastzunsupported function   zunsupported expressionc              	   3   sZ    | D ]'}|  }|d u rqzt||j}|  |u r |V  W q ty*   Y qw d S r   )r.   listr   r   
IndexError)r    r!   r/   elems)indexr   r   r#      s   zinvalid predicate)appendrematchintr   
ValueError)r&   r   	signature	predicater#   r   )rC   r6   r   r8   r   prepare_predicate   sp    rK   )r   r)   .z..z//[c                 C   s  | dd dkr| d7 } | f}|rLd|v rBd|v r-|d |d kr-t d|d |d f ||d fttdd | D  7 }n
|tt| 7 }zt| W S  tyZ   Y nw ttd	kret  | dd
 dkrqtdt	t
| ||d}z|j}W n ty   |j}Y nw z| }W n ty   tdw g }	 z|t|d  || W n ty   tdw z| }|d dkr| }W n	 ty   Y nw q|t|< |S )zcompile selector patternr3   N/r)   r   z2Ambiguous default namespace provided: %r versus %rc                 s   s     | ]}|d  dur|V  qdS )r   Nr   ).0itemr   r   r   	<genexpr>
  s    z'_build_path_iterator.<locals>.<genexpr>d   r   z#cannot use absolute path on elementr   zempty path expressionr   zinvalid path)rH   tuplesorteditems_cacher   lenclearr   iterr   r&   AttributeError__next__StopIterationrD   ops)pathr   r   	cache_keystream_nextr   selectorr   r   r   _build_path_iterator   sf   



rd   c                 C   s.   t |||d}t| f}|D ]}||}q|S NrS   )rd   rZ   )r!   r_   r   r   rc   r    r#   r   r   r   iterfind5  s
   

rf   c                 C   s0   t | |||d}zt|W S  ty   Y d S w re   )rf   r&   r]   )r!   r_   r   r   itr   r   r   find@  s   
rh   c                 C   s   t t| ||S r   )r@   rf   )r!   r_   r   r   r   r   r   r	   K  s   r	   c                 C   s&   t | |||d}|d u r|S |jpdS )NrS   r   )rh   text)r!   r_   defaultr   r   elr   r   r   findtextR  s   
rl   )NT)T)NNT)rE   compiler   r   r'   r*   r+   r-   r0   rK   r^   rW   rd   rf   rh   r	   rl   r   r   r   r   <module>   s0   :
c

9

