o
    ;/b)                     @   s   d dl mZ 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 ZdddZdddZdddZdddZdS )    )absolute_importNzY('[^']*'|"[^"]*"|::|//?|\.\.|\(\)|[/.*:\[\]\(\)@=])|((?:\{[^}]+\})?[^/\[\]\(\)@=\s]+)|\s+c           	   	   c   s    |r| d p| dnd }d}t| D ]T}|\}}|rc|d dkrcd|v rO|dd\}}z|s5t|d|| |f fV  W n tyN   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
namespacesZdefault_namespaceZparsing_attributetokenZttypetagprefixZuri r   3/usr/lib/python3/dist-packages/lxml/_elementpath.pyxpath_tokenizerJ   s0    
r   c                    s   |d   fdd}|S )Nr   c                 3   &    | D ]}|  D ]}|V  q
qd S Niterchildrenresultelemer   r   r   selecte      zprepare_child.<locals>.selectr   nextr   r   r   r   r   prepare_childc   s   r#   c                 C      dd }|S )Nc                 s   s&    | D ]}| dD ]}|V  q
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   s   s   zprepare_self.<locals>.selectr   r!   r   r   r   prepare_selfr   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   )Ziterdescendantsr   r   r   r   r      r    z"prepare_descendant.<locals>.select)r   r!   r   r   r   prepare_descendantw   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   r   )keyr   r   r         z!prepare_predicate.<locals>.selectz@-='c                 3   s$    | D ]}|  kr|V  qd S r   r0   r1   )r2   valuer   r   r      r3   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itertextr   )r   r4   r   r   r      s   c                 3   s(    | D ]}d |  kr|V  qd S r6   )r7   r8   r1   )r4   r   r   r      s   z-()z-()-z3indices in path predicates are 1-based, not 0-basedzpath index >= 1 expectedZ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*   Zelems)indexr   r   r      s   zinvalid predicate)appendrematchintr   
ValueError)r"   r   Z	signatureZ	predicater   r   )r<   r2   r   r4   r   prepare_predicate   sp    rB   )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
| |}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 patternr.   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 elementzempty path expressionr   zinvalid path)rA   tuplesorteditems_cacher   lenclearr   iterr   r"   AttributeError__next__StopIterationr=   ops)pathr   Z	cache_keystreamZ_nextr   selectorr   r   r   _build_path_iterator   sf   



rX   c                 C   s*   t ||}t| f}|D ]}||}q|S r   )rX   rP   )r   rU   r   rW   r   r   r   r   r   iterfind7  s
   


rY   c                 C   s,   t | ||}zt|W S  ty   Y d S w r   )rY   r"   rS   )r   rU   r   itr   r   r   findB  s   
r[   c                 C   s   t t| ||S r   )r:   rY   )r   rU   r   r   r   r   r
   M  s   r
   c                 C   s"   t | ||}|d u r|S |jpdS r6   )r[   text)r   rU   defaultr   elr   r   r   findtextT  s   
r_   r   )NN)Z
__future__r   r>   compiler	   r   r#   r&   r'   r(   r+   rB   rT   rM   rX   rY   r[   r
   r_   r   r   r   r   <module>   s2   9
c
9

