
    Ng                     .   d Z ddlmZ 	 ddlZn# e$ r  ed          w xY w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dS )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                       e Zd ZdZd ZdS )LxmlTranslatorzR
    A custom CSS selector to XPath translator with lxml-specific extensions.
    c                    |                                 dgdgfvrt          d|j        z            |j        d         j        }|                    d|                     |                                          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       J/var/www/html/ai-engine/env/lib/python3.11/site-packages/lxml/cssselect.pyxpath_contains_functionz&LxmlTranslator.xpath_contains_function    s     ""$$hZ',CCC!K$%& & & "1%+""E  //01 1 	1    N)__name__
__module____qualname____doc__r    r   r   r
   r
      s-         
1 
1 
1 
1 
1r   r
   c                       e Zd ZdZdS )LxmlHTMLTranslatorz)
    lxml extensions + HTML support.
    N)r   r   r   r   r   r   r   r    r    -   s           r   r    c                 *    |                                 S )N)r   )contextss     r   _make_lower_caser$   3   s    7799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')]

    Nxmlc                    |dk    rt                      }n+|dk    rt                      }n|dk    rt          d          }|                    |          }t                                          ||           || _        d S )Nr'   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    '))JJ6!!+--JJ7""+$777J&&s++*555r   c                 d    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   s0    N#4MMH#  	r   )Nr'   )r   r   r   r   r.   r6   __classcell__)r2   s   @r   r   r   ;   sV         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***** 3 3 3
+	23 3 33 )< $4"0  1 1 1 1 1'9 1 1 1"    );)J      U=>>!	#< * * * * *%+ * * * * *s     