Ë
     2Úi$  ã                   ó^  — d Z ddlmZ ddlmZ 	 ddlZej                  Zej                  Z	ej                  Z
g d¢Z G d„ d	ej                  «      Z G d
„ deej                  «      Zd„ Z ej"                  d«      Zde_        eed<    G d„ dej(                  «      Zy# e$ r	  ed«      ‚w xY w)zÄCSS Selectors based on XPath.

This module supports selecting XML/HTML tags based on CSS selectors.
See the `CSSSelector` class for details.

This is a thin wrapper around cssselect 0.7 or later.
é    )Úabsolute_importé   )ÚetreeNzPcssselect does not seem to be installed. See https://pypi.org/project/cssselect/)ÚSelectorSyntaxErrorÚExpressionErrorÚSelectorErrorÚCSSSelectorc                   ó   — e Zd ZdZd„ Zy)ÚLxmlTranslatorzR
    A custom CSS selector to XPath translator with lxml-specific extensions.
    c                 óò   — |j                  «       dgdgfvrt        d|j                  z  «      ‚|j                  d   j                  }|j	                  d| j                  |j                  «       «      z  «      S )NÚSTRINGÚIDENTz9Expected a single string or ident for :contains(), got %rr   z7contains(__lxml_internal_css:lower-case(string(.)), %s))Úargument_typesr   Ú	argumentsÚvalueÚadd_conditionÚxpath_literalÚlower)ÚselfÚxpathÚfunctionr   s       úE/var/www/html/acx/venv/lib/python3.12/site-packages/lxml/cssselect.pyÚxpath_contains_functionz&LxmlTranslator.xpath_contains_function!   sƒ   € ð ×"Ñ"Ó$¨h¨Z¸'¸Ð,CÑCÜ!ØKØ×$Ñ$ñ%ó&ð &ð ×"Ñ" 1Ñ%×+Ñ+ˆØ×"Ñ"ØEØ× Ñ  §¡£Ó/ñ0ó1ð 	1ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r      s   „ ñó
1r   r   c                   ó   — e Zd ZdZy)ÚLxmlHTMLTranslatorz)
    lxml extensions + HTML support.
    N)r   r   r   r   r   r   r   r!   r!   .   s   „ òr   r!   c                 ó"   — |j                  «       S )N)r   )ÚcontextÚss     r   Ú_make_lower_caser%   4   s   € Ø�7‰7‹9Ðr   zhttp://codespeak.net/lxml/css/Ú__lxml_internal_cssz
lower-casec                   ó   — e Zd ZdZdd„Zd„ Zy)r	   a–  A CSS selector.

    Usage::

        >>> from lxml import etree, cssselect
        >>> select = cssselect.CSSSelector("a tag > child")

        >>> root = etree.XML("<a><b><c/><tag><child>TEXT</child></tag></b></a>")
        >>> [ el.tag for el in select(root) ]
        ['child']

    To use CSS namespaces, you need to pass a prefix-to-namespace
    mapping as ``namespaces`` keyword argument::

        >>> rdfns = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
        >>> select_ns = cssselect.CSSSelector('root > rdf|Description',
        ...                                   namespaces={'rdf': rdfns})

        >>> rdf = etree.XML((
        ...     '<root xmlns:rdf="%s">'
        ...       '<rdf:Description>blah</rdf:Description>'
        ...     '</root>') % rdfns)
        >>> [(el.tag, el.text) for el in select_ns(rdf)]
        [('{http://www.w3.org/1999/02/22-rdf-syntax-ns#}Description', 'blah')]

    Nc                 óÚ   — |dk(  rt        «       }n!|dk(  rt        «       }n|dk(  rt        d¬«      }|j                  |«      }t        j                  j                  | ||¬«       || _        y )NÚxmlÚhtmlÚxhtmlT)r+   )Ú
namespaces)r   r!   Úcss_to_xpathr   ÚXPathÚ__init__Úcss)r   r0   r,   Ú
translatorÚpaths        r   r/   zCSSSelector.__init__W   sd   € Ø˜ÒÜ'Ó)‰JØ˜6Ò!Ü+Ó-‰JØ˜7Ò"Ü+°$Ô7ˆJØ×&Ñ& sÓ+ˆÜ�‰×Ñ˜T 4°JÐÔ?Øˆ�r   c           
      ó’   — d| j                   j                  ›dt        t        t	        | «      «      «      dd  ›d| j
                  ›d�S )Nú<ú é   z for ú>)Ú	__class__r   ÚhexÚabsÚidr0   )r   s    r   Ú__repr__zCSSSelector.__repr__b   s7   � à�N‰N×#Ó#Ü””B�t“H“Ó˜q˜rÒ"Ø�H‹Hðð 	r   )Nr)   )r   r   r   r   r/   r<   r   r   r   r	   r	   <   s   „ ñó4	ór   r	   )r   Ú
__future__r   Ú r   Ú	cssselectÚexternal_cssselectÚImportErrorr   r   r   Ú__all__ÚGenericTranslatorr   ÚHTMLTranslatorr!   r%   ÚFunctionNamespaceÚnsÚprefixr.   r	   r   r   r   ú<module>rH      sÌ   ðñõ 'å ð3Û*ð )×<Ñ<Ð Ø$×4Ñ4€Ø"×0Ñ0€ò€ô1Ð'×9Ñ9ô 1ô"˜Ð);×)JÑ)Jô òð €U×ÑÐ=Ó>€Ø!€„	Ø#€€<Ñ ô*�%—+‘+õ *øð] ò 3Ù
ð	2ó3ð 3ð3ús   �B ÂB,