o
    JAf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
namespacesZdefault_namespaceZparsing_attributetokenZttypetagprefixZ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%   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(   r-   r0   r1   r.   r   r   _prepare_tagp   s&   
 r7   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$   r9   
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"   r7   nextr   r)   r   r=   r   r   prepare_child   s   rC   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   r@   r   r   r   prepare_star   s   rE   c                 C   rD   )Nc                 s   s    |E d H  d S r   r   )r   r$   r   r   r   r)      s   zprepare_self.<locals>.selectr   r@   r   r   r   prepare_self   s   rF   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                    r8   )Nc                 s   s,    | D ]}|  D ]	}||ur|V  q	qd S r   r   )r$   r%   r   r   r   r   r9      s   z8prepare_descendant.<locals>.select.<locals>.select_childr   r;   r<   r   r   r)      s   z"prepare_descendant.<locals>.selectr,   r>   c                 3   s.    |D ]}|  D ]	}||ur|V  q
qd S r   rH   r?   r!   r   r   r)      s   )StopIterationr   r"   r7   r@   r   rB   r   prepare_descendant   s$   

rJ   c                 C   rD   )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   r@   r   r   r   prepare_parent   s   
rL   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'"'r/   -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   rQ   r#   rR   valuer   r   r)     rS   c                 3   s0    |D ]}|   }d ur|kr|V  qd S r   rQ   )r   r$   r%   Z
attr_valuerT   r   r   select_negated  s   z)prepare_predicate.<locals>.select_negatedz!=z\-?\d+$c                 3   rP   r   )findr#   r!   r   r   r)     rS   z.='z.!='z-='z-!='c                 3   s<    |D ]}|  D ]}d| kr|V   nq
qd S Nr   )r	   joinitertextr?   r   rU   r   r   r)        c                 3   s<    |D ]}|  D ]}d| kr|V   nq
qd S rX   )iterfindrY   rZ   r?   r[   r   r   rV   "  r\   c                 3   s(    |D ]}d |  kr|V  qd S rX   rY   rZ   r#   rU   r   r   r)   )     c                 3   s(    |D ]}d |  kr|V  qd S rX   r^   r#   r_   r   r   rV   -  r`   z-()z-()-zXPath position >= 1 expectedZ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%   rK   Zelems)indexr   r   r)   E  s   zinvalid predicate)rI   appendrY   rematchintr   
ValueError)rA   r   Z	signature	predicater)   rV   r   )rc   rR   r   rU   r   prepare_predicate   s   





rj   )r   rG   .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   ro   r   r   r   r   rm   ^  s    rm   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 )	Nr/   /rG   d   r   z#cannot use absolute path on elementr   zinvalid path)tuplesorteditems_cacher   r5   clearr   r   r   __next__rI   rd   opsrm   )
r%   pathr   Z	cache_keyselectorrA   r   r$   r   r)   r   r   r   r]   h  sR   

r]   c                 C   s   t t| ||d S r   )rA   r]   r%   r|   r   r   r   r   rW     s   rW   c                 C   s   t t| ||S r   )ra   r]   r~   r   r   r   r	     s   r	   c                 C   s4   zt t| ||} | jpdW S  ty   | Y S w rX   )rA   r]   textrI   )r%   r|   defaultr   r   r   r   findtext  s   r   r   )NN)re   compiler   r   r   r"   r7   rC   rE   rF   rJ   rL   rj   r{   rx   rm   r]   rW   r	   r   r   r   r   r   <module>   s6   :

)q	


,
