B Uñ*W& ã@sÀdZddlmZddlmZy ddlZWnek rDedƒ‚YnXejZej Z ej Z ddd d gZ Gd d „d ej ƒZ Gd d„de ejƒZdd„Ze d¡Zde_eed<Gdd „d ejƒ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é)ÚetreeNzRcssselect does not seem to be installed. See http://packages.python.org/cssselect/ÚSelectorSyntaxErrorÚExpressionErrorÚ SelectorErrorÚ CSSSelectorc@seZdZdZdd„ZdS)ÚLxmlTranslatorzR A custom CSS selector to XPath translator with lxml-specific extensions. cCsF| ¡dgdgfkr"td|jƒ‚|jdj}| d| | ¡¡¡S)NÚSTRINGZIDENTz9Expected a single string or ident for :contains(), got %rrz7contains(__lxml_internal_css:lower-case(string(.)), %s))Zargument_typesrZ argumentsÚvalueZ add_conditionZ xpath_literalÚlower)ÚselfZxpathÚfunctionr ©rúA/opt/alt/python37/lib64/python3.7/site-packages/lxml/cssselect.pyÚxpath_contains_function!s  z&LxmlTranslator.xpath_contains_functionN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrr sr c@seZdZdZdS)ÚLxmlHTMLTranslatorz) lxml extensions + HTML support. N)rrrrrrrrr.srcCs| ¡S)N)r )ÚcontextÚsrrrÚ_make_lower_case4srzhttp://codespeak.net/lxml/css/Z__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("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')] NÚxmlcCsX|dkrtƒ}n"|dkr tƒ}n|dkr2tdd�}| |¡}tjj|||d�||_dS)NrZhtmlÚxhtmlT)r)Ú namespaces)r rZ css_to_xpathrÚXPathÚ__init__Úcss)r rrZ translatorÚpathrrrrWs  zCSSSelector.__init__cCs(d|jjttt|ƒƒƒdd…|jfS)Nz<%s %s for %r>é)Ú __class__rÚhexÚabsÚidr)r rrrÚ__repr__bszCSSSelector.__repr__)Nr)rrrrrr&rrrrr<s )rZ __future__rÚrZ cssselectZexternal_cssselectÚ ImportErrorrrrÚ__all__ZGenericTranslatorr ZHTMLTranslatorrrZFunctionNamespaceÚnsÚprefixrrrrrrÚs&