/opt/cloudlinux/venv/lib/python3.11/site-packages/lxml
"""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. """ from __future__ import absolute_import from . import etree try: import cssselect as external_cssselect except ImportError: raise ImportError( 'cssselect does not seem to be installed. ' 'See http://packages.python.org/cssselect/') SelectorSyntaxError = external_cssselect.SelectorSyntaxError ExpressionError = external_cssselect.ExpressionError SelectorError = external_cssselect.SelectorError __all__ = ['SelectorSyntaxError', 'ExpressionError', 'SelectorError', 'CSSSelector'] class LxmlTranslator(external_cssselect.GenericTranslator): """ A custom CSS selector to XPath translator with lxml-specific extensions. """ def xpath_contains_function(self, xpath, function): # Defined there, removed in later drafts: # http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#content-selectors if function.argument_types() not in (['STRING'], ['IDENT']): raise ExpressionError( "Expected a single string or ident for :contains(), got %r" % function.arguments) value = function.arguments[0].value return xpath.add_condition( 'contains(__lxml_internal_css:lower-case(string(.)), %s)' % self.xpath_literal(value.lower())) class LxmlHTMLTranslator(LxmlTranslator, external_cssselect.HTMLTranslator): """ lxml extensions + HTML support. """ def _make_lower_case(context, s): return s.lower() ns = etree.FunctionNamespace('http://codespeak.net/lxml/css/') ns.prefix = '__lxml_internal_css' ns['lower-case'] = _make_lower_case class CSSSelector(etree.XPath): """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')] """ def __init__(self, css, namespaces=None, translator='xml'): if translator == 'xml': translator = LxmlTranslator() elif translator == 'html': translator = LxmlHTMLTranslator() elif translator == 'xhtml': translator = LxmlHTMLTranslator(xhtml=True) path = translator.css_to_xpath(css) etree.XPath.__init__(self, path, namespaces=namespaces) self.css = css def __repr__(self): return '<%s %s for %r>' % ( self.__class__.__name__, hex(abs(id(self)))[2:], self.css)
.
Edit
..
Edit
ElementInclude.py
Edit
__init__.py
Edit
__pycache__
Edit
_elementpath.cpython-311-x86_64-linux-gnu.so
Edit
_elementpath.py
Edit
apihelpers.pxi
Edit
builder.cpython-311-x86_64-linux-gnu.so
Edit
builder.py
Edit
classlookup.pxi
Edit
cleanup.pxi
Edit
cssselect.py
Edit
debug.pxi
Edit
docloader.pxi
Edit
doctestcompare.py
Edit
dtd.pxi
Edit
etree.cpython-311-x86_64-linux-gnu.so
Edit
etree.h
Edit
etree.pyx
Edit
etree_api.h
Edit
extensions.pxi
Edit
html
Edit
includes
Edit
isoschematron
Edit
iterparse.pxi
Edit
lxml.etree.h
Edit
lxml.etree_api.h
Edit
nsclasses.pxi
Edit
objectify.cpython-311-x86_64-linux-gnu.so
Edit
objectify.pyx
Edit
objectpath.pxi
Edit
parser.pxi
Edit
parsertarget.pxi
Edit
proxy.pxi
Edit
public-api.pxi
Edit
pyclasslookup.py
Edit
readonlytree.pxi
Edit
relaxng.pxi
Edit
sax.cpython-311-x86_64-linux-gnu.so
Edit
sax.py
Edit
saxparser.pxi
Edit
schematron.pxi
Edit
serializer.pxi
Edit
usedoctest.py
Edit
xinclude.pxi
Edit
xmlerror.pxi
Edit
xmlid.pxi
Edit
xmlschema.pxi
Edit
xpath.pxi
Edit
xslt.pxi
Edit
xsltext.pxi
Edit