o
    g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_namespaceZparsing_attributetokenttypetagprefixuri r   2/usr/local/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(   Z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,      r.   zinternal parser error, got )
isinstancestrslicelenRuntimeError)r   r,   r   )r*   r+   r0   r3   r4   r1   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>.selectr/   {}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   r@   r   r   prepare_child   s   rF   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   rC   r   r   r   prepare_star   s   rH   c                 C   rG   )Nc                 s   s    |E d H  d S r   r   )r   r'   r   r   r   r,      s   zprepare_self.<locals>.selectr   rC   r   r   r   prepare_self   s   rI   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>   r?   r   r   r,      s   z"prepare_descendant.<locals>.selectr/   rA   c                 3   s.    |D ]}|  D ]	}||ur|V  q
qd S r   rK   rB   r$   r   r   r,      s   )StopIterationr   r%   r:   rC   r   rE   r   prepare_descendant   s$   

rM   c                 C   rG   )Nc                 s   sB    t | }i }|D ]}||v r|| }||vrd ||< |V  q	d S r   )r   )r   r'   r   Z
result_mapr(   parentr   r   r   r,      s   zprepare_parent.<locals>.selectr   rC   r   r   r   prepare_parent   s   
rO   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'"'r2   -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   rT   r&   rU   valuer   r   r,     rV   c                 3   s0    |D ]}|   }d ur|kr|V  qd S r   rT   )r   r'   r(   
attr_valuerW   r   r   select_negated  s   z)prepare_predicate.<locals>.select_negatedz!=z\-?\d+$c                 3   rS   r   )findr&   r$   r   r   r,     rV   z.='z.!='z-='z-!='c                 3   s<    |D ]}|  D ]}d| kr|V   nq
qd S Nr   )r	   joinitertextrB   r   rX   r   r   r,        c                 3   s<    |D ]}|  D ]}d| kr|V   nq
qd S r\   )iterfindr]   r^   rB   r_   r   r   rZ   "  r`   c                 3   s(    |D ]}d |  kr|V  qd S r\   r]   r^   r&   rX   r   r   r,   )     c                 3   s(    |D ]}d |  kr|V  qd S r\   rb   r&   rc   r   r   rZ   -  rd   z-()z-()-zXPath position >= 1 expectedlastzunsupported functionr/   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(   rN   elems)indexr   r   r,   E  s   zinvalid predicate)rL   appendr]   rematchintr   
ValueError)rD   r   	signature	predicater,   rZ   r   )ri   rU   r   rX   r   prepare_predicate   s   





rq   )r   rJ   .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   rv   r   r   r   r   rt   ^  s    rt   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 )	Nr2   /rJ   d   r   z#cannot use absolute path on elementr   zinvalid path)tuplesorteditems_cacher   r8   clearr   r   r   __next__rL   rj   opsrt   )
r(   pathr   	cache_keyselectorrD   r   r'   r   r,   r   r   r   ra   h  sR   

ra   c                 C   s   t t| ||d S r   )rD   ra   r(   r   r   r   r   r   r[     s   r[   c                 C   s   t t| ||S r   )rf   ra   r   r   r   r   r	     s   r	   c                 C   s4   zt t| ||} | jpdW S  ty   | Y S w r\   )rD   ra   textrL   )r(   r   defaultr   r   r   r   findtext  s   r   r   )NN)rk   compiler   r   r   r%   r:   rF   rH   rI   rM   rO   rq   r   r   rt   ra   r[   r	   r   r   r   r   r   <module>   s6   :

)q	


,
