B
    18\=(                 @   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	dd Z
eeee	ee
dZi ZG dd dZdddZd ddZd!ddZd"ddZdS )#    Nz\('[^']*'|\"[^\"]*\"|::|//?|\.\.|\(\)|[/.*:\[\]\(\)@=])|((?:\{[^}]+\})?[^/\[\]\(\)@=\s]+)|\s+c          	   c   s   xt | D ]}|d }|r|d dkrd|kry6|dd\}}|sJt|d d|| |f fV  W q tk
r   td| d Y qX q|V  qW d S )N   r   {:z{%s}%sz!prefix %r not found in prefix map)xpath_tokenizer_refindallsplitKeyErrorSyntaxError)pattern
namespacestokentagprefixuri r   Y/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/xml/etree/ElementPath.pyxpath_tokenizerI   s    r   c             C   sF   | j }|d krBi  | _ }x(| j D ]}x|D ]}|||< q.W q$W |S )N)
parent_maprootiter)contextr   per   r   r   get_parent_mapW   s    

r   c                s   |d   fdd}|S )Nr   c             3   s0   x*|D ]"}x|D ]}|j  kr|V  qW qW d S )N)r   )r   resultelemr   )r   r   r   selectb   s    


zprepare_child.<locals>.selectr   )nextr   r   r   )r   r   prepare_child`   s    r   c             C   s   dd }|S )Nc             s   s   x|D ]}|E d H  qW d S )Nr   )r   r   r   r   r   r   r   j   s    
zprepare_star.<locals>.selectr   )r   r   r   r   r   r   prepare_stari   s    r   c             C   s   dd }|S )Nc             s   s   |E d H  d S )Nr   )r   r   r   r   r   r   p   s    zprepare_self.<locals>.selectr   )r   r   r   r   r   r   prepare_selfo   s    r    c                s\   y
|  }W n t k
r   d S X |d dkr2d n|d sD|d  ntd fdd}|S )Nr   *r   zinvalid descendantc             3   s4   x.|D ]&}x |  D ]}||k	r|V  qW qW d S )N)r   )r   r   r   r   )r   r   r   r      s    
z"prepare_descendant.<locals>.select)StopIterationr	   )r   r   r   r   )r   r   prepare_descendantt   s    

r#   c             C   s   dd }|S )Nc             s   sD   t | }i }x2|D ]*}||kr|| }||krd ||< |V  qW d S )N)r   )r   r   r   Z
result_mapr   parentr   r   r   r      s    
zprepare_parent.<locals>.selectr   )r   r   r   r   r   r   prepare_parent   s    
r%   c                sN  g }g }xy
|  }W n t k
r(   d S X |d dkr8P |dkrBq
|d rr|d d d dkrrd|d dd f}||d pd ||d  q
W d	|}|d
kr|d fdd}|S |dkr|d |d fdd}|S |dkrtd|d s|d fdd}|S |dksD|dkrztd|d sz|d |d rjfdd}nfdd}|S |dks|dks|dkrB|dkrt|d d   dk r2tdnl|d dkrtd|dkr.yt|d d  W n tk
r   tdY nX  dkr2tdnd  fdd}|S tdd S ) Nr   ]) r'   r   z'"'-r'   z@-c             3   s&   x |D ]}|  d k	r|V  qW d S )N)get)r   r   r   )keyr   r   r      s    
z!prepare_predicate.<locals>.selectz@-='c             3   s&   x |D ]}|  kr|V  qW d S )N)r+   )r   r   r   )r,   valuer   r   r      s    
z\-?\d+$c             3   s&   x |D ]}|  d k	r|V  qW d S )N)find)r   r   r   )r   r   r   r      s    
z.='z-='c             3   s@   x:|D ]2}x,|  D ]}d| kr|V  P qW qW d S )Nr'   )r   joinitertext)r   r   r   r   )r   r-   r   r   r      s
    
c             3   s*   x$|D ]}d |  kr|V  qW d S )Nr'   )r/   r0   )r   r   r   )r-   r   r   r      s    
z-()z-()-zXPath position >= 1 expectedlastzunsupported function   zunsupported expressionz)XPath offset from last() must be negativec          
   3   sb   t | }xT|D ]L}y.|| }t||j}|  |kr>|V  W q ttfk
rX   Y qX qW d S )N)r   listr   r   
IndexErrorr   )r   r   r   r   r$   Zelems)indexr   r   r      s    

zinvalid predicate)r"   appendr/   rematchintr	   
ValueError)r   r   Z	signature	predicater   r   )r6   r,   r   r-   r   prepare_predicate   sl    

&





r=   )r'   r!   .z..z//[c               @   s   e Zd ZdZdd ZdS )_SelectorContextNc             C   s
   || _ d S )N)r   )selfr   r   r   r   __init__  s    z_SelectorContext.__init__)__name__
__module____qualname__r   rB   r   r   r   r   r@      s   r@   c       
      C   sj  ||d krd nt t| f}|dd  dkr8|d }yt| }W n tk
r<   ttdkrjt  |d d dkrtdtt	||j
}y
| }W n tk
r   d S X g }xxy|t|d  || W n tk
r   tdd Y nX y| }|d dkr| }W q tk
r*   P Y qX qW |t|< Y nX | g}t| }x|D ]}	|	||}qRW |S )	Nr)   /r!   d   r   z#cannot use absolute path on elementr   zinvalid path)tuplesorteditems_cacher   lenclearr	   r   r   __next__r"   r7   opsr@   )
r   pathr   Z	cache_keyselectorr   r   r   r   r   r   r   r   iterfind	  sD    


rR   c             C   s   t t| ||d S )N)r   rR   )r   rP   r   r   r   r   r.   2  s    r.   c             C   s   t t| ||S )N)r4   rR   )r   rP   r   r   r   r   r   8  s    r   c             C   s4   yt t| ||} | jpdS  tk
r.   |S X d S )Nr'   )r   rR   textr"   )r   rP   defaultr   r   r   r   findtext>  s
    
rU   )N)N)N)N)NN)r8   compiler   r   r   r   r   r    r#   r%   r=   rO   rK   r@   rR   r.   r   rU   r   r   r   r   <module>;   s,   
		b

)

