
    h                     T   S r SSKJr   SSKr\R                  r\R                  r\R                  r/ SQr	 " S S\R                  5      r " S	 S
\\R                  5      rS r\R                  " S5      rS\l        \\S'    " S S\R$                  5      rg! \ a	    \" S5      ef = f)zCSS 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                       \ rS rSrSrS rSrg)LxmlTranslator   zJ
A custom CSS selector to XPath translator with lxml-specific extensions.
c                     UR                  5       S/S/4;  a  [        SUR                  -  5      eUR                  S   R                  nUR	                  SU R                  UR                  5       5      -  5      $ )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       @/var/www/html/env/lib/python3.13/site-packages/lxml/cssselect.pyxpath_contains_function&LxmlTranslator.xpath_contains_function    s     ""$hZ',CC!K$$%& & ""1%++""E  /01 	1     N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r   r   r   r
   r
      s    
1r   r
   c                       \ rS rSrSrSrg)LxmlHTMLTranslator-   z!
lxml extensions + HTML support.
r   N)r   r   r   r    r!   r"   r   r   r   r$   r$   -   s    r   r$   c                 "    UR                  5       $ )N)r   )contextss     r   _make_lower_caser)   3   s    779r   zhttp://codespeak.net/lxml/css/__lxml_internal_cssz
lower-casec                   6   ^  \ rS rSrSrSU 4S jjrS rSrU =r$ )r   ;   aN  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                    > US:X  a  [        5       nO US:X  a  [        5       nOUS:X  a	  [        SS9nUR                  U5      n[        TU ]  XBS9  Xl        g )NxmlhtmlxhtmlT)r0   )
namespaces)r
   r$   css_to_xpathsuper__init__css)r   r5   r1   
translatorpath	__class__s        r   r4   CSSSelector.__init__V   sZ    ')J6!+-J7"+$7J&&s+5r   c                 r    SU R                   R                  [        [        U 5      5      U R                  4-  $ )Nz<%s %x for %r>)r8   r   absidr5   )r   s    r   __repr__CSSSelector.__repr__a   s3    NN##4MHH#  	r   )r5   )Nr.   )	r   r   r   r    r!   r4   r=   r"   __classcell__)r8   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>rK      s    3* )<< $44"001'99 1");)J)J  =>!	#< *%++ *]  3
	23 33s   B B'