
    ,h                     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)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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       P/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/lxml/cssselect.pyxpath_contains_functionz&LxmlTranslator.xpath_contains_function    s     ""$hZ',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    779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"+$7J&&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    NN##4MHH#  	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3s   B B&