o
    éT•j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r�t d|d ¡s�|d ‰‡fdd„}|S |dksµ|dksµ|dks­|dkrât 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ú	


,
