o
    f6                     @   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
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    |r| dnd }d}t| D ]U}|\}}|r_|d dkr_d|v rK|dd\}}z|s0t|d|| |f fV  W n tyJ   td| d w |rY|sY|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default_namespaceparsing_attributetokenttypetagprefixuri r   ,/usr/lib/python3.10/xml/etree/ElementPath.pyxpath_tokenizerJ   s,   
r   c                 C   s>   | j }|d u ri  | _ }| j D ]}|D ]}|||< qq|S N)
parent_maprootiter)contextr   per   r   r   get_parent_mapb   s   

r    c                 C   s    | d d dkp| dd  dkS )N   {*}}*r   r   r   r   r   _is_wildcard_tagl   s    r&   c                    s   t t dkr fdd}|S dkr fdd}|S d d dkrGdd  tt d dd   fd	d}|S d
d  dkrgd d td t fdd}|S td )Nz{*}*c                 3   s"    |D ]} |j r|V  qd S r   r%   r   resultelem_isinstance_strr   r   selectv   s   z_prepare_tag.<locals>.selectz{}*c                 3   s2    |D ]}|j } |r|d dkr|V  qd S )Nr   r   r%   r   r(   r)   el_tagr*   r   r   r-   |      r!   r"      c                 3   s:    |D ]}|j }|ks |r| kr|V  qd S r   r%   r.   )r+   r,   no_nssuffixr   r   r   r-      s   r#   r$   c                 3   s2    |D ]}|j } |r| kr|V  qd S r   r%   r.   )r+   r,   nsns_onlyr   r   r-      r0   zinternal parser error, got )
isinstancestrslicelenRuntimeError)r   r-   r   )r+   r,   r2   r5   r6   r3   r   r   _prepare_tagp   s&   
 r<   c                    sT   |d t rt  fdd}|S d d dkr"dd  fdd}|S )Nr   c                       dd } | ||S )Nc                 s   s    | D ]}|E d H  qd S r   r   )r(   r)   r   r   r   select_child      z3prepare_child.<locals>.select.<locals>.select_childr   r   r(   r>   
select_tagr   r   r-      s   zprepare_child.<locals>.selectr1   {}c                 3   s*    |D ]}|D ]
}|j  kr|V  qqd S r   r%   r   r(   r)   r   r%   r   r   r-      s   
)r&   r<   nextr   r-   r   rB   r   r   prepare_child   s   rH   c                 C      dd }|S )Nc                 s   s    |D ]}|E d H  qd S r   r   r'   r   r   r   r-      r?   zprepare_star.<locals>.selectr   rE   r   r   r   prepare_star   s   rJ   c                 C   rI   )Nc                 s   s    |E d H  d S r   r   )r   r(   r   r   r   r-      s   zprepare_self.<locals>.selectr   rE   r   r   r   prepare_self   s   rK   c                    s   z|  }W n
 t y   Y d S w |d dkrdn|d s"|d ntdtr6t  fdd}|S d d dkrDdd  fd	d}|S )
Nr   *r   zinvalid descendantc                    r=   )Nc                 s   s,    | D ]}|  D ]	}||ur|V  q	qd S r   r   )r(   r)   r   r   r   r   r>      s   z8prepare_descendant.<locals>.select.<locals>.select_childr   r@   rA   r   r   r-      s   z"prepare_descendant.<locals>.selectr1   rC   c                 3   s.    |D ]}|  D ]	}||ur|V  q
qd S r   rM   rD   r%   r   r   r-      s   )StopIterationr   r&   r<   rE   r   rG   r   prepare_descendant   s$   

rO   c                 C   rI   )Nc                 s   sB    t | }i }|D ]}||v r|| }||vrd ||< |V  q	d S r   )r    )r   r(   r   
result_mapr)   parentr   r   r   r-      s   zprepare_parent.<locals>.selectr   rE   r   r   r   prepare_parent   s   
rR   c                    s  g }g }	 z|  }W n
 t y   Y d S w |d dkrn.|dkr!q|d r9|d d d dv r9d|d dd f}||d p@d ||d  qd	|}|d
kr_|d fdd}|S |dksg|dkr|d |d fdd}fdd}d|v r|S |S |dkrtd|d s|d fdd}|S |dks|dks|dks|dkrtd|d s|d |d r·fdd}fdd}nfdd}fdd}d|v r|S |S |dks|dks|dkrA|dkrt|d d   dk rtdn3|d d krtd!|dkr7z
t|d" d  W n ty,   td#w  d$kr6td%nd  fd&d}|S td')(Nr   r   ])r   r   z'"'r4   -r   z@-c                 3   $    |D ]}|  d ur|V  qd S r   r   r'   )keyr   r   r-         z!prepare_predicate.<locals>.selectz@-='z@-!='c                 3   s$    |D ]}|  kr|V  qd S r   rW   r'   rX   valuer   r   r-     rY   c                 3   s0    |D ]}|   }d ur|kr|V  qd S r   rW   )r   r(   r)   
attr_valuerZ   r   r   select_negated  s   z)prepare_predicate.<locals>.select_negatedz!=z\-?\d+$c                 3   rV   r   )findr'   r%   r   r   r-     rY   z.='z.!='z-='z-!='c                 3   s<    |D ]}|  D ]}d| kr|V   nq
qd S Nr   )r	   joinitertextrD   r   r[   r   r   r-        c                 3   s<    |D ]}|  D ]}d| kr|V   nq
qd S r_   )iterfindr`   ra   rD   rb   r   r   r]   "  rc   c                 3   s(    |D ]}d |  kr|V  qd S r_   r`   ra   r'   r[   r   r   r-   )     c                 3   s(    |D ]}d |  kr|V  qd S r_   re   r'   rf   r   r   r]   -  rg   z-()z-()-zXPath position >= 1 expectedlastzunsupported functionr1   zunsupported expressionr#   z)XPath offset from last() must be negativec              
   3   s\    t | }|D ]$}z|| }t||j}|  |u r|V  W q ttfy+   Y qw d S r   )r    listr	   r   
IndexErrorr   )r   r(   r   r)   rQ   elems)indexr   r   r-   E  s   zinvalid predicate)rN   appendr`   rematchintr   
ValueError)rF   r   	signature	predicater-   r]   r   )rl   rX   r   r[   r   prepare_predicate   s   





rt   )r   rL   .z..z//[c                   @   s   e Zd ZdZdd ZdS )_SelectorContextNc                 C   s
   || _ d S r   )r   )selfr   r   r   r   __init__`  s   
z_SelectorContext.__init__)__name__
__module____qualname__r   ry   r   r   r   r   rw   ^  s    rw   c           
      C   sP  |dd  dkr|d }|f}|r|t t| 7 }zt| }W ns ty   ttdkr2t  |d d dkr>tdtt	||j
}z| }W n tyV   Y Y d S w g }	 z|t|d  || W n tyt   tdd w z| }|d dkr| }W n	 ty   Y nw qZ|t|< Y nw | g}t| }|D ]}	|	||}q|S )	Nr4   /rL   d   r   z#cannot use absolute path on elementr   zinvalid path)tuplesorteditems_cacher   r:   clearr   r   r   __next__rN   rm   opsrw   )
r)   pathr   	cache_keyselectorrF   r   r(   r   r-   r   r   r   rd   h  sR   

rd   c                 C   s   t t| ||d S r   )rF   rd   r)   r   r   r   r   r   r^     s   r^   c                 C   s   t t| ||S r   )ri   rd   r   r   r   r   r	     s   r	   c                 C   s4   zt t| ||} | jpdW S  ty   | Y S w r_   )rF   rd   textrN   )r)   r   defaultr   r   r   r   findtext  s   r   r   )NN)rn   compiler   r   r    r&   r<   rH   rJ   rK   rO   rR   rt   r   r   rw   rd   r^   r	   r   r   r   r   r   <module>   s6   :

)q	


,
