a XC?h3�@s�ddlZe�d�Zd"dd�Zdd�Zdd�Zd d �Zd d �Zd d�Zdd�Z dd�Z dd�Z dd�Z eee e e e d�Z iZGdd�d�Zd#dd�Zd$dd�Zd%dd�Zd&d d!�ZdS)'�Nz\('[^']*'|\"[^\"]*\"|::|//?|\.\.|\(\)|[/.*:\[\]\(\)@=])|((?:\{[^}]+\})?[^/\[\]\(\)@=\s]+)|\s+c cs�|r|�d�nd}d}t�|�D]�}|\}}|r�|ddkr�d|vr�|�dd�\}}z"|s^t�|d|||ffVWq�ty�td|�d�Yq�0n"|r�|s�|d||ffVn|Vd}q |V|d k}q dS) N�Fr�{�:�z{%s}%sz!prefix %r not found in prefix map�@)�get�xpath_tokenizer_re�findall�split�KeyError� SyntaxError) �pattern� namespacesZdefault_namespaceZparsing_attribute�tokenZttype�tag�prefixZuri�r�:/opt/alt/python39/lib64/python3.9/xml/etree/ElementPath.py�xpath_tokenizerIs& rcCs>|j}|dur:i|_}|j��D]}|D] }|||<q*q"|S�N)� parent_map�root�iter)�contextr�p�errr�get_parent_mapas  rcCs |dd�dkp|dd�dkS)N��{*}������}*r�rrrr�_is_wildcard_tagksr"cs�tt���dkr"��fdd�}n��dkr:��fdd�}n��dd�dkr��dd��tt�� d���dd�������fd d�}nL�d d�d krƈdd ��tdt��������fd d�}ntd�����|S)Nz{*}*c3s |D]}�|j��r|VqdSrr!�r�result�elem�� _isinstance�_strrr�selectus z_prepare_tag..selectz{}*c3s0|D]&}|j}�|��r|ddkr|VqdS)Nrrr!�rr$r%Zel_tagr&rrr){srr�c3s8|D].}|j}|�ks,�|��r|��kr|VqdSrr!r*)r'r(�no_ns�suffixrrrr)�srr �����c3s0|D]&}|j}�|��r|��kr|VqdSrr!r*)r'r(�ns�ns_onlyrrr)�szinternal parser error, got )� isinstance�str�slice�len� RuntimeError)rr)r)r'r(r,r/r0r-rr� _prepare_tagos     r6csR|d�t��r&t����fdd�}n(�dd�dkrB�dd���fdd�}|S)Nrcsdd�}�|||��S)Ncss|D]}|EdHqdSrr)r$r%rrr� select_child�sz3prepare_child..select..select_childr�rr$r7�� select_tagrrr)�szprepare_child..selectr+�{}c3s(|D]}|D]}|j�kr |Vq qdSrr!�rr$r%rr!rrr)�s )r"r6��nextrr)r�r:rr� prepare_child�s  r@cCs dd�}|S)Ncss|D]}|EdHqdSrrr#rrrr)�szprepare_star..selectrr=rrr� prepare_star�srAcCs dd�}|S)Ncss|EdHdSrr)rr$rrrr)�szprepare_self..selectrr=rrr� prepare_self�srBcs�z |�}WntyYdS0|ddkr2d�n|dsD|d�ntd��t��rjt����fdd�}n(�dd�dkr��dd���fd d�}|S) Nr�*rzinvalid descendantcsdd�}�|||��S)Ncss*|D] }|��D]}||ur|VqqdSr�r)r$r%rrrrr7�s z8prepare_descendant..select..select_childrr8r9rrr)�sz"prepare_descendant..selectr+r;c3s,|D]"}|���D]}||ur|VqqdSrrDr<r!rrr)�s)� StopIterationr r"r6r=rr?r�prepare_descendant�s       rFcCs dd�}|S)Ncss@t|�}i}|D]*}||vr||}||vrd||<|VqdSr)r)rr$rZ result_mapr%�parentrrrr)�szprepare_parent..selectrr=rrr�prepare_parent�s rHcsHg}g}z |�}Wnty&YdS0|ddkr6q�|dkr@q|drp|ddd�dvrpd|ddd�f}|�|dp~d�|�|d�qd �|�}|d kr�|d��fd d �}|S|d kr�|d�|d���fdd �}|S|dk�rt�d|d��s|d��fdd �}|S|dk�s@|dk�rvt�d|d��sv|d�|d���rf��fdd �}n �fdd �}|S|dk�s�|dk�s�|dk�r<|dk�r�t|d�d��dk�r,td��nj|ddk�r�td��|dk�r(zt|d�d�Wnt�ytd��Yn0�dk�r,td��nd��fdd �}|Std��dS) Nr�])rrrz'"�'r.�-rz@-c3s"|D]}|���dur|VqdSr�rr#)�keyrrr)�sz!prepare_predicate..selectz@-='c3s"|D]}|����kr|VqdSrrLr#)rM�valuerrr)sz\-?\d+$c3s"|D]}|���dur|VqdSr)�findr#r!rrr) sz.='z-='c3s:|D]0}|���D] }d�|����kr|VqqqdS�Nr)r �join�itertextr<)rrNrrr)s c3s&|D]}d�|����kr|VqdSrP)rQrRr#)rNrrr)sz-()z-()-zXPath position >= 1 expectedZlastzunsupported functionr+zunsupported expressionrz)XPath offset from last() must be negativec 3s\t|�}|D]J}z.||}t|�|j��}|�|ur<|VWq ttfyTYq 0q dSr)r�listr r� IndexErrorr )rr$rr%rGZelems)�indexrrr)4s  zinvalid predicate)rE�appendrQ�re�match�intr � ValueError)r>rZ signatureZ predicater)r)rUrMrrNr�prepare_predicate�sj      &        r[)rrC�.z..z//�[c@seZdZdZdd�ZdS)�_SelectorContextNcCs ||_dSr)r)�selfrrrr�__init__Osz_SelectorContext.__init__)�__name__� __module__� __qualname__rr`rrrrr^Msr^c Cs`|dd�dkr|d}|f}|r6|tt|����7}z t|}Wn�t�y6tt�dkrft��|dd�dkr~td��tt ||��j }z |�}Wnt y�YYdS0g}z|� t |d||��Wnt y�td�d�Yn0z|�}|ddk�r |�}Wq�t �y&Y�q*Yq�0q�|t|<Yn0|g}t|�}|D]} | ||�}�qJ|S) Nr.�/rC�drz#cannot use absolute path on elementrz invalid path)�tuple�sorted�items�_cacher r4�clearr rr�__next__rErV�opsr^) r%�pathrZ cache_keyZselectorr>rr$rr)rrr�iterfindWsD       rncCstt|||�d�Sr)r>rn�r%rmrrrrrO�srOcCstt|||��Sr)rSrnrorrrr �sr cCs8ztt|||��}|jpdWSty2|YS0dSrP)r>rn�textrE)r%rm�defaultrrrr�findtext�s   rr)N)N)N)N)NN)rW�compilerrrr"r6r@rArBrFrHr[rlrir^rnrOr rrrrrr�;s4�  ) a�  ,