§
    Étºf£$  ã                   óD  — d Z ddlmZ  G d„ de¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d	„ d
¦  «        Z G d„ d¦  «        Zd„ Z	 G d„ d¦  «        Z
 G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Zi Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )z¢
XPath query support.

This module provides L{XPathQuery} to match
L{domish.Element<twisted.words.xish.domish.Element>} instances against
XPath-like expressions.
é    )ÚStringIOc                   ó   — e Zd Zd„ ZdS )ÚLiteralValuec                 ó   — | S ©N© ©ÚselfÚelems     úW/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/words/xish/xpath.pyÚvaluezLiteralValue.value   s   € Øˆó    N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s#   € € € € € ðð ð ð ð r   r   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú
IndexValuec                 ó4   — t          |¦  «        dz
  | _        d S )Né   )ÚintÚindex)r
   r   s     r   Ú__init__zIndexValue.__init__   s   € Ý˜‘Z”Z !‘^ˆŒ
ˆ
ˆ
r   c                 ó&   — |j         | j                 S r   )Úchildrenr   r	   s     r   r   zIndexValue.value   s   € ØŒ}˜TœZÔ(Ð(r   N)r   r   r   r   r   r   r   r   r   r      s2   € € € € € ð$ð $ð $ð)ð )ð )ð )ð )r   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚAttribValuec                 óF   — || _         | j         dk    r| j        | _        d S d S )NÚxmlns)Ú
attribnameÚvalue_nsr   )r
   r   s     r   r   zAttribValue.__init__    s+   € Ø$ˆŒØŒ?˜gÒ%Ð%ØœˆDŒJˆJˆJð &Ð%r   c                 ó   — |j         S r   )Úurir	   s     r   r    zAttribValue.value_ns%   s	   € ØŒxˆr   c                 óF   — | j         |j        v r|j        | j                  S d S r   )r   Ú
attributesr	   s     r   r   zAttribValue.value(   s%   € ØŒ?˜dœoÐ-Ð-Ø”? 4¤?Ô3Ð3à�4r   N)r   r   r   r   r    r   r   r   r   r   r      sA   € € € € € ð'ð 'ð 'ð
ð ð ðð ð ð ð r   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚCompareValuec                 ób   — || _         || _        |dk    r| j        | _        d S | j        | _        d S )Nú=)ÚlhsÚrhsÚ_compareEqualr   Ú_compareNotEqual©r
   r)   Úopr*   s       r   r   zCompareValue.__init__0   s5   € ØˆŒØˆŒØ�Š9ˆ9ØÔ+ˆDŒJˆJˆJàÔ.ˆDŒJˆJˆJr   c                 ón   — | j                              |¦  «        | j                             |¦  «        k    S r   ©r)   r   r*   r	   s     r   r+   zCompareValue._compareEqual8   ó)   € ØŒx�~Š~˜dÑ#Ô# t¤x§~¢~°dÑ';Ô';Ò;Ð;r   c                 ón   — | j                              |¦  «        | j                             |¦  «        k    S r   r0   r	   s     r   r,   zCompareValue._compareNotEqual;   r1   r   N)r   r   r   r   r+   r,   r   r   r   r&   r&   /   sA   € € € € € ð/ð /ð /ð<ð <ð <ð<ð <ð <ð <ð <r   r&   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚBooleanValuea^  
    Provide boolean XPath expression operators.

    @ivar lhs: Left hand side expression of the operator.
    @ivar op: The operator. One of C{'and'}, C{'or'}.
    @ivar rhs: Right hand side expression of the operator.
    @ivar value: Reference to the method that will calculate the value of
                 this expression given an element.
    c                 ób   — || _         || _        |dk    r| j        | _        d S | j        | _        d S )NÚand)r)   r*   Ú_booleanAndr   Ú
_booleanOrr-   s       r   r   zBooleanValue.__init__J   s4   € ØˆŒØˆŒØ�Š;ˆ;ØÔ)ˆDŒJˆJˆJàœˆDŒJˆJˆJr   c                 ój   — | j                              |¦  «        o| j                             |¦  «        S )z£
        Calculate boolean and of the given expressions given an element.

        @param elem: The element to calculate the value of the expression from.
        r0   r	   s     r   r7   zBooleanValue._booleanAndR   s+   € ð Œx�~Š~˜dÑ#Ô#Ð<¨¬¯ª°tÑ(<Ô(<Ð<r   c                 ój   — | j                              |¦  «        p| j                             |¦  «        S )z¢
        Calculate boolean or of the given expressions given an element.

        @param elem: The element to calculate the value of the expression from.
        r0   r	   s     r   r8   zBooleanValue._booleanOrZ   s+   € ð Œx�~Š~˜dÑ#Ô#Ð; t¤x§~¢~°dÑ';Ô';Ð;r   N)r   r   r   Ú__doc__r   r7   r8   r   r   r   r4   r4   ?   sK   € € € € € ðð ð)ð )ð )ð=ð =ð =ð<ð <ð <ð <ð <r   r4   c                 óH   — d| z  } t          ¦   «         |         ¦   «         }|S )z;
    Internal method which selects the function object
    z_%s_Function)Úglobals)ÚfnameÚ	klassnameÚcs      r   ÚFunctionrA   c   s)   € ð  Ñ&€IØ�‰	Œ	�)ÔÑÔ€AØ€Hr   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú_not_Functionc                 ó   — d | _         d S r   ©Ú	baseValue©r
   s    r   r   z_not_Function.__init__m   s   € ØˆŒˆˆr   c                 ó   — || _         d S r   rE   )r
   rF   s     r   Ú	setParamsz_not_Function.setParamsp   s   € Ø"ˆŒˆˆr   c                 ó8   — | j                              |¦  «         S r   )rF   r   r	   s     r   r   z_not_Function.values   s   € Ø”>×'Ò'¨Ñ-Ô-Ð-Ð-r   N)r   r   r   r   rI   r   r   r   r   rC   rC   l   sA   € € € € € ðð ð ð#ð #ð #ð.ð .ð .ð .ð .r   rC   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú_text_Functionc                 ó   — d S r   r   rG   s    r   rI   z_text_Function.setParamsx   s   € Øˆr   c                 ó    — t          |¦  «        S r   )Ústrr	   s     r   r   z_text_Function.value{   s   € Ý�4‰yŒyÐr   N)r   r   r   rI   r   r   r   r   rL   rL   w   s2   € € € € € ðð ð ðð ð ð ð r   rL   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú	_Locationc                 ó0   — g | _         d | _        d | _        d S r   ©Ú
predicatesÚelementNameÚchildLocationrG   s    r   r   z_Location.__init__€   ó   € ØˆŒØˆÔØ!ˆÔÐÐr   c                 ó„   — | j         d k    r| j         |j        k    rdS | j        D ]}|                     |¦  «        s dS ŒdS ©Nr   r   )rU   ÚnamerT   r   ©r
   r   Úps      r   ÚmatchesPredicatesz_Location.matchesPredicates…   sZ   € ØÔ˜tÒ#Ð#¨Ô(8¸D¼IÒ(EÐ(EØ�1à”ð 	ð 	ˆAØ—7’7˜4‘=”=ð Ø�q�qðð ˆqr   c                 ó¸   — |                       |¦  «        sdS | j        d k    r5|                     ¦   «         D ]}| j                             |¦  «        r dS Œ ndS dS rY   )r]   rV   ÚelementsÚmatches©r
   r   r@   s      r   r`   z_Location.matches�   sx   € Ø×%Ò% dÑ+Ô+ð 	Ø�1àÔ Ò%Ð%Ø—]’]‘_”_ð ð �ØÔ%×-Ò-¨aÑ0Ô0ð Ø˜1˜1ððð �1àˆqr   c                 óö   — |                       |¦  «        sd S | j        d k    r4|                     ¦   «         D ]}| j                             ||¦  «         Œd S |                     t          |¦  «        ¦  «         d S r   )r]   rV   r_   ÚqueryForStringÚwriterO   )r
   r   Ú	resultbufr@   s       r   rc   z_Location.queryForStringœ   sŒ   € Ø×%Ò% dÑ+Ô+ð 	ØˆFàÔ Ò%Ð%Ø—]’]‘_”_ð @ð @�ØÔ"×1Ò1°!°YÑ?Ô?Ð?Ð?ð@ð @ð �OŠO�C ™IœIÑ&Ô&Ð&Ð&Ð&r   c                 óÜ   — |                       |¦  «        sd S | j        d k    r4|                     ¦   «         D ]}| j                             ||¦  «         Œd S |                     |¦  «         d S r   )r]   rV   r_   ÚqueryForNodesÚappend©r
   r   Ú
resultlistr@   s       r   rg   z_Location.queryForNodes¦   sˆ   € Ø×%Ò% dÑ+Ô+ð 	ØˆFàÔ Ò%Ð%Ø—]’]‘_”_ð @ð @�ØÔ"×0Ò0°°JÑ?Ô?Ð?Ð?ð@ð @ð ×Ò˜dÑ#Ô#Ð#Ð#Ð#r   c                 ó  — |                       |¦  «        sd S | j        d k    r4|                     ¦   «         D ]}| j                             ||¦  «         Œd S |j        D ],}t          |t          ¦  «        r|                     |¦  «         Œ-d S r   )r]   rV   r_   ÚqueryForStringListr   Ú
isinstancerO   rh   ri   s       r   rl   z_Location.queryForStringList°   s°   € Ø×%Ò% dÑ+Ô+ð 	ØˆFàÔ Ò%Ð%Ø—]’]‘_”_ð Eð E�ØÔ"×5Ò5°a¸ÑDÔDÐDÐDðEð Eð ”]ð )ð )�Ý˜a¥Ñ%Ô%ð )Ø×%Ò% aÑ(Ô(Ð(øð)ð )r   N)	r   r   r   r   r]   r`   rc   rg   rl   r   r   r   rQ   rQ      sn   € € € € € ð"ð "ð "ð
ð ð ðð ð ð'ð 'ð 'ð$ð $ð $ð
)ð 
)ð 
)ð 
)ð 
)r   rQ   c                   óD   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )Ú_AnyLocationc                 ó0   — g | _         d | _        d | _        d S r   rS   rG   s    r   r   z_AnyLocation.__init__¾   rW   r   c                 óJ   — | j         D ]}|                     |¦  «        s dS ŒdS rY   )rT   r   r[   s      r   r]   z_AnyLocation.matchesPredicatesÃ   s6   € Ø”ð 	ð 	ˆAØ—7’7˜4‘=”=ð Ø�q�qðàˆqr   c                 ó†   — |j         d k    r|                      |j         |¦  «         |                     |j        ¦  «         d S r   )ÚparentÚlistParentsrh   rZ   )r
   r   Ú
parentlists      r   rt   z_AnyLocation.listParentsÉ   sC   € ØŒ;˜$ÒÐØ×Ò˜Tœ[¨*Ñ5Ô5Ð5Ø×Ò˜$œ)Ñ$Ô$Ð$Ð$Ð$r   c                 óê   — | j         d k    s| j         |j        k    rW|                      |¦  «        rB| j        d k    r5|                     ¦   «         D ]}| j                             |¦  «        r dS Œ ndS dS ©NTF©rU   rZ   r]   rV   r_   r`   ra   s      r   ÚisRootMatchz_AnyLocation.isRootMatchÎ   s‘   € àÔ Ò$Ð$¨Ô(8¸D¼IÒ(EÐ(EØ×$Ò$ TÑ*Ô*ð )FàÔ! TÒ)Ð)ØŸš™œð $ð $�AØÔ)×1Ò1°!Ñ4Ô4ð $Ø#˜t˜tð$ð$ð �tØˆur   c                 óN  — | j         d k    s| j         |j        k    rY|                      |¦  «        rD| j        d k    r7|                     ¦   «         D ] }| j                             |¦  «        r|c S Œ!d S |S |                     ¦   «         D ]}|                      |¦  «        r|c S Œd S r   rx   ra   s      r   ÚfindFirstRootMatchz_AnyLocation.findFirstRootMatchÚ   sÐ   € àÔ Ò$Ð$¨Ô(8¸D¼IÒ(EÐ(EØ×$Ò$ TÑ*Ô*ð )Fð Ô! TÒ)Ð)ØŸš™œð !ð !�AØÔ)×1Ò1°!Ñ4Ô4ð !Ø ˜˜˜ð!à�tð �ð
 —]’]‘_”_ð ð �Ø—<’< ‘?”?ð Ø�H�H�Hðð �4r   c                 ó’   — |                       |¦  «        rdS |                     ¦   «         D ]}|                      |¦  «        r dS ŒdS rw   )ry   r_   r`   ra   s      r   r`   z_AnyLocation.matchesô   s[   € Ø×Ò˜DÑ!Ô!ð 
	Ø�4ð
 —]’]‘_”_ð  ð  �Ø—<’< ‘?”?ð  Ø˜4˜4ð ð �5r   c                 ó    — t          d¦  «        ‚)Nz2queryForString is not implemented for any location)ÚNotImplementedError)r
   r   re   s      r   rc   z_AnyLocation.queryForString  s   € Ý!Ð"VÑWÔWÐWr   c                 ó´   — |                       |¦  «        r|                     |¦  «         |                     ¦   «         D ]}|                      ||¦  «         Œd S r   )ry   rh   r_   rg   ri   s       r   rg   z_AnyLocation.queryForNodes  sh   € à×Ò˜DÑ!Ô!ð 	$Ø×Ò˜dÑ#Ô#Ð#ð —’‘”ð 	.ð 	.ˆAØ×Ò˜q *Ñ-Ô-Ð-Ð-ð	.ð 	.r   c                 óò   — |                       |¦  «        r4|j        D ],}t          |t          ¦  «        r|                     |¦  «         Œ-|                     ¦   «         D ]}|                      ||¦  «         Œd S r   )ry   r   rm   rO   rh   r_   rl   ri   s       r   rl   z_AnyLocation.queryForStringList  sŠ   € Ø×Ò˜DÑ!Ô!ð 	)Ø”]ð )ð )�Ý˜a¥Ñ%Ô%ð )Ø×%Ò% aÑ(Ô(Ð(øØ—’‘”ð 	3ð 	3ˆAØ×#Ò# A zÑ2Ô2Ð2Ð2ð	3ð 	3r   N)r   r   r   r   r]   rt   ry   r{   r`   rc   rg   rl   r   r   r   ro   ro   ½   sž   € € € € € ð"ð "ð "ð
ð ð ð%ð %ð %ð

ð 
ð 
ðð ð ð4ð ð ðXð Xð Xð.ð .ð .ð3ð 3ð 3ð 3ð 3r   ro   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú
XPathQueryc                 ó†   — || _         ddlm}m}  | ||¦  «        ¦  «        } t	          |d¦  «        ¦   «         | _        d S )Nr   )ÚXPathParserÚXPathParserScannerÚXPATH)ÚqueryStrÚtwisted.words.xish.xpathparserr„   r…   ÚgetattrÚbaseLocation)r
   r‡   r„   r…   Úparsers        r   r   zXPathQuery.__init__  s\   € Ø ˆŒàRÐRÐRÐRÐRÐRÐRÐRà�Ð/Ð/°Ñ9Ô9Ñ:Ô:ˆØ4�G F¨GÑ4Ô4Ñ6Ô6ˆÔÐÐr   c                 ó4   — | j                              ¦   «         S r   )r‡   Ú__hash__rG   s    r   r�   zXPathQuery.__hash__  s   € ØŒ}×%Ò%Ñ'Ô'Ð'r   c                 ó6   — | j                              |¦  «        S r   )rŠ   r`   r	   s     r   r`   zXPathQuery.matches"  s   € ØÔ ×(Ò(¨Ñ.Ô.Ð.r   c                 ó|   — t          ¦   «         }| j                             ||¦  «         |                     ¦   «         S r   )r   rŠ   rc   Úgetvalue©r
   r   Úresults      r   rc   zXPathQuery.queryForString%  s4   € Ý‘”ˆØÔ×(Ò(¨¨vÑ6Ô6Ð6Ø�ŠÑ Ô Ð r   c                 ój   — g }| j                              ||¦  «         t          |¦  «        dk    rd S |S ©Nr   )rŠ   rg   Úlenr‘   s      r   rg   zXPathQuery.queryForNodes*  s;   € ØˆØÔ×'Ò'¨¨fÑ5Ô5Ð5Ýˆv‰;Œ;˜!ÒÐØ�4àˆMr   c                 ój   — g }| j                              ||¦  «         t          |¦  «        dk    rd S |S r”   )rŠ   rl   r•   r‘   s      r   rl   zXPathQuery.queryForStringList2  s;   € ØˆØÔ×,Ò,¨T°6Ñ:Ô:Ð:Ýˆv‰;Œ;˜!ÒÐØ�4àˆMr   N)	r   r   r   r   r�   r`   rc   rg   rl   r   r   r   r‚   r‚     sn   € € € € € ð7ð 7ð 7ð(ð (ð (ð/ð /ð /ð!ð !ð !ð
ð ð ðð ð ð ð r   r‚   c                 ó\   — | t           vrt          | ¦  «        t           | <   t           |          S r   )Ú__internedQueriesr‚   )ÚqueryStrings    r   ÚinternQueryrš   >  s,   € ØÕ+Ð+Ð+Ý)3°KÑ)@Ô)@Õ˜+Ñ&Ý˜[Ô)Ð)r   c                 óF   — t          | ¦  «                             |¦  «        S r   )rš   r`   ©Úxpathstrr   s     r   r`   r`   D  s   € Ý�xÑ Ô ×(Ò(¨Ñ.Ô.Ð.r   c                 óF   — t          | ¦  «                             |¦  «        S r   )rš   rl   rœ   s     r   rl   rl   H  s   € Ý�xÑ Ô ×3Ò3°DÑ9Ô9Ð9r   c                 óF   — t          | ¦  «                             |¦  «        S r   )rš   rc   rœ   s     r   rc   rc   L  s   € Ý�xÑ Ô ×/Ò/°Ñ5Ô5Ð5r   c                 óF   — t          | ¦  «                             |¦  «        S r   )rš   rg   rœ   s     r   rg   rg   P  s   € Ý�xÑ Ô ×.Ò.¨tÑ4Ô4Ð4r   N)r;   Úior   rO   r   r   r   r&   r4   rA   rC   rL   rQ   ro   r‚   r˜   rš   r`   rl   rc   rg   r   r   r   ú<module>r¢      s-  ððð ð Ð Ð Ð Ð Ð ðð ð ð ð �3ñ ô ð ð
)ð )ð )ð )ð )ñ )ô )ð )ðð ð ð ð ñ ô ð ð <ð <ð <ð <ð <ñ <ô <ð <ð !<ð !<ð !<ð !<ð !<ñ !<ô !<ð !<ðHð ð ð.ð .ð .ð .ð .ñ .ô .ð .ðð ð ð ð ñ ô ð ð;)ð ;)ð ;)ð ;)ð ;)ñ ;)ô ;)ð ;)ð|V3ð V3ð V3ð V3ð V3ñ V3ô V3ð V3ðr"ð "ð "ð "ð "ñ "ô "ð "ðJ Ð ð*ð *ð *ð/ð /ð /ð:ð :ð :ð6ð 6ð 6ð5ð 5ð 5ð 5ð 5r   