HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib64/python3.10/site-packages/lxml/__pycache__/cssselect.cpython-310.pyc
o

we$
�@s�dZddlmZddlmZzddlZWneyed��wejZej	Z	ej
Z
gd�ZGdd	�d	ej�Z
Gd
d�de
ej�Zdd
�Ze�d�Zde_eed<Gdd�dej�ZdS)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@seZdZdZdd�ZdS)�LxmlTranslatorzR
    A custom CSS selector to XPath translator with lxml-specific extensions.
    cCsF|��dgdgfvrtd|j��|jdj}|�d|�|����S)N�STRING�IDENTz9Expected a single string or ident for :contains(), got %rrz7contains(__lxml_internal_css:lower-case(string(.)), %s))�argument_typesr�	arguments�value�
add_condition�
xpath_literal�lower)�self�xpath�functionr�r�G/home/arjun/projects/env/lib/python3.10/site-packages/lxml/cssselect.py�xpath_contains_function!s����z&LxmlTranslator.xpath_contains_functionN)�__name__�
__module__�__qualname__�__doc__rrrrrr	sr	c@seZdZdZdS)�LxmlHTMLTranslatorz)
    lxml extensions + HTML support.
    N)rrrrrrrrr.srcCs|��S)N)r)�context�srrr�_make_lower_case4srzhttp://codespeak.net/lxml/css/�__lxml_internal_cssz
lower-casec@s"eZdZdZddd�Zdd�ZdS)	ra�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�xmlcCsX|dkrt�}n|dkrt�}n	|dkrtdd�}|�|�}tjj|||d�||_dS)Nr!�html�xhtmlT)r#)�
namespaces)r	r�css_to_xpathr�XPath�__init__�css)rr(r$�
translator�pathrrrr'Ws


zCSSSelector.__init__cCs(d|jjttt|���dd�|jfS)Nz<%s %s for %r>�)�	__class__r�hex�abs�idr()rrrr�__repr__bs
�zCSSSelector.__repr__)Nr!)rrrrr'r0rrrrr<s
r)r�
__future__r�r�	cssselect�external_cssselect�ImportErrorrrr�__all__�GenericTranslatorr	�HTMLTranslatorrr�FunctionNamespace�ns�prefixr&rrrrr�<module>s*��