U e @sdZddlmZz ddlZWnek r8edYnXejZejZejZdddd gZ Gd d d ej Z Gd d d e ej Z ddZedZde_eed<Gdd d ejZdS)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. )etreeNzPcssselect does not seem to be installed. See https://pypi.org/project/cssselect/SelectorSyntaxErrorExpressionError SelectorError CSSSelectorc@seZdZdZddZdS)LxmlTranslatorzR A custom CSS selector to XPath translator with lxml-specific extensions. cCsF|dgdgfkr"td|j|jdj}|d||S)NSTRINGZIDENTz9Expected a single string or ident for :contains(), got %rrz7contains(__lxml_internal_css:lower-case(string(.)), %s))Zargument_typesr argumentsvalue add_conditionZ xpath_literallower)selfZxpathfunctionr r>/opt/hc_python/lib64/python3.8/site-packages/lxml/cssselect.pyxpath_contains_function s  z&LxmlTranslator.xpath_contains_functionN)__name__ __module__ __qualname____doc__rrrrrrsrc@seZdZdZdS)LxmlHTMLTranslatorz) lxml extensions + HTML support. N)rrrrrrrrr-srcCs|S)N)r )contextsrrr_make_lower_case3srzhttp://codespeak.net/lxml/css/Z__lxml_internal_cssz lower-casecs*eZdZdZdfdd ZddZZS) raA CSS selector. Usage:: >>> from lxml import etree, cssselect >>> select = cssselect.CSSSelector("a tag > child") >>> root = etree.XML("TEXT") >>> [ 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(( ... '' ... 'blah' ... '') % rdfns) >>> [(el.tag, el.text) for el in select_ns(rdf)] [('{http://www.w3.org/1999/02/22-rdf-syntax-ns#}Description', 'blah')] NxmlcsV|dkrt}n"|dkr t}n|dkr2tdd}||}tj||d||_dS)NrhtmlxhtmlT)r) namespaces)rrZ css_to_xpathsuper__init__css)rr!rZ translatorpath __class__rrr Vs  zCSSSelector.__init__cCsd|jjtt||jfS)Nz<%s %x for %r>)r$rabsidr!)rrrr__repr__as  zCSSSelector.__repr__)Nr)rrrrr r' __classcell__rrr#rr;s )rrZ cssselectZexternal_cssselect ImportErrorrrr__all__ZGenericTranslatorrZHTMLTranslatorrrZFunctionNamespacensprefixZXPathrrrrrs(