Ë
    [Rðiê  ã                   óR  — d 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.
é   )Úetreeé    NzPcssselect 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       úI/var/www/html/Extract/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$   3   s   € Ø�7‰7‹9Ðr   zhttp://codespeak.net/lxml/css/Ú__lxml_internal_cssz
lower-casec                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )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')]

    c                 óº   •— |dk(  rt        «       }n!|dk(  rt        «       }n|dk(  rt        d¬«      }|j                  |«      }t        ‰| �  ||¬«       || _        y )NÚxmlÚhtmlÚxhtmlT)r*   )Ú
namespaces)r
   r    Úcss_to_xpathÚsuperÚ__init__Úcss)r   r/   r+   Ú
translatorÚpathÚ	__class__s        €r   r.   zCSSSelector.__init__V   s^   ø€ Ø˜ÒÜ'Ó)‰JØ˜6Ò!Ü+Ó-‰JØ˜7Ò"Ü+°$Ô7ˆJØ×&Ñ& sÓ+ˆÜ‰Ñ˜¨*ÐÔ5Øˆ�r   c                 ór   — d| j                   j                  t        t        | «      «      | j                  fz  S )Nz<%s %x for %r>)r2   r   ÚabsÚidr/   )r   s    r   Ú__repr__zCSSSelector.__repr__a   s3   € ØØ�N‰N×#Ñ#Ü”�4“‹MØ�H‰Hð#ñ ð 	r   )Nr(   )r   r   r   r   r.   r6   Ú__classcell__)r2   s   @r   r   r   ;   s   ø„ ñõ4	ör   r   )r   Ú r   Ú	cssselectÚexternal_cssselectÚImportErrorr   r   r   Ú__all__ÚGenericTranslatorr
   ÚHTMLTranslatorr    r$   ÚFunctionNamespaceÚnsÚprefixÚXPathr   r   r   r   ú<module>rC      sÉ   ðñõ ð3Û*ð )×<Ñ<Ð Ø$×4Ñ4€Ø"×0Ñ0€ò€ô1Ð'×9Ñ9ô 1ô"˜Ð);×)JÑ)Jô òð €U×ÑÐ=Ó>€Ø!€„	Ø#€€<Ñ ô*�%—+‘+õ *øð] ò 3Ù
ð	2ó3ð 3ð3ús   ŠB ÂB&