o
    	'f*                     @   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 ]V}|\}}|re|d dkred|v rQ|rQ|dd\}}	z|s7t|d|| |	f fV  W n tyP   td| w |r_|s_|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)
pattern
namespaceswith_prefixesdefault_namespaceparsing_attributetokenttypetagprefixuri r   I/home/ubuntu/flask/venv/lib/python3.10/site-packages/lxml/_elementpath.pyxpath_tokenizerI   s0    
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   selectd      zprepare_child.<locals>.selectr   nextr   r"   r   r!   r   prepare_childb   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"   j   r#   zprepare_star.<locals>.selectr   r$   r   r   r   prepare_stari   s   r)   c                 C   r'   )Nc                 S   s   | S r   r   )r   r   r   r   r"   p   s   zprepare_self.<locals>.selectr   r$   r   r   r   prepare_selfo   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_descendantt   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   r/   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   r4   r   )r5   valuer   r   r"      r6   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   r7   r   r   r"      s   c                 3   s(    | D ]}d |  kr|V  qd S r9   )r:   r;   r   )r7   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   )rB   r5   r   r7   r   prepare_predicate   sp    rJ   )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 patternr2   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)rG   tuplesorteditems_cacher   lenclearr   iterr   r%   AttributeError__next__StopIterationrC   ops)pathr   r   	cache_keystream_nextr   selectorr   r   r   _build_path_iterator   sf   



rc   c                 C   s.   t |||d}t| f}|D ]}||}q|S NrR   )rc   rY   )r    r^   r   r   rb   r   r"   r   r   r   iterfind3  s
   

re   c                 C   s0   t | |||d}zt|W S  ty   Y d S w rd   )re   r%   r\   )r    r^   r   r   itr   r   r   find>  s   
rg   c                 C   s   t t| ||S r   )r?   re   )r    r^   r   r   r   r   r   r	   I  s   r	   c                 C   s&   t | |||d}|d u r|S |jpdS )NrR   r   )rg   text)r    r^   defaultr   r   elr   r   r   findtextP  s   
rk   )NT)T)NNT)rD   compiler   r   r&   r)   r*   r,   r/   rJ   r]   rV   rc   re   rg   r	   rk   r   r   r   r   <module>   s0   :
c

9

