lxml changelog
==============
+4.6.4 (2021-11-01)
+==================
+
+Features added
+--------------
+
+* GH#317: A new property ``system_url`` was added to DTD entities.
+ Patch by Thirdegree.
+
+* GH#314: The ``STATIC_*`` variables in ``setup.py`` can now be passed via env vars.
+ Patch by Isaac Jurado.
+
+
4.6.3 (2021-03-21)
==================
--- /dev/null
+Copyright (c) 2004 Infrae. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. Neither the name of Infrae nor the names of its contributors may
+ be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
TESTFLAGS=-p -v
TESTOPTS=
SETUPFLAGS=
-LXMLVERSION:=$(shell sed -ne '/__version__/s|.*__version__\s*=\s*"\([^"]*\)".*|\1|p' src/lxml/__init__.py)
+LXMLVERSION:=$(shell $(PYTHON3) -c 'import re; print(re.findall(r"__version__\s*=\s*\"([^\"]+)\"", open("src/lxml/__init__.py").read())[0])' )
PARALLEL?=$(shell $(PYTHON) -c 'import sys; print("-j7" if sys.version_info >= (3, 5) else "")' )
PARALLEL3?=$(shell $(PYTHON3) -c 'import sys; print("-j7" if sys.version_info >= (3, 5) else "")' )
CYTHON_WITH_COVERAGE?=$(shell $(PYTHON) -c 'import Cython.Coverage; import sys; assert not hasattr(sys, "pypy_version_info")' >/dev/null 2>/dev/null && echo " --coverage" || true)
CYTHON3_WITH_COVERAGE?=$(shell $(PYTHON3) -c 'import Cython.Coverage; import sys; assert not hasattr(sys, "pypy_version_info")' >/dev/null 2>/dev/null && echo " --coverage" || true)
+PYTHON_BUILD_VERSION ?= *
MANYLINUX_LIBXML2_VERSION=2.9.10
MANYLINUX_LIBXSLT_VERSION=1.1.34
MANYLINUX_CFLAGS=-O3 -g1 -pipe -fPIC -flto
MANYLINUX_LDFLAGS=-flto
-MANYLINUX_IMAGE_X86_64=quay.io/pypa/manylinux1_x86_64
-MANYLINUX_IMAGE_686=quay.io/pypa/manylinux1_i686
-MANYLINUX_IMAGE_AARCH64=quay.io/pypa/manylinux2014_aarch64
-AARCH64_ENV=-e AR="/opt/rh/devtoolset-9/root/usr/bin/gcc-ar" \
- -e NM="/opt/rh/devtoolset-9/root/usr/bin/gcc-nm" \
- -e RANLIB="/opt/rh/devtoolset-9/root/usr/bin/gcc-ranlib"
+MANYLINUX_IMAGES= \
+ manylinux1_x86_64 \
+ manylinux1_i686 \
+ manylinux_2_24_x86_64 \
+ manylinux_2_24_i686 \
+ manylinux_2_24_aarch64 \
+ manylinux_2_24_ppc64le \
+ manylinux_2_24_s390x \
+ musllinux_1_1_x86_64
.PHONY: all inplace inplace3 rebuild-sdist sdist build require-cython wheel_manylinux wheel
qemu-user-static:
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
-wheel_manylinux: wheel_manylinux64 wheel_manylinux32 wheel_manylinuxaarch64
-wheel_manylinuxaarch64: qemu-user-static
+wheel_manylinux: $(addprefix wheel_,$(MANYLINUX_IMAGES))
+$(addprefix wheel_,$(filter-out %_x86_64, $(filter-out %_i686, $(MANYLINUX_IMAGES)))): qemu-user-static
-wheel_manylinux32 wheel_manylinux64 wheel_manylinuxaarch64: dist/lxml-$(LXMLVERSION).tar.gz
+wheel_%: dist/lxml-$(LXMLVERSION).tar.gz
time docker run --rm -t \
-v $(shell pwd):/io \
- $(if $(patsubst %aarch64,,$@),,$(AARCH64_ENV)) \
+ -e AR=gcc-ar \
+ -e NM=gcc-nm \
+ -e RANLIB=gcc-ranlib \
-e CFLAGS="$(MANYLINUX_CFLAGS) $(if $(patsubst %aarch64,,$@),-march=core2,-march=armv8-a -mtune=cortex-a72)" \
-e LDFLAGS="$(MANYLINUX_LDFLAGS)" \
-e LIBXML2_VERSION="$(MANYLINUX_LIBXML2_VERSION)" \
-e LIBXSLT_VERSION="$(MANYLINUX_LIBXSLT_VERSION)" \
- -e WHEELHOUSE=wheelhouse_$(subst wheel_,,$@) \
- $(if $(filter $@,wheel_manylinuxaarch64),$(MANYLINUX_IMAGE_AARCH64),$(if $(patsubst %32,,$@),$(MANYLINUX_IMAGE_X86_64),$(MANYLINUX_IMAGE_686))) \
+ -e PYTHON_BUILD_VERSION="$(PYTHON_BUILD_VERSION)" \
+ -e WHEELHOUSE=$(subst wheel_,wheelhouse/,$@) \
+ quay.io/pypa/$(subst wheel_,,$@) \
bash /io/tools/manylinux/build-wheels.sh /io/$<
wheel:
valgrind --tool=memcheck --leak-check=full --num-callers=30 --suppressions=valgrind-python.supp \
$(PYTHON) test.py
+fuzz: clean
+ $(MAKE) \
+ CC="/usr/bin/clang" \
+ CFLAGS="$$CFLAGS -fsanitize=fuzzer-no-link -g2" \
+ CXX="/usr/bin/clang++" \
+ CXXFLAGS="-fsanitize=fuzzer-no-link" \
+ inplace3
+ $(PYTHON3) src/lxml/tests/fuzz_xml_parse.py
+
gdb_test_inplace: inplace
@echo "file $(PYTHON)\nrun test.py" > .gdb.command
gdb -x .gdb.command -d src -d src/lxml
Metadata-Version: 2.1
Name: lxml
-Version: 4.6.3
+Version: 4.6.4
Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
Home-page: https://lxml.de/
Author: lxml dev team
Maintainer: lxml dev team
Maintainer-email: lxml-dev@lxml.de
License: BSD
-Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It
- provides safe and convenient access to these libraries using the ElementTree
- API.
-
- It extends the ElementTree API significantly to offer support for XPath,
- RelaxNG, XML Schema, XSLT, C14N and much more.
-
- To contact the project, go to the `project home page
- <https://lxml.de/>`_ or see our bug tracker at
- https://launchpad.net/lxml
-
- In case you want to use the current in-development version of lxml,
- you can get it from the github repository at
- https://github.com/lxml/lxml . Note that this requires Cython to
- build the sources, see the build instructions on the project home
- page. To the same end, running ``easy_install lxml==dev`` will
- install lxml from
- https://github.com/lxml/lxml/tarball/master#egg=lxml-dev if you have
- an appropriate version of Cython installed.
-
-
- After an official release of a new stable series, bug fixes may become
- available at
- https://github.com/lxml/lxml/tree/lxml-4.6 .
- Running ``easy_install lxml==4.6bugfix`` will install
- the unreleased branch state from
- https://github.com/lxml/lxml/tarball/lxml-4.6#egg=lxml-4.6bugfix
- as soon as a maintenance branch has been established. Note that this
- requires Cython to be installed at an appropriate version for the build.
-
- 4.6.3 (2021-03-21)
- ==================
-
- Bugs fixed
- ----------
-
- * A vulnerability (CVE-2021-28957) was discovered in the HTML Cleaner by Kevin Chung,
- which allowed JavaScript to pass through. The cleaner now removes the HTML5
- ``formaction`` attribute.
-
-
-
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: C
Classifier: Operating System :: OS Independent
Classifier: Topic :: Text Processing :: Markup :: HTML
Classifier: Topic :: Text Processing :: Markup :: XML
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*
+Provides-Extra: source
Provides-Extra: cssselect
Provides-Extra: html5
Provides-Extra: htmlsoup
-Provides-Extra: source
+License-File: LICENSE.txt
+License-File: LICENSES.txt
+
+lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It
+provides safe and convenient access to these libraries using the ElementTree
+API.
+
+It extends the ElementTree API significantly to offer support for XPath,
+RelaxNG, XML Schema, XSLT, C14N and much more.
+
+To contact the project, go to the `project home page
+<https://lxml.de/>`_ or see our bug tracker at
+https://launchpad.net/lxml
+
+In case you want to use the current in-development version of lxml,
+you can get it from the github repository at
+https://github.com/lxml/lxml . Note that this requires Cython to
+build the sources, see the build instructions on the project home
+page. To the same end, running ``easy_install lxml==dev`` will
+install lxml from
+https://github.com/lxml/lxml/tarball/master#egg=lxml-dev if you have
+an appropriate version of Cython installed.
+
+
+After an official release of a new stable series, bug fixes may become
+available at
+https://github.com/lxml/lxml/tree/lxml-4.6 .
+Running ``easy_install lxml==4.6bugfix`` will install
+the unreleased branch state from
+https://github.com/lxml/lxml/tarball/lxml-4.6#egg=lxml-4.6bugfix
+as soon as a maintenance branch has been established. Note that this
+requires Cython to be installed at an appropriate version for the build.
+
+4.6.4 (2021-11-01)
+==================
+
+Features added
+--------------
+
+* GH#317: A new property ``system_url`` was added to DTD entities.
+ Patch by Thirdegree.
+
+* GH#314: The ``STATIC_*`` variables in ``setup.py`` can now be passed via env vars.
+ Patch by Isaac Jurado.
+
+
+
+
as well as commercial consulting, customisations and trainings on lxml and
fast Python XML processing.
+Note that we are not accepting donations in crypto currencies.
+Much of the development and hosting for lxml is done in a carbon-neutral way
+or with compensated and very low emissions.
+Crypto currencies do not fit into that ambition.
+
.. |Donate| image:: https://lxml.de/paypal_btn_donateCC_LG.png
:width: 160
:height: 47
Project income report
---------------------
+* Total project income in 2020: EUR 6065,86 (506.49 € / month)
+
+ - Tidelift: EUR 4064.77
+ - Paypal: EUR 1401.09
+ - other: EUR 600.00
+
* Total project income in 2019: EUR 717.52 (59.79 € / month)
- Tidelift: EUR 360.30
import copy
+from io import BytesIO
from itertools import *
import benchbase
from benchbase import (with_attributes, with_text, onlylib,
- serialized, children, nochange, BytesIO)
+ serialized, children, nochange)
TEXT = "some ASCII text"
UTEXT = u"some klingon: \F8D2"
-import sys, re, string, time, copy, gc
+import sys, re, string, copy, gc
from itertools import *
import time
if import_lxml:
from lxml import etree
_etrees.append(etree)
+ print("Using lxml %s (with libxml2 %s)" % (
+ etree.__version__, '.'.join(map(str, etree.LIBXML_VERSION))))
try:
sys.argv.remove('-fel')
print("No library to test. Exiting.")
sys.exit(1)
+ print("Running benchmarks in Python %s" % (sys.version_info,))
+
print("Preparing test suites and trees ...")
selected = set( sys.argv[1:] )
benchmark_suites, benchmarks = \
-import os, re, sys, subprocess
+import os, re, sys, subprocess, platform
import tarfile
from distutils import log, version
from contextlib import closing
if release_path in filename
]
- arch = "win64" if sys.maxsize > 2**32 else "win32"
+ if platform.machine() == 'ARM64':
+ arch = "win-arm64"
+ elif sys.maxsize > 2**32:
+ arch = "win64"
+ else:
+ arch = "win32"
+
if sys.version_info < (3, 5):
arch = 'vs2008.' + arch
if not has_current_lib("libxml2", libxml2_dir):
cmmi(libxml2_configure_cmd, libxml2_dir, multicore, **call_setup)
+ # Fix up libxslt configure script (needed up to and including 1.1.34)
+ # https://gitlab.gnome.org/GNOME/libxslt/-/commit/90c34c8bb90e095a8a8fe8b2ce368bd9ff1837cc
+ with open(os.path.join(libxslt_dir, "configure"), 'rb') as f:
+ config_script = f.read()
+ if b' --libs print ' in config_script:
+ config_script = config_script.replace(b' --libs print ', b' --libs ')
+ with open(os.path.join(libxslt_dir, "configure"), 'wb') as f:
+ f.write(config_script)
+
# build libxslt
libxslt_configure_cmd = configure_cmd + [
'--without-python',
large files with lxml`_.
.. _`lxml.etree Tutorial`: tutorial.html
-.. _`tutorial for ElementTree`: https://effbot.org/zone/element.htm
+.. _`tutorial for ElementTree`: https://web.archive.org/web/20200720191942/https://effbot.org/zone/element.htm
.. _`extended etree API`: api.html
.. _`objectify documentation`: objectify.html
-.. _`Python XML processing with lxml`: http://www.nmt.edu/tcc/help/pubs/pylxml/
-.. _`element library`: https://effbot.org/zone/element-lib.htm
+.. _`Python XML processing with lxml`: https://web.archive.org/web/20190522191656/http://infohost.nmt.edu/tcc/help/pubs/pylxml/web/index.html
+.. _`element library`: https://web.archive.org/web/20200703234431/http://www.effbot.org/zone/element-lib.htm
.. _`parsing large files with lxml`: http://www.ibm.com/developerworks/xml/library/x-hiperfparse/
The `generated API documentation`_ is a comprehensive API reference
for the lxml package.
-.. _`ElementTree API`: https://effbot.org/zone/element-index.htm
+.. _`ElementTree API`: https://web.archive.org/web/20200703191710/http://www.effbot.org/zone/element-index.htm
.. _`the web page`: https://lxml.de/#documentation
.. _`generated API documentation`: api/index.html
How can I specify a default namespace for XPath expressions?
------------------------------------------------------------
-You can't. In XPath, there is no such thing as a default namespace. Just use
-an arbitrary prefix and let the namespace dictionary of the XPath evaluators
+You can't. In XPath 1.0, there is no such thing as a default namespace. Just
+use an arbitrary prefix and let the namespace dictionary of the XPath evaluators
map it to your namespace. See also the question above.
without going through the Python API.
The API is described in the file `etreepublic.pxd`_, which is directly
-c-importable by extension modules implemented in Pyrex_ or Cython_.
+c-importable by extension modules implemented in Cython_.
.. _`etreepublic.pxd`: https://github.com/lxml/lxml/blob/master/src/lxml/includes/etreepublic.pxd
-.. _Cython: http://cython.org
-.. _Pyrex: http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/
+.. _Cython: https://cython.org
.. contents::
..
----------------------------------
This is the easiest way of extending lxml at the C level. A Cython_
-(or Pyrex_) module should start like this::
+module should start like this::
# My Cython extension
not. This means that a comment text "text" that ElementTree serializes as
"<!-- text -->" will become "<!--text-->" in lxml.
-* When the string '*' is used as tag filter in the ``Element.getiterator()``
- method, ElementTree returns all elements in the tree, including comments and
- processing instructions. lxml.etree only returns real Elements, i.e. tree
- nodes that have a string tag name. Without a filter, both libraries iterate
- over all nodes.
+* When the string ``'*'`` is used as tag filter in the ``Element.iter()`` and
+ ``.find*()`` methods, ElementTree returns all elements in the tree, including
+ comments and processing instructions. lxml.etree only returns real Elements,
+ i.e. tree nodes that have a string tag name. Without a filter, both libraries
+ iterate over all nodes.
Note that currently only lxml.etree supports passing the ``Element`` factory
function as filter to select only Elements. Both libraries support passing
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>lxml FAQ - Frequently Asked Questions</title>
<meta content="Frequently Asked Questions about lxml (FAQ)" name="description" />
<meta content="lxml, lxml.etree, FAQ, frequently asked questions" name="keywords" />
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="lxml-faq-frequently-asked-questions">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu current" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">lxml FAQ - Frequently Asked Questions</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu current" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">lxml FAQ - Frequently Asked Questions</h1>
<p>Frequently asked questions on lxml. See also the notes on <a class="reference external" href="compatibility.html">compatibility</a> to
<a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree</a>.</p>
(just as any good documentation), it provides an overview of the most
important concepts in <tt class="docutils literal">lxml.etree</tt>. If you want to help out,
improving the tutorial is a very good place to start.</p>
-<p>There is also a <a class="reference external" href="https://effbot.org/zone/element.htm">tutorial for ElementTree</a> which works for
+<p>There is also a <a class="reference external" href="https://web.archive.org/web/20200720191942/https://effbot.org/zone/element.htm">tutorial for ElementTree</a> which works for
<tt class="docutils literal">lxml.etree</tt>. The documentation of the <a class="reference external" href="api.html">extended etree API</a> also
-contains many examples for <tt class="docutils literal">lxml.etree</tt>. Fredrik Lundh's <a class="reference external" href="https://effbot.org/zone/element-lib.htm">element
+contains many examples for <tt class="docutils literal">lxml.etree</tt>. Fredrik Lundh's <a class="reference external" href="https://web.archive.org/web/20200703234431/http://www.effbot.org/zone/element-lib.htm">element
library</a> contains a lot of nice recipes that show how to solve common
tasks in ElementTree and lxml.etree. To learn using
<tt class="docutils literal">lxml.objectify</tt>, read the <a class="reference external" href="objectify.html">objectify documentation</a>.</p>
-<p>John Shipman has written another tutorial called <a class="reference external" href="http://www.nmt.edu/tcc/help/pubs/pylxml/">Python XML
+<p>John Shipman has written another tutorial called <a class="reference external" href="https://web.archive.org/web/20190522191656/http://infohost.nmt.edu/tcc/help/pubs/pylxml/web/index.html">Python XML
processing with lxml</a> that contains lots of examples. Liza Daly
wrote a nice article about high-performance aspects when <a class="reference external" href="http://www.ibm.com/developerworks/xml/library/x-hiperfparse/">parsing
large files with lxml</a>.</p>
<h2>Where can I find more documentation about lxml?</h2>
<p>There is a lot of documentation on the web and also in the Python
standard library documentation, as lxml implements the well-known
-<a class="reference external" href="https://effbot.org/zone/element-index.htm">ElementTree API</a> and tries to follow its documentation as closely as
-possible. The recipes in Fredrik Lundh's <a class="reference external" href="https://effbot.org/zone/element-lib.htm">element library</a> are
+<a class="reference external" href="https://web.archive.org/web/20200703191710/http://www.effbot.org/zone/element-index.htm">ElementTree API</a> and tries to follow its documentation as closely as
+possible. The recipes in Fredrik Lundh's <a class="reference external" href="https://web.archive.org/web/20200703234431/http://www.effbot.org/zone/element-lib.htm">element library</a> are
generally worth taking a look at. There are a couple of issues where
lxml cannot keep up compatibility. They are described in the
<a class="reference external" href="compatibility.html">compatibility</a> documentation.</p>
contained text, child Elements and a tail text. This means that whenever you
serialise an Element, you will get all parts of that Element:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<root><tag>text<child/></tag>tail</root>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
<span class="go"><tag>text<child/></tag>tail</span>
</pre></div>
<p>Here is an example that shows why not serialising the tail would be
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"test"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s2">"TEXT"</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go"><test>TEXT</test></span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">tail</span> <span class="o">=</span> <span class="s2">"TAIL"</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go"><test>TEXT</test>TAIL</span>
-<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">tail</span> <span class="o">=</span> <span class="bp">None</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">tail</span> <span class="o">=</span> <span class="kc">None</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go"><test>TEXT</test></span>
</pre></div>
<p>Just imagine a Python list where you append an item and it doesn't
<div class="syntax"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
-<span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'Python'</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">))</span>
-<span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'lxml.etree'</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LXML_VERSION</span><span class="p">))</span>
-<span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'libxml used'</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LIBXML_VERSION</span><span class="p">))</span>
-<span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'libxml compiled'</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LIBXML_COMPILED_VERSION</span><span class="p">))</span>
-<span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'libxslt used'</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LIBXSLT_VERSION</span><span class="p">))</span>
-<span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'libxslt compiled'</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LIBXSLT_COMPILED_VERSION</span><span class="p">))</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'Python'</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">))</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'lxml.etree'</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LXML_VERSION</span><span class="p">))</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'libxml used'</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LIBXML_VERSION</span><span class="p">))</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'libxml compiled'</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LIBXML_COMPILED_VERSION</span><span class="p">))</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'libxslt used'</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LIBXSLT_VERSION</span><span class="p">))</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%-20s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s1">'libxslt compiled'</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LIBXSLT_COMPILED_VERSION</span><span class="p">))</span>
</pre></div>
<p>If you can figure that the problem is not in lxml but in the
underlying libxml2 or libxslt, you can ask right on the respective
for trees constructed element-by-element, so no problems should be expected
here. For parsed trees, a good way to assure that no conflicting whitespace
is left in the tree is the <tt class="docutils literal">remove_blank_text</tt> option:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
</pre></div>
<p>This will allow the parser to drop blank text nodes when constructing the
ignore, or remove the ignorable whitespace manually after parsing,
e.g. by setting all tail text to None:</p>
<div class="syntax"><pre><span></span><span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">():</span>
- <span class="n">element</span><span class="o">.</span><span class="n">tail</span> <span class="o">=</span> <span class="bp">None</span>
+ <span class="n">element</span><span class="o">.</span><span class="n">tail</span> <span class="o">=</span> <span class="kc">None</span>
</pre></div>
<p>Fredrik Lundh also has a Python-level function for indenting XML by
appending whitespace to tags. It can be found on his <a class="reference external" href="http://effbot.org/zone/element-lib.htm#prettyprint">element library
<h1>XPath and Document Traversal</h1>
<div class="section" id="what-are-the-findall-and-xpath-methods-on-element-tree">
<h2>What are the <tt class="docutils literal">findall()</tt> and <tt class="docutils literal">xpath()</tt> methods on Element(Tree)?</h2>
-<p><tt class="docutils literal">findall()</tt> is part of the original <a class="reference external" href="https://effbot.org/zone/element-index.htm">ElementTree API</a>. It supports a
+<p><tt class="docutils literal">findall()</tt> is part of the original <a class="reference external" href="https://web.archive.org/web/20200703191710/http://www.effbot.org/zone/element-index.htm">ElementTree API</a>. It supports a
<a class="reference external" href="http://effbot.org/zone/element-xpath.htm">simple subset of the XPath language</a>, without predicates, conditions and
other advanced features. It is very handy for finding specific tags in a
tree. Another important difference is namespace handling, which uses the
</div>
<div class="section" id="how-can-i-specify-a-default-namespace-for-xpath-expressions">
<h2>How can I specify a default namespace for XPath expressions?</h2>
-<p>You can't. In XPath, there is no such thing as a default namespace. Just use
-an arbitrary prefix and let the namespace dictionary of the XPath evaluators
+<p>You can't. In XPath 1.0, there is no such thing as a default namespace. Just
+use an arbitrary prefix and let the namespace dictionary of the XPath evaluators
map it to your namespace. See also the question above.</p>
</div>
<div class="section" id="how-can-i-modify-the-tree-during-iteration">
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>APIs specific to lxml.etree</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="apis-specific-to-lxml-etree">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu current" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">APIs specific to lxml.etree</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu current" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">APIs specific to lxml.etree</h1>
<p>lxml.etree tries to follow established APIs wherever possible. Sometimes,
however, the need to expose a feature in an easy way led to the invention of a
<span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="s2">"e"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">b</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span> <span class="o">==</span> <span class="n">root</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">b</span><span class="o">.</span><span class="n">getnext</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">b</span><span class="o">.</span><span class="n">getnext</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">c</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">getprevious</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">getprevious</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
</pre></div>
<p>Elements always live within a document context in lxml. This implies that
there is also a notion of an absolute document root. You can retrieve an
ElementTree for the root node of a document from any of its elements.</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">getroottree</span><span class="p">()</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">root</span>
</pre></div>
<p>Note that this is different from wrapping an Element in an ElementTree. You
can use ElementTrees to create XML trees with an explicit root node:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementTree</span><span class="p">(</span><span class="n">d</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">d</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">)</span>
<span class="go">b'<d><e/></d>'</span>
will not see any elements outside the ElementTree. However, ElementTrees do
not modify their Elements:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">element</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">d</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">root</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">getroottree</span><span class="p">()</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">getroottree</span><span class="p">()</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">root</span>
</pre></div>
<p>The rule is that all operations that are applied to Elements use either the
descendants of an element, as defined by the respective XPath axis:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="p">[</span> <span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterchildren</span><span class="p">()</span> <span class="p">]</span>
<span class="go">['a', 'b', 'c', 'd']</span>
-<span class="gp">>>> </span><span class="p">[</span> <span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterchildren</span><span class="p">(</span><span class="nb">reversed</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="p">]</span>
+<span class="gp">>>> </span><span class="p">[</span> <span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterchildren</span><span class="p">(</span><span class="nb">reversed</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="p">]</span>
<span class="go">['d', 'c', 'b', 'a']</span>
<span class="gp">>>> </span><span class="p">[</span> <span class="n">sibling</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">sibling</span> <span class="ow">in</span> <span class="n">b</span><span class="o">.</span><span class="n">itersiblings</span><span class="p">()</span> <span class="p">]</span>
<span class="go">['c', 'd']</span>
-<span class="gp">>>> </span><span class="p">[</span> <span class="n">sibling</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">sibling</span> <span class="ow">in</span> <span class="n">c</span><span class="o">.</span><span class="n">itersiblings</span><span class="p">(</span><span class="n">preceding</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="p">]</span>
+<span class="gp">>>> </span><span class="p">[</span> <span class="n">sibling</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">sibling</span> <span class="ow">in</span> <span class="n">c</span><span class="o">.</span><span class="n">itersiblings</span><span class="p">(</span><span class="n">preceding</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="p">]</span>
<span class="go">['b', 'a']</span>
<span class="gp">>>> </span><span class="p">[</span> <span class="n">ancestor</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">ancestor</span> <span class="ow">in</span> <span class="n">e</span><span class="o">.</span><span class="n">iterancestors</span><span class="p">()</span> <span class="p">]</span>
<span class="go">['d', 'root']</span>
breadth-first traversal, it is almost as simple if you use the
<tt class="docutils literal">collections.deque</tt> type.</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s1">'<root><a><b/><c/></a><d><e/></d></root>'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'unicode'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'unicode'</span><span class="p">))</span>
<span class="go"><root></span>
<span class="go"> <a></span>
<span class="go"> <b/></span>
<span class="gp">>>> </span><span class="k">while</span> <span class="n">queue</span><span class="p">:</span>
<span class="gp">... </span> <span class="n">el</span> <span class="o">=</span> <span class="n">queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span> <span class="c1"># pop next element</span>
<span class="gp">... </span> <span class="n">queue</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">el</span><span class="p">)</span> <span class="c1"># append its children</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">root</span>
<span class="go">a</span>
<span class="go">d</span>
to retrieve the log entries or filter them by a specific type, error domain or
error level:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">log</span> <span class="o">=</span> <span class="n">e</span><span class="o">.</span><span class="n">error_log</span><span class="o">.</span><span class="n">filter_from_level</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ErrorLevels</span><span class="o">.</span><span class="n">FATAL</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">log</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">log</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="go"><string>:4:8:FATAL:PARSER:ERR_TAG_NAME_MISMATCH: Opening and ending tag mismatch: a line 3 and root</span>
</pre></div>
<p>This might look a little cryptic at first, but it is the information that
see <tt class="docutils literal">lxml.etree.ErrorDomains</tt> for that. You can get it from a log entry
like this:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">entry</span> <span class="o">=</span> <span class="n">log</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">domain_name</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">domain_name</span><span class="p">)</span>
<span class="go">PARSER</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">type_name</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">type_name</span><span class="p">)</span>
<span class="go">ERR_TAG_NAME_MISMATCH</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
<span class="go"><string></span>
</pre></div>
<p>There is also a convenience attribute <tt class="docutils literal">error_log.last_error</tt> that returns the
a tree in memory. By default, it returns the canonical output, but can be
directed to write it to a file instead.</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">c14n_xml</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">canonicalize</span><span class="p">(</span><span class="s2">"<root><test z='1' y='2'/></root>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">c14n_xml</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">c14n_xml</span><span class="p">)</span>
<span class="go"><root><test y="2" z="1"></test></root></span>
</pre></div>
</div>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="go">b'<root><test/></root>'</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root></span>
<span class="go"> <test/></span>
<span class="go"></root></span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">unicode_root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">"utf-8"</span><span class="p">)</span>
<span class="go">b'<t\xe3\x84\xa0st>t\xe0\xa8\x8ast</t\xe3\x84\xa0st>'</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">unicode_root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">"iso-8859-1"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">unicode_root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">"iso-8859-1"</span><span class="p">))</span>
<span class="go"><?xml version='1.0' encoding='iso-8859-1'?></span>
<span class="go"><t&#12576;st>t&#2570;st</t&#12576;st></span>
</pre></div>
<p>Also see the general remarks on <a class="reference external" href="parsing.html#python-unicode-strings">Unicode support</a>.</p>
<p>You can enable or disable the declaration explicitly by passing another
keyword argument for the serialisation:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">xml_declaration</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">xml_declaration</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><?xml version='1.0' encoding='ASCII'?></span>
<span class="go"><root><test/></root></span>
<span class="gp">>>> </span><span class="n">unicode_root</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">unicode_root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">"UTF-16LE"</span><span class="p">,</span>
-<span class="gp">... </span> <span class="n">xml_declaration</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">... </span> <span class="n">xml_declaration</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="go">b'<\x00t\x00 1s\x00t\x00/\x00>\x00'</span>
</pre></div>
<p>Note that a standard compliant XML parser will not consider the last line
well-formed XML if the encoding is not explicitly provided somehow, e.g. in an
underlying transport protocol:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">notxml</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">unicode_root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">"UTF-16LE"</span><span class="p">,</span>
-<span class="gp">... </span> <span class="n">xml_declaration</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">... </span> <span class="n">xml_declaration</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="n">notxml</span><span class="p">)</span> <span class="c1">#doctest: +ELLIPSIS</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">xml</span> <span class="o">=</span> <span class="s1">'<!DOCTYPE root></span><span class="se">\n</span><span class="s1"><root/>'</span>
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">))</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">))</span>
<span class="go"><!DOCTYPE root></span>
<span class="go"><root/></span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">,</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">,</span>
<span class="gp">... </span> <span class="n">doctype</span><span class="o">=</span><span class="s1">'<!DOCTYPE root SYSTEM "/tmp/test.dtd">'</span><span class="p">))</span>
<span class="go"><!DOCTYPE root SYSTEM "/tmp/test.dtd"></span>
<span class="go"><root/></span>
document is required to adhere to existing XML language definitions.
For these special cases, you can instruct the parser to leave CDATA
sections in the document:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">strip_cdata</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">strip_cdata</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s1">'<root><![CDATA[test]]></root>'</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">text</span>
<span class="go">'test'</span>
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">tree</span><span class="o">.</span><span class="n">xinclude</span><span class="p">()</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()))</span>
<span class="go"><doc xmlns:xi="http://www.w3.org/2001/XInclude"></span>
<span class="go"><foo/></span>
<span class="go"><a xml:base="doc/test.xml"/></span>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
+++ /dev/null
-
-
-<!DOCTYPE html>
-<html class="writer-html5" lang="en" >
-<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>collections.abc — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
- <!--[if lt IE 9]>
- <script src="../../_static/js/html5shiv.min.js"></script>
- <![endif]-->
-
-
- <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
- <script src="../../_static/jquery.js"></script>
- <script src="../../_static/underscore.js"></script>
- <script src="../../_static/doctools.js"></script>
- <script src="../../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../../_static/js/theme.js"></script>
-
-
- <link rel="index" title="Index" href="../../genindex.html" />
- <link rel="search" title="Search" href="../../search.html" />
-</head>
-
-<body class="wy-body-for-nav">
-
-
- <div class="wy-grid-for-nav">
-
- <nav data-toggle="wy-nav-shift" class="wy-nav-side">
- <div class="wy-side-scroll">
- <div class="wy-side-nav-search" >
-
-
-
- <a href="../../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
- <img src="../../_static/python-xml.png" class="logo" alt="Logo"/>
-
- </a>
-
-
-
-
- <div class="version">
- 4.6.2
- </div>
-
-
-
-
-<div role="search">
- <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
- <input type="text" name="q" placeholder="Search docs" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
-</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
- <ul>
-<li class="toctree-l1"><a class="reference internal" href="../../lxml.html">lxml package</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="../../lxml.html.html">lxml.html package</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="../../lxml.html.ElementSoup.html">lxml.html.ElementSoup module</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../../lxml.html._diffcommand.html">lxml.html._diffcommand module</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../../lxml.html._setmixin.html">lxml.html._setmixin module</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../../lxml.html.builder.html">lxml.html.builder module</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../../lxml.html.clean.html">lxml.html.clean module</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../../lxml.html.defs.html">lxml.html.defs module</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../../lxml.html.diff.html">lxml.html.diff module</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../../lxml.html.formfill.html">lxml.html.formfill module</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../../lxml.html.html5parser.html">lxml.html.html5parser module</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../../lxml.html.soupparser.html">lxml.html.soupparser module</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference internal" href="../../lxml.isoschematron.html">lxml.isoschematron package</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../../lxml.ElementInclude.html">lxml.ElementInclude module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../../lxml._elementpath.html">lxml._elementpath module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../../lxml.builder.html">lxml.builder module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../../lxml.cssselect.html">lxml.cssselect module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../../lxml.doctestcompare.html">lxml.doctestcompare module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../../lxml.etree.html">lxml.etree module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../../lxml.objectify.html">lxml.objectify module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../../lxml.sax.html">lxml.sax module</a></li>
-</ul>
-</li>
-</ul>
-
-
-
- </div>
-
- </div>
- </nav>
-
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
- <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
- <a href="../../index.html">lxml</a>
-
- </nav>
-
-
- <div class="wy-nav-content">
-
- <div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
- <ul class="wy-breadcrumbs">
-
- <li><a href="../../index.html" class="icon icon-home"></a> »</li>
-
- <li><a href="../index.html">Module code</a> »</li>
-
- <li>collections.abc</li>
-
-
- <li class="wy-breadcrumbs-aside">
-
- </li>
-
- </ul>
-
-
- <hr/>
-</div>
- <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
- <div itemprop="articleBody">
-
- <h1>Source code for collections.abc</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">_collections_abc</span> <span class="kn">import</span> <span class="o">*</span>
-<span class="kn">from</span> <span class="nn">_collections_abc</span> <span class="kn">import</span> <span class="n">__all__</span>
-</pre></div>
-
- </div>
-
- </div>
- <footer>
-
-
- <hr/>
-
- <div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
- </div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-
-</footer>
-
- </div>
- </div>
-
- </section>
-
- </div>
-
-
- <script type="text/javascript">
- jQuery(function () {
- SphinxRtdTheme.Navigation.enable(true);
- });
- </script>
-
-
-
-
-
-
-</body>
-</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Overview: module code — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+ <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
- <script src="../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../_static/js/theme.js"></script>
-
-
+ <script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="../index.html" class="icon icon-home"> lxml
<img src="../_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="../index.html" class="icon icon-home"></a> »</li>
-
<li>Overview: module code</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>All modules for which code is available</h1>
-<ul><li><a href="collections/abc.html">collections.abc</a></li>
+<ul><li><a href="_abc.html">_abc</a></li>
<li><a href="lxml.html">lxml</a></li>
<ul><li><a href="lxml/ElementInclude.html">lxml.ElementInclude</a></li>
<li><a href="lxml/_elementpath.html">lxml._elementpath</a></li>
</ul></ul>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>lxml — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+ <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
- <script src="../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../_static/js/theme.js"></script>
-
-
+ <script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="../index.html" class="icon icon-home"> lxml
<img src="../_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="../index.html" class="icon icon-home"></a> »</li>
-
<li><a href="index.html">Module code</a> »</li>
-
<li>lxml</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>Source code for lxml</h1><div class="highlight"><pre>
<span></span><span class="c1"># this is a package</span>
-<span class="n">__version__</span> <span class="o">=</span> <span class="s2">"4.6.2"</span>
+<span class="n">__version__</span> <span class="o">=</span> <span class="s2">"4.6.4"</span>
<div class="viewcode-block" id="get_include"><a class="viewcode-back" href="../lxml.html#lxml.get_include">[docs]</a><span class="k">def</span> <span class="nf">get_include</span><span class="p">():</span>
</pre></div>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>lxml.ElementInclude — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
- <script src="../../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../../_static/js/theme.js"></script>
-
-
+ <script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="../../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="../../index.html" class="icon icon-home"> lxml
<img src="../../_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
-
<li><a href="../index.html">Module code</a> »</li>
-
<li><a href="../lxml.html">lxml</a> »</li>
-
<li>lxml.ElementInclude</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>Source code for lxml.ElementInclude</h1><div class="highlight"><pre>
<span></span><span class="c1">#</span>
<span class="c1"># ElementTree</span>
</pre></div>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>lxml.doctestcompare — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
- <script src="../../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../../_static/js/theme.js"></script>
-
-
+ <script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="../../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="../../index.html" class="icon icon-home"> lxml
<img src="../../_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
-
<li><a href="../index.html">Module code</a> »</li>
-
<li><a href="../lxml.html">lxml</a> »</li>
-
<li>lxml.doctestcompare</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>Source code for lxml.doctestcompare</h1><div class="highlight"><pre>
<span></span><span class="sd">"""</span>
<span class="sd">lxml-based doctest output comparison.</span>
</pre></div>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>lxml.html — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
- <script src="../../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../../_static/js/theme.js"></script>
-
-
+ <script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="../../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="../../index.html" class="icon icon-home"> lxml
<img src="../../_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
-
<li><a href="../index.html">Module code</a> »</li>
-
<li><a href="../lxml.html">lxml</a> »</li>
-
<li>lxml.html</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>Source code for lxml.html</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2004 Ian Bicking. All rights reserved.</span>
<span class="c1">#</span>
</pre></div>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>lxml.html._diffcommand — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../../_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
+ <script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
- <script src="../../../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../../../_static/js/theme.js"></script>
-
-
+ <script src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="../../../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="../../../index.html" class="icon icon-home"> lxml
<img src="../../../_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
-
<li><a href="../../index.html">Module code</a> »</li>
-
<li><a href="../../lxml.html">lxml</a> »</li>
-
<li><a href="../html.html">lxml.html</a> »</li>
-
<li>lxml.html._diffcommand</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>Source code for lxml.html._diffcommand</h1><div class="highlight"><pre>
<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
</pre></div>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>lxml.html._setmixin — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../../_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
+ <script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
- <script src="../../../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../../../_static/js/theme.js"></script>
-
-
+ <script src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="../../../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="../../../index.html" class="icon icon-home"> lxml
<img src="../../../_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
-
<li><a href="../../index.html">Module code</a> »</li>
-
<li><a href="../../lxml.html">lxml</a> »</li>
-
<li><a href="../html.html">lxml.html</a> »</li>
-
<li>lxml.html._setmixin</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>Source code for lxml.html._setmixin</h1><div class="highlight"><pre>
<span></span><span class="k">try</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">collections.abc</span> <span class="kn">import</span> <span class="n">MutableSet</span>
</pre></div>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>lxml.html.builder — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../../_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
+ <script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
- <script src="../../../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../../../_static/js/theme.js"></script>
-
-
+ <script src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="../../../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="../../../index.html" class="icon icon-home"> lxml
<img src="../../../_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
-
<li><a href="../../index.html">Module code</a> »</li>
-
<li><a href="../../lxml.html">lxml</a> »</li>
-
<li><a href="../html.html">lxml.html</a> »</li>
-
<li>lxml.html.builder</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>Source code for lxml.html.builder</h1><div class="highlight"><pre>
<span></span><span class="c1"># --------------------------------------------------------------------</span>
<span class="c1"># The ElementTree toolkit is</span>
</pre></div>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>lxml.html.formfill — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../../_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
+ <script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
- <script src="../../../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../../../_static/js/theme.js"></script>
-
-
+ <script src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="../../../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="../../../index.html" class="icon icon-home"> lxml
<img src="../../../_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
-
<li><a href="../../index.html">Module code</a> »</li>
-
<li><a href="../../lxml.html">lxml</a> »</li>
-
<li><a href="../html.html">lxml.html</a> »</li>
-
<li>lxml.html.formfill</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>Source code for lxml.html.formfill</h1><div class="highlight"><pre>
<span></span><span class="kn">from</span> <span class="nn">lxml.etree</span> <span class="kn">import</span> <span class="n">XPath</span><span class="p">,</span> <span class="n">ElementBase</span>
<span class="kn">from</span> <span class="nn">lxml.html</span> <span class="kn">import</span> <span class="n">fromstring</span><span class="p">,</span> <span class="n">XHTML_NAMESPACE</span>
</pre></div>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>lxml.isoschematron — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
- <script src="../../_static/language_data.js"></script>
-
- <script type="text/javascript" src="../../_static/js/theme.js"></script>
-
-
+ <script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="../../index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="../../index.html" class="icon icon-home"> lxml
<img src="../../_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
-
<li><a href="../index.html">Module code</a> »</li>
-
<li><a href="../lxml.html">lxml</a> »</li>
-
<li>lxml.isoschematron</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>Source code for lxml.isoschematron</h1><div class="highlight"><pre>
<span></span><span class="sd">"""The ``lxml.isoschematron`` package implements ISO Schematron support on top</span>
<span class="sd">of the pure-xslt 'skeleton' implementation.</span>
</pre></div>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
*
* Sphinx stylesheet -- basic theme.
*
- * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
font-weight: bold;
}
-ul.search li div.context {
+ul.search li p.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
font-weight: bold;
}
-img.align-left, .figure.align-left, object.align-left {
+img.align-left, figure.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
-img.align-right, .figure.align-right, object.align-right {
+img.align-right, figure.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
-img.align-center, .figure.align-center, object.align-center {
+img.align-center, figure.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
-img.align-default, .figure.align-default {
+img.align-default, figure.align-default, .figure.align-default {
display: block;
margin-left: auto;
margin-right: auto;
/* -- sidebars -------------------------------------------------------------- */
-div.sidebar {
+div.sidebar,
+aside.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px;
/* -- content of sidebars/topics/admonitions -------------------------------- */
div.sidebar > :last-child,
+aside.sidebar > :last-child,
div.topic > :last-child,
div.admonition > :last-child {
margin-bottom: 0;
}
div.sidebar::after,
+aside.sidebar::after,
div.topic::after,
div.admonition::after,
blockquote::after {
/* -- figures --------------------------------------------------------------- */
-div.figure {
+div.figure, figure {
margin: 0.5em;
padding: 0.5em;
}
-div.figure p.caption {
+div.figure p.caption, figcaption {
padding: 0.3em;
}
-div.figure p.caption span.caption-number {
+div.figure p.caption span.caption-number,
+figcaption span.caption-number {
font-style: italic;
}
-div.figure p.caption span.caption-text {
+div.figure p.caption span.caption-text,
+figcaption span.caption-text {
}
/* -- field list styles ----------------------------------------------------- */
vertical-align: top;
}
+/* -- object description styles --------------------------------------------- */
+
+.sig {
+ font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+}
+
+.sig-name, code.descname {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+.sig-name {
+ font-size: 1.1em;
+}
+
+code.descname {
+ font-size: 1.2em;
+}
+
+.sig-prename, code.descclassname {
+ background-color: transparent;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.sig-paren {
+ font-size: larger;
+}
+
+.sig-param.n {
+ font-style: italic;
+}
+
+/* C++ specific styling */
+
+.sig-inline.c-texpr,
+.sig-inline.cpp-texpr {
+ font-family: unset;
+}
+
+.sig.c .k, .sig.c .kt,
+.sig.cpp .k, .sig.cpp .kt {
+ color: #0033B3;
+}
+
+.sig.c .m,
+.sig.cpp .m {
+ color: #1750EB;
+}
+
+.sig.c .s, .sig.c .sc,
+.sig.cpp .s, .sig.cpp .sc {
+ color: #067D17;
+}
+
/* -- other body styles ----------------------------------------------------- */
font-size: 1.1em;
}
-.optional {
- font-size: 1.3em;
-}
-
-.sig-paren {
- font-size: larger;
-}
-
.versionmodified {
font-style: italic;
}
}
table.highlighttable td.linenos,
-div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */
- user-select: none;
+span.linenos,
+div.highlight span.gp { /* gp: Generic.Prompt */
+ user-select: none;
+ -webkit-user-select: text; /* Safari fallback only */
+ -webkit-user-select: none; /* Chrome/Safari */
+ -moz-user-select: none; /* Firefox */
+ -ms-user-select: none; /* IE10+ */
}
div.code-block-caption span.caption-number {
margin: 1em 0;
}
-code.descname {
- background-color: transparent;
- font-weight: bold;
- font-size: 1.2em;
-}
-
-code.descclassname {
- background-color: transparent;
-}
-
code.xref, a code {
background-color: transparent;
font-weight: bold;
-html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li span.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*!
+html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*!
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li span.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li span.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li span.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li span.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li span.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li span.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li span.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li span.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p.caption .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.btn .wy-menu-vertical li span.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p.caption .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.nav .wy-menu-vertical li span.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p.caption .btn .headerlink,.rst-content p.caption .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li span.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol li,.rst-content ol.arabic li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content ol.arabic li p:last-child,.rst-content ol.arabic li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover span.toctree-expand,.wy-menu-vertical li.on a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp{user-select:none;pointer-events:none}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink{visibility:hidden;font-size:14px}.rst-content .code-block-caption .headerlink:after,.rst-content .toctree-wrapper>p.caption .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after{content:"\f0c1";font-family:FontAwesome}.rst-content .code-block-caption:hover .headerlink:after,.rst-content .toctree-wrapper>p.caption:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl dt span.classifier:before{content:" : "}html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.field-list>dt:after,html.writer-html5 .rst-content dl.footnote>dt:after{content:":"}html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.footnote>dt>span.brackets{margin-right:.5rem}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{font-style:italic}html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.footnote>dd p,html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code,html.writer-html4 .rst-content dl:not(.docutils) tt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block}
\ No newline at end of file
+ */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.field-list>dt:after,html.writer-html5 .rst-content dl.footnote>dt:after{content:":"}html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.footnote>dt>span.brackets{margin-right:.5rem}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{font-style:italic}html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.footnote>dd p,html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block}
\ No newline at end of file
-pre { line-height: 125%; margin: 0; }
-td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
-span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
-td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
-span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
+pre { line-height: 125%; }
+td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Index — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="#" />
<link rel="search" title="Search" href="search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li>Index</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1 id="index">Index</h1>
</li>
<li><a href="lxml.html.builder.html#lxml.html.builder.ACRONYM">ACRONYM (in module lxml.html.builder)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.FormElement.action">action() (lxml.html.FormElement property)</a>
+ <li><a href="lxml.html.html#lxml.html.FormElement.action">action (lxml.html.FormElement property)</a>
</li>
<li><a href="lxml.html.html#lxml.html.CheckboxValues.add">add() (lxml.html.CheckboxValues method)</a>
</li>
<li><a href="lxml.etree.html#lxml.etree._Element.base">base (lxml.etree._Element attribute)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.HtmlMixin.base_url">base_url() (lxml.html.HtmlMixin property)</a>
+ <li><a href="lxml.html.html#lxml.html.HtmlMixin.base_url">base_url (lxml.html.HtmlMixin property)</a>
</li>
<li><a href="lxml.html.builder.html#lxml.html.builder.BASEFONT">BASEFONT (in module lxml.html.builder)</a>
</li>
</li>
<li><a href="lxml.html.builder.html#lxml.html.builder.BODY">BODY (in module lxml.html.builder)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.HtmlMixin.body">body() (lxml.html.HtmlMixin property)</a>
+ <li><a href="lxml.html.html#lxml.html.HtmlMixin.body">body (lxml.html.HtmlMixin property)</a>
</li>
<li><a href="lxml.objectify.html#lxml.objectify.BoolElement">BoolElement (class in lxml.objectify)</a>
</li>
</li>
<li><a href="lxml.etree.html#lxml.etree.ErrorTypes.CHECK_WRONG_PREV">CHECK_WRONG_PREV (lxml.etree.ErrorTypes attribute)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.InputElement.checkable">checkable() (lxml.html.InputElement property)</a>
+ <li><a href="lxml.html.html#lxml.html.InputElement.checkable">checkable (lxml.html.InputElement property)</a>
</li>
<li><a href="lxml.html.html#lxml.html.CheckboxGroup">CheckboxGroup (class in lxml.html)</a>
</li>
<li><a href="lxml.html.html#lxml.html.CheckboxValues">CheckboxValues (class in lxml.html)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.InputElement.checked">checked() (lxml.html.InputElement property)</a>
+ <li><a href="lxml.html.html#lxml.html.InputElement.checked">checked (lxml.html.InputElement property)</a>
</li>
<li><a href="lxml.html.builder.html#lxml.html.builder.CITE">CITE (in module lxml.html.builder)</a>
</li>
</li>
<li><a href="lxml.html.html#lxml.html.Classes">Classes (class in lxml.html)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.HtmlMixin.classes">classes() (lxml.html.HtmlMixin property)</a>
+ <li><a href="lxml.html.html#lxml.html.HtmlMixin.classes">classes (lxml.html.HtmlMixin property)</a>
</li>
<li><a href="lxml.html.clean.html#lxml.html.clean.clean_html">clean_html() (in module lxml.html.clean)</a>
</li>
<li><a href="lxml.etree.html#lxml.etree.ETCompatXMLParser">ETCompatXMLParser (class in lxml.etree)</a>
</li>
- <li><a href="lxml.sax.html#lxml.sax.ElementTreeContentHandler.etree">etree() (lxml.sax.ElementTreeContentHandler property)</a>
+ <li><a href="lxml.sax.html#lxml.sax.ElementTreeContentHandler.etree">etree (lxml.sax.ElementTreeContentHandler property)</a>
</li>
<li><a href="lxml.etree.html#lxml.etree.ETXPath">ETXPath (class in lxml.etree)</a>
</li>
</li>
<li><a href="lxml.etree.html#lxml.etree._FeedParser.feed_error_log">feed_error_log (lxml.etree._FeedParser attribute)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.FormElement.fields">fields() (lxml.html.FormElement property)</a>
+ <li><a href="lxml.html.html#lxml.html.FormElement.fields">fields (lxml.html.FormElement property)</a>
</li>
<li><a href="lxml.html.html#lxml.html.FieldsDict">FieldsDict (class in lxml.html)</a>
</li>
</li>
<li><a href="lxml.html.builder.html#lxml.html.builder.FOR">FOR() (in module lxml.html.builder)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.LabelElement.for_element">for_element() (lxml.html.LabelElement property)</a>
+ <li><a href="lxml.html.html#lxml.html.LabelElement.for_element">for_element (lxml.html.LabelElement property)</a>
</li>
<li><a href="lxml.html.builder.html#lxml.html.builder.FORM">FORM (in module lxml.html.builder)</a>
</li>
<li><a href="lxml.html.formfill.html#lxml.html.formfill.FormNotFound">FormNotFound</a>
</li>
<li><a href="lxml.html.clean.html#lxml.html.clean.Cleaner.forms">forms (lxml.html.clean.Cleaner attribute)</a>
+
+ <ul>
+ <li><a href="lxml.html.html#lxml.html.HtmlMixin.forms">(lxml.html.HtmlMixin property)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.HtmlMixin.forms">forms() (lxml.html.HtmlMixin property)</a>
-</li>
+ </ul></li>
<li><a href="lxml.html.html#lxml.html.fragment_fromstring">fragment_fromstring() (in module lxml.html)</a>
</li>
<li><a href="lxml.html.html#lxml.html.fragments_fromstring">fragments_fromstring() (in module lxml.html)</a>
</li>
<li><a href="lxml.html.builder.html#lxml.html.builder.HEAD">HEAD (in module lxml.html.builder)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.HtmlMixin.head">head() (lxml.html.HtmlMixin property)</a>
+ <li><a href="lxml.html.html#lxml.html.HtmlMixin.head">head (lxml.html.HtmlMixin property)</a>
</li>
<li><a href="lxml.html.diff.html#lxml.html.diff.href_token.hide_when_equal">hide_when_equal (lxml.html.diff.href_token attribute)</a>
</li>
<li><a href="lxml.html.html#lxml.html.InputMixin">InputMixin (class in lxml.html)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.FormElement.inputs">inputs() (lxml.html.FormElement property)</a>
+ <li><a href="lxml.html.html#lxml.html.FormElement.inputs">inputs (lxml.html.FormElement property)</a>
</li>
<li><a href="lxml.html.builder.html#lxml.html.builder.INS">INS (in module lxml.html.builder)</a>
</li>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="lxml.html.builder.html#lxml.html.builder.LABEL">LABEL (in module lxml.html.builder)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.HtmlMixin.label">label() (lxml.html.HtmlMixin property)</a>
+ <li><a href="lxml.html.html#lxml.html.HtmlMixin.label">label (lxml.html.HtmlMixin property)</a>
</li>
<li><a href="lxml.html.html#lxml.html.LabelElement">LabelElement (class in lxml.html)</a>
</li>
</li>
<li><a href="lxml.html.clean.html#lxml.html.clean.Cleaner.meta">meta (lxml.html.clean.Cleaner attribute)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.FormElement.method">method() (lxml.html.FormElement property)</a>
+ <li><a href="lxml.html.html#lxml.html.FormElement.method">method (lxml.html.FormElement property)</a>
</li>
<li>
module
</li>
<li><a href="lxml.etree.html#lxml.etree.ErrorTypes.MODULE_OPEN">MODULE_OPEN (lxml.etree.ErrorTypes attribute)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.SelectElement.multiple">multiple() (lxml.html.SelectElement property)</a>
+ <li><a href="lxml.html.html#lxml.html.SelectElement.multiple">multiple (lxml.html.SelectElement property)</a>
</li>
<li><a href="lxml.html.html#lxml.html.MultipleSelectOptions">MultipleSelectOptions (class in lxml.html)</a>
</li>
<ul>
<li><a href="lxml.etree.html#lxml.etree.DTD.name">(lxml.etree.DTD attribute)</a>
+</li>
+ <li><a href="lxml.html.html#lxml.html.InputMixin.name">(lxml.html.InputMixin property)</a>
</li>
<li><a href="lxml.objectify.html#lxml.objectify.PyType.name">(lxml.objectify.PyType attribute)</a>
</li>
</ul></li>
- <li><a href="lxml.html.html#lxml.html.InputMixin.name">name() (lxml.html.InputMixin property)</a>
-</li>
<li><a href="lxml.etree.html#lxml.etree.ErrorDomains.NAMESPACE">NAMESPACE (lxml.etree.ErrorDomains attribute)</a>
</li>
<li><a href="lxml.etree.html#lxml.etree.QName.namespace">namespace (lxml.etree.QName attribute)</a>
<li><a href="lxml.html.builder.html#lxml.html.builder.OPTION">OPTION (in module lxml.html.builder)</a>
</li>
<li><a href="lxml.etree.html#lxml.etree.XSLTAccessControl.options">options (lxml.etree.XSLTAccessControl attribute)</a>
+
+ <ul>
+ <li><a href="lxml.html.html#lxml.html.MultipleSelectOptions.options">(lxml.html.MultipleSelectOptions property)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.MultipleSelectOptions.options">options() (lxml.html.MultipleSelectOptions property)</a>
-</li>
+ </ul></li>
<li><a href="lxml.etree.html#lxml.etree.ErrorDomains.OUTPUT">OUTPUT (lxml.etree.ErrorDomains attribute)</a>
</li>
<li><a href="lxml.doctestcompare.html#lxml.doctestcompare.LXMLOutputChecker.output_difference">output_difference() (lxml.doctestcompare.LXMLOutputChecker method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
- <li><a href="lxml.etree.html#lxml.etree.ParseError.position">position() (lxml.etree.ParseError property)</a>
+ <li><a href="lxml.etree.html#lxml.etree.ParseError.position">position (lxml.etree.ParseError property)</a>
</li>
<li><a href="lxml.html.builder.html#lxml.html.builder.PRE">PRE (in module lxml.html.builder)</a>
</li>
<li><a href="lxml.isoschematron.html#lxml.isoschematron.Schematron">(class in lxml.isoschematron)</a>
</li>
</ul></li>
- <li><a href="lxml.isoschematron.html#lxml.isoschematron.Schematron.schematron">schematron() (lxml.isoschematron.Schematron property)</a>
+ <li><a href="lxml.isoschematron.html#lxml.isoschematron.Schematron.schematron">schematron (lxml.isoschematron.Schematron property)</a>
</li>
<li><a href="lxml.etree.html#lxml.etree.SchematronError">SchematronError</a>
</li>
<li><a href="lxml.html.builder.html#lxml.html.builder.TT">TT (in module lxml.html.builder)</a>
</li>
<li><a href="lxml.etree.html#lxml.etree._LogEntry.type">type (lxml.etree._LogEntry attribute)</a>
+
+ <ul>
+ <li><a href="lxml.html.html#lxml.html.InputElement.type">(lxml.html.InputElement property)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.InputElement.type">type() (lxml.html.InputElement property)</a>
-</li>
+ </ul></li>
<li><a href="lxml.objectify.html#lxml.objectify.PyType.type_check">type_check (lxml.objectify.PyType attribute)</a>
</li>
<li><a href="lxml.etree.html#lxml.etree._LogEntry.type_name">type_name (lxml.etree._LogEntry attribute)</a>
</li>
<li><a href="lxml.etree.html#lxml.etree._Validator.validate">validate() (lxml.etree._Validator method)</a>
</li>
- <li><a href="lxml.isoschematron.html#lxml.isoschematron.Schematron.validation_report">validation_report() (lxml.isoschematron.Schematron property)</a>
+ <li><a href="lxml.isoschematron.html#lxml.isoschematron.Schematron.validation_report">validation_report (lxml.isoschematron.Schematron property)</a>
</li>
- <li><a href="lxml.isoschematron.html#lxml.isoschematron.Schematron.validator_xslt">validator_xslt() (lxml.isoschematron.Schematron property)</a>
+ <li><a href="lxml.isoschematron.html#lxml.isoschematron.Schematron.validator_xslt">validator_xslt (lxml.isoschematron.Schematron property)</a>
</li>
- <li><a href="lxml.html.html#lxml.html.CheckboxGroup.value">value() (lxml.html.CheckboxGroup property)</a>
+ <li><a href="lxml.html.html#lxml.html.CheckboxGroup.value">value (lxml.html.CheckboxGroup property)</a>
<ul>
<li><a href="lxml.html.html#lxml.html.InputElement.value">(lxml.html.InputElement property)</a>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
- <li><a href="lxml.html.html#lxml.html.CheckboxGroup.value_options">value_options() (lxml.html.CheckboxGroup property)</a>
+ <li><a href="lxml.html.html#lxml.html.CheckboxGroup.value_options">value_options (lxml.html.CheckboxGroup property)</a>
<ul>
<li><a href="lxml.html.html#lxml.html.RadioGroup.value_options">(lxml.html.RadioGroup property)</a>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml API Reference — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml API Reference — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml package" href="lxml.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="#" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="#" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="#">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="#" class="icon icon-home"></a> »</li>
-
<li>lxml API Reference</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/index.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="lxml-api-reference">
-<h1>lxml API Reference<a class="headerlink" href="#lxml-api-reference" title="Permalink to this headline">¶</a></h1>
+
+ <section id="lxml-api-reference">
+<h1>lxml API Reference<a class="headerlink" href="#lxml-api-reference" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="lxml.html">lxml package</a><ul>
</li>
</ul>
</div>
-</div>
-<div class="section" id="indices-and-tables">
-<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
+</section>
+<section id="indices-and-tables">
+<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline"></a></h1>
<ul class="simple">
<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></p></li>
<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li>
</ul>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html" class="btn btn-neutral float-right" title="lxml package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html" class="btn btn-neutral float-right" title="lxml package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.ElementInclude module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.ElementInclude module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml._elementpath module" href="lxml._elementpath.html" />
<link rel="prev" title="lxml.isoschematron package" href="lxml.isoschematron.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li>lxml.ElementInclude module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.ElementInclude.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.ElementInclude">
-<span id="lxml-elementinclude-module"></span><h1>lxml.ElementInclude module<a class="headerlink" href="#module-lxml.ElementInclude" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.ElementInclude">
+<span id="lxml-elementinclude-module"></span><h1>lxml.ElementInclude module<a class="headerlink" href="#module-lxml.ElementInclude" title="Permalink to this headline"></a></h1>
<p>Limited XInclude support for the ElementTree package.</p>
<p>While lxml.etree has full support for XInclude (see
<cite>etree.ElementTree.xinclude()</cite>), this module provides a simpler, pure
Python, ElementTree compatible implementation that supports a simple
form of custom URL resolvers.</p>
<dl class="py exception">
-<dt id="lxml.ElementInclude.FatalIncludeError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.ElementInclude.</code><code class="sig-name descname">FatalIncludeError</code><a class="reference internal" href="_modules/lxml/ElementInclude.html#FatalIncludeError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.ElementInclude.FatalIncludeError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.ElementInclude.FatalIncludeError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.ElementInclude.</span></span><span class="sig-name descname"><span class="pre">FatalIncludeError</span></span><a class="reference internal" href="_modules/lxml/ElementInclude.html#FatalIncludeError"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.ElementInclude.FatalIncludeError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.LxmlSyntaxError" title="lxml.etree.LxmlSyntaxError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlSyntaxError</span></code></a></p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.ElementInclude.LimitedRecursiveIncludeError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.ElementInclude.</code><code class="sig-name descname">LimitedRecursiveIncludeError</code><a class="reference internal" href="_modules/lxml/ElementInclude.html#LimitedRecursiveIncludeError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.ElementInclude.LimitedRecursiveIncludeError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.ElementInclude.LimitedRecursiveIncludeError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.ElementInclude.</span></span><span class="sig-name descname"><span class="pre">LimitedRecursiveIncludeError</span></span><a class="reference internal" href="_modules/lxml/ElementInclude.html#LimitedRecursiveIncludeError"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.ElementInclude.LimitedRecursiveIncludeError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.ElementInclude.FatalIncludeError" title="lxml.ElementInclude.FatalIncludeError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.ElementInclude.FatalIncludeError</span></code></a></p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.ElementInclude._include">
-<code class="sig-prename descclassname">lxml.ElementInclude.</code><code class="sig-name descname">_include</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">elem</span></em>, <em class="sig-param"><span class="n">loader</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">max_depth</span><span class="o">=</span><span class="default_value">6</span></em>, <em class="sig-param"><span class="n">_parent_hrefs</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/ElementInclude.html#_include"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.ElementInclude._include" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.ElementInclude._include">
+<span class="sig-prename descclassname"><span class="pre">lxml.ElementInclude.</span></span><span class="sig-name descname"><span class="pre">_include</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elem</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">loader</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_depth</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">6</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_parent_hrefs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/ElementInclude.html#_include"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.ElementInclude._include" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.ElementInclude._lxml_default_loader">
-<code class="sig-prename descclassname">lxml.ElementInclude.</code><code class="sig-name descname">_lxml_default_loader</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">href</span></em>, <em class="sig-param"><span class="n">parse</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/ElementInclude.html#_lxml_default_loader"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.ElementInclude._lxml_default_loader" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.ElementInclude._lxml_default_loader">
+<span class="sig-prename descclassname"><span class="pre">lxml.ElementInclude.</span></span><span class="sig-name descname"><span class="pre">_lxml_default_loader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">href</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parse</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/ElementInclude.html#_lxml_default_loader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.ElementInclude._lxml_default_loader" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.ElementInclude._wrap_et_loader">
-<code class="sig-prename descclassname">lxml.ElementInclude.</code><code class="sig-name descname">_wrap_et_loader</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">loader</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/ElementInclude.html#_wrap_et_loader"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.ElementInclude._wrap_et_loader" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.ElementInclude._wrap_et_loader">
+<span class="sig-prename descclassname"><span class="pre">lxml.ElementInclude.</span></span><span class="sig-name descname"><span class="pre">_wrap_et_loader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">loader</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/ElementInclude.html#_wrap_et_loader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.ElementInclude._wrap_et_loader" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.ElementInclude.default_loader">
-<code class="sig-prename descclassname">lxml.ElementInclude.</code><code class="sig-name descname">default_loader</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">href</span></em>, <em class="sig-param"><span class="n">parse</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/ElementInclude.html#default_loader"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.ElementInclude.default_loader" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.ElementInclude.default_loader">
+<span class="sig-prename descclassname"><span class="pre">lxml.ElementInclude.</span></span><span class="sig-name descname"><span class="pre">default_loader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">href</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parse</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/ElementInclude.html#default_loader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.ElementInclude.default_loader" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.ElementInclude.include">
-<code class="sig-prename descclassname">lxml.ElementInclude.</code><code class="sig-name descname">include</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">elem</span></em>, <em class="sig-param"><span class="n">loader</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">max_depth</span><span class="o">=</span><span class="default_value">6</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/ElementInclude.html#include"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.ElementInclude.include" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.ElementInclude.include">
+<span class="sig-prename descclassname"><span class="pre">lxml.ElementInclude.</span></span><span class="sig-name descname"><span class="pre">include</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elem</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">loader</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_depth</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">6</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/ElementInclude.html#include"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.ElementInclude.include" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml._elementpath.html" class="btn btn-neutral float-right" title="lxml._elementpath module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.isoschematron.html" class="btn btn-neutral float-left" title="lxml.isoschematron package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.isoschematron.html" class="btn btn-neutral float-left" title="lxml.isoschematron package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml._elementpath.html" class="btn btn-neutral float-right" title="lxml._elementpath module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml._elementpath module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml._elementpath module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.builder module" href="lxml.builder.html" />
<link rel="prev" title="lxml.ElementInclude module" href="lxml.ElementInclude.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li>lxml._elementpath module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml._elementpath.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml._elementpath">
-<span id="lxml-elementpath-module"></span><h1>lxml._elementpath module<a class="headerlink" href="#module-lxml._elementpath" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml._elementpath">
+<span id="lxml-elementpath-module"></span><h1>lxml._elementpath module<a class="headerlink" href="#module-lxml._elementpath" title="Permalink to this headline"></a></h1>
<dl class="py function">
-<dt id="lxml._elementpath._build_path_iterator">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">_build_path_iterator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath._build_path_iterator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath._build_path_iterator">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">_build_path_iterator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath._build_path_iterator" title="Permalink to this definition"></a></dt>
<dd><p>compile selector pattern</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.find">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">find</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">elem</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.find" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.find">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">find</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elem</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.find" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.findall">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">findall</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">elem</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.findall" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.findall">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">findall</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elem</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.findall" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.findtext">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">findtext</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">elem</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.findtext" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.findtext">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">findtext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elem</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.findtext" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.iterfind">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">iterfind</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">elem</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.iterfind" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.iterfind">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">iterfind</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elem</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.iterfind" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.prepare_child">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">prepare_child</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">next</span></em>, <em class="sig-param"><span class="n">token</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_child" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.prepare_child">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">prepare_child</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">next</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_child" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.prepare_descendant">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">prepare_descendant</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">next</span></em>, <em class="sig-param"><span class="n">token</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_descendant" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.prepare_descendant">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">prepare_descendant</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">next</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_descendant" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.prepare_parent">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">prepare_parent</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">next</span></em>, <em class="sig-param"><span class="n">token</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_parent" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.prepare_parent">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">prepare_parent</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">next</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_parent" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.prepare_predicate">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">prepare_predicate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">next</span></em>, <em class="sig-param"><span class="n">token</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_predicate" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.prepare_predicate">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">prepare_predicate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">next</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_predicate" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.prepare_self">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">prepare_self</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">next</span></em>, <em class="sig-param"><span class="n">token</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_self" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.prepare_self">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">prepare_self</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">next</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_self" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.prepare_star">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">prepare_star</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">next</span></em>, <em class="sig-param"><span class="n">token</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_star" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.prepare_star">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">prepare_star</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">next</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.prepare_star" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml._elementpath.xpath_tokenizer">
-<code class="sig-prename descclassname">lxml._elementpath.</code><code class="sig-name descname">xpath_tokenizer</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">pattern</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.xpath_tokenizer" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml._elementpath.xpath_tokenizer">
+<span class="sig-prename descclassname"><span class="pre">lxml._elementpath.</span></span><span class="sig-name descname"><span class="pre">xpath_tokenizer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pattern</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml._elementpath.xpath_tokenizer" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.builder.html" class="btn btn-neutral float-right" title="lxml.builder module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.ElementInclude.html" class="btn btn-neutral float-left" title="lxml.ElementInclude module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.ElementInclude.html" class="btn btn-neutral float-left" title="lxml.ElementInclude module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.builder.html" class="btn btn-neutral float-right" title="lxml.builder module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.builder module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.builder module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.cssselect module" href="lxml.cssselect.html" />
<link rel="prev" title="lxml._elementpath module" href="lxml._elementpath.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li>lxml.builder module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.builder.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.builder">
-<span id="lxml-builder-module"></span><h1>lxml.builder module<a class="headerlink" href="#module-lxml.builder" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.builder">
+<span id="lxml-builder-module"></span><h1>lxml.builder module<a class="headerlink" href="#module-lxml.builder" title="Permalink to this headline"></a></h1>
<p>The <code class="docutils literal notranslate"><span class="pre">E</span></code> Element factory for generating XML documents.</p>
<dl class="py class">
-<dt id="lxml.builder.ElementMaker">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.builder.</code><code class="sig-name descname">ElementMaker</code><a class="headerlink" href="#lxml.builder.ElementMaker" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.builder.ElementMaker">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.builder.</span></span><span class="sig-name descname"><span class="pre">ElementMaker</span></span><a class="headerlink" href="#lxml.builder.ElementMaker" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Element generator factory.</p>
<p>Unlike the ordinary Element factory, the E factory allows you to pass in
</pre></div>
</div>
<dl class="py attribute">
-<dt id="lxml.builder.ElementMaker._makeelement">
-<code class="sig-name descname">_makeelement</code><a class="headerlink" href="#lxml.builder.ElementMaker._makeelement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.builder.ElementMaker._makeelement">
+<span class="sig-name descname"><span class="pre">_makeelement</span></span><a class="headerlink" href="#lxml.builder.ElementMaker._makeelement" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.builder.ElementMaker._namespace">
-<code class="sig-name descname">_namespace</code><a class="headerlink" href="#lxml.builder.ElementMaker._namespace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.builder.ElementMaker._namespace">
+<span class="sig-name descname"><span class="pre">_namespace</span></span><a class="headerlink" href="#lxml.builder.ElementMaker._namespace" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.builder.ElementMaker._nsmap">
-<code class="sig-name descname">_nsmap</code><a class="headerlink" href="#lxml.builder.ElementMaker._nsmap" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.builder.ElementMaker._nsmap">
+<span class="sig-name descname"><span class="pre">_nsmap</span></span><a class="headerlink" href="#lxml.builder.ElementMaker._nsmap" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.builder.ElementMaker._typemap">
-<code class="sig-name descname">_typemap</code><a class="headerlink" href="#lxml.builder.ElementMaker._typemap" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.builder.ElementMaker._typemap">
+<span class="sig-name descname"><span class="pre">_typemap</span></span><a class="headerlink" href="#lxml.builder.ElementMaker._typemap" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
-<dt id="lxml.builder.__pyx_unpickle_ElementMaker">
-<code class="sig-prename descclassname">lxml.builder.</code><code class="sig-name descname">__pyx_unpickle_ElementMaker</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">__pyx_type</span></em>, <em class="sig-param"><span class="n">__pyx_checksum</span></em>, <em class="sig-param"><span class="n">__pyx_state</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.builder.__pyx_unpickle_ElementMaker" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.builder.__pyx_unpickle_ElementMaker">
+<span class="sig-prename descclassname"><span class="pre">lxml.builder.</span></span><span class="sig-name descname"><span class="pre">__pyx_unpickle_ElementMaker</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">__pyx_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">__pyx_checksum</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">__pyx_state</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.builder.__pyx_unpickle_ElementMaker" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.cssselect.html" class="btn btn-neutral float-right" title="lxml.cssselect module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml._elementpath.html" class="btn btn-neutral float-left" title="lxml._elementpath module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml._elementpath.html" class="btn btn-neutral float-left" title="lxml._elementpath module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.cssselect.html" class="btn btn-neutral float-right" title="lxml.cssselect module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.cssselect module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.cssselect module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.doctestcompare module" href="lxml.doctestcompare.html" />
<link rel="prev" title="lxml.builder module" href="lxml.builder.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li>lxml.cssselect module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.cssselect.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="lxml-cssselect-module">
-<h1>lxml.cssselect module<a class="headerlink" href="#lxml-cssselect-module" title="Permalink to this headline">¶</a></h1>
-</div>
+
+ <section id="lxml-cssselect-module">
+<h1>lxml.cssselect module<a class="headerlink" href="#lxml-cssselect-module" title="Permalink to this headline"></a></h1>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.doctestcompare.html" class="btn btn-neutral float-right" title="lxml.doctestcompare module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.builder.html" class="btn btn-neutral float-left" title="lxml.builder module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.builder.html" class="btn btn-neutral float-left" title="lxml.builder module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.doctestcompare.html" class="btn btn-neutral float-right" title="lxml.doctestcompare module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.doctestcompare module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.doctestcompare module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.etree module" href="lxml.etree.html" />
<link rel="prev" title="lxml.cssselect module" href="lxml.cssselect.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li>lxml.doctestcompare module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.doctestcompare.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.doctestcompare">
-<span id="lxml-doctestcompare-module"></span><h1>lxml.doctestcompare module<a class="headerlink" href="#module-lxml.doctestcompare" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.doctestcompare">
+<span id="lxml-doctestcompare-module"></span><h1>lxml.doctestcompare module<a class="headerlink" href="#module-lxml.doctestcompare" title="Permalink to this headline"></a></h1>
<p>lxml-based doctest output comparison.</p>
<p>Note: normally, you should just import the <cite>lxml.usedoctest</cite> and
<cite>lxml.html.usedoctest</cite> modules from within a doctest, instead of this
similarly <code class="docutils literal notranslate"><span class="pre">-</span></code> means its in the example but wasn’t in the output.</p>
<p>You can disable parsing on one line with <code class="docutils literal notranslate"><span class="pre">#</span> <span class="pre">doctest:+NOPARSE_MARKUP</span></code></p>
<dl class="py class">
-<dt id="lxml.doctestcompare.LHTMLOutputChecker">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.doctestcompare.</code><code class="sig-name descname">LHTMLOutputChecker</code><a class="reference internal" href="_modules/lxml/doctestcompare.html#LHTMLOutputChecker"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LHTMLOutputChecker" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LHTMLOutputChecker">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.doctestcompare.</span></span><span class="sig-name descname"><span class="pre">LHTMLOutputChecker</span></span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LHTMLOutputChecker"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LHTMLOutputChecker" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.doctestcompare.LXMLOutputChecker" title="lxml.doctestcompare.LXMLOutputChecker"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.doctestcompare.LXMLOutputChecker</span></code></a></p>
<dl class="py method">
-<dt id="lxml.doctestcompare.LHTMLOutputChecker.get_default_parser">
-<code class="sig-name descname">get_default_parser</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LHTMLOutputChecker.get_default_parser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LHTMLOutputChecker.get_default_parser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LHTMLOutputChecker.get_default_parser">
+<span class="sig-name descname"><span class="pre">get_default_parser</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LHTMLOutputChecker.get_default_parser"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LHTMLOutputChecker.get_default_parser" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.doctestcompare.LXMLOutputChecker">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.doctestcompare.</code><code class="sig-name descname">LXMLOutputChecker</code><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.doctestcompare.</span></span><span class="sig-name descname"><span class="pre">LXMLOutputChecker</span></span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">doctest.OutputChecker</span></code></p>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker._looks_like_markup">
-<code class="sig-name descname">_looks_like_markup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">s</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker._looks_like_markup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker._looks_like_markup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker._looks_like_markup">
+<span class="sig-name descname"><span class="pre">_looks_like_markup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">s</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker._looks_like_markup"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker._looks_like_markup" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.check_output">
-<code class="sig-name descname">check_output</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">want</span></em>, <em class="sig-param"><span class="n">got</span></em>, <em class="sig-param"><span class="n">optionflags</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.check_output"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.check_output" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.check_output">
+<span class="sig-name descname"><span class="pre">check_output</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">want</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">got</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">optionflags</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.check_output"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.check_output" title="Permalink to this definition"></a></dt>
<dd><p>Return True iff the actual output from an example (<cite>got</cite>)
matches the expected output (<cite>want</cite>). These strings are
always considered to match if they are identical; but
</dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.collect_diff">
-<code class="sig-name descname">collect_diff</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">want</span></em>, <em class="sig-param"><span class="n">got</span></em>, <em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="n">indent</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.collect_diff"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.collect_diff" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.collect_diff">
+<span class="sig-name descname"><span class="pre">collect_diff</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">want</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">got</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">indent</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.collect_diff"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.collect_diff" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.collect_diff_end_tag">
-<code class="sig-name descname">collect_diff_end_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">want</span></em>, <em class="sig-param"><span class="n">got</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.collect_diff_end_tag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.collect_diff_end_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.collect_diff_end_tag">
+<span class="sig-name descname"><span class="pre">collect_diff_end_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">want</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">got</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.collect_diff_end_tag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.collect_diff_end_tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.collect_diff_tag">
-<code class="sig-name descname">collect_diff_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">want</span></em>, <em class="sig-param"><span class="n">got</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.collect_diff_tag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.collect_diff_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.collect_diff_tag">
+<span class="sig-name descname"><span class="pre">collect_diff_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">want</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">got</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.collect_diff_tag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.collect_diff_tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.collect_diff_text">
-<code class="sig-name descname">collect_diff_text</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">want</span></em>, <em class="sig-param"><span class="n">got</span></em>, <em class="sig-param"><span class="n">strip</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.collect_diff_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.collect_diff_text" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.collect_diff_text">
+<span class="sig-name descname"><span class="pre">collect_diff_text</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">want</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">got</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strip</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.collect_diff_text"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.collect_diff_text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.compare_docs">
-<code class="sig-name descname">compare_docs</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">want</span></em>, <em class="sig-param"><span class="n">got</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.compare_docs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.compare_docs" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.compare_docs">
+<span class="sig-name descname"><span class="pre">compare_docs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">want</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">got</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.compare_docs"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.compare_docs" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.format_doc">
-<code class="sig-name descname">format_doc</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">doc</span></em>, <em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="n">indent</span></em>, <em class="sig-param"><span class="n">prefix</span><span class="o">=</span><span class="default_value">''</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.format_doc"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.format_doc" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.format_doc">
+<span class="sig-name descname"><span class="pre">format_doc</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">doc</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">indent</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prefix</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.format_doc"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.format_doc" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.format_end_tag">
-<code class="sig-name descname">format_end_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.format_end_tag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.format_end_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.format_end_tag">
+<span class="sig-name descname"><span class="pre">format_end_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.format_end_tag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.format_end_tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.format_tag">
-<code class="sig-name descname">format_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.format_tag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.format_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.format_tag">
+<span class="sig-name descname"><span class="pre">format_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.format_tag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.format_tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.format_text">
-<code class="sig-name descname">format_text</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">strip</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.format_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.format_text" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.format_text">
+<span class="sig-name descname"><span class="pre">format_text</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strip</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.format_text"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.format_text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.get_default_parser">
-<code class="sig-name descname">get_default_parser</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.get_default_parser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.get_default_parser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.get_default_parser">
+<span class="sig-name descname"><span class="pre">get_default_parser</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.get_default_parser"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.get_default_parser" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.get_parser">
-<code class="sig-name descname">get_parser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">want</span></em>, <em class="sig-param"><span class="n">got</span></em>, <em class="sig-param"><span class="n">optionflags</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.get_parser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.get_parser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.get_parser">
+<span class="sig-name descname"><span class="pre">get_parser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">want</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">got</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">optionflags</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.get_parser"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.get_parser" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.html_empty_tag">
-<code class="sig-name descname">html_empty_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">html</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.html_empty_tag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.html_empty_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.html_empty_tag">
+<span class="sig-name descname"><span class="pre">html_empty_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">html</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.html_empty_tag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.html_empty_tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.output_difference">
-<code class="sig-name descname">output_difference</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">example</span></em>, <em class="sig-param"><span class="n">got</span></em>, <em class="sig-param"><span class="n">optionflags</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.output_difference"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.output_difference" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.output_difference">
+<span class="sig-name descname"><span class="pre">output_difference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">example</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">got</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">optionflags</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.output_difference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.output_difference" title="Permalink to this definition"></a></dt>
<dd><p>Return a string describing the differences between the
expected output for a given example (<cite>example</cite>) and the actual
output (<cite>got</cite>). <cite>optionflags</cite> is the set of option flags used
</dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.tag_compare">
-<code class="sig-name descname">tag_compare</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">want</span></em>, <em class="sig-param"><span class="n">got</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.tag_compare"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.tag_compare" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.tag_compare">
+<span class="sig-name descname"><span class="pre">tag_compare</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">want</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">got</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.tag_compare"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.tag_compare" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.text_compare">
-<code class="sig-name descname">text_compare</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">want</span></em>, <em class="sig-param"><span class="n">got</span></em>, <em class="sig-param"><span class="n">strip</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.text_compare"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.text_compare" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.text_compare">
+<span class="sig-name descname"><span class="pre">text_compare</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">want</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">got</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strip</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#LXMLOutputChecker.text_compare"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.text_compare" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.doctestcompare.LXMLOutputChecker.empty_tags">
-<code class="sig-name descname">empty_tags</code><em class="property"> = ('param', 'img', 'area', 'br', 'basefont', 'input', 'base', 'meta', 'link', 'col')</em><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.empty_tags" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.LXMLOutputChecker.empty_tags">
+<span class="sig-name descname"><span class="pre">empty_tags</span></span><em class="property"> <span class="pre">=</span> <span class="pre">('param',</span> <span class="pre">'img',</span> <span class="pre">'area',</span> <span class="pre">'br',</span> <span class="pre">'basefont',</span> <span class="pre">'input',</span> <span class="pre">'base',</span> <span class="pre">'meta',</span> <span class="pre">'link',</span> <span class="pre">'col')</span></em><a class="headerlink" href="#lxml.doctestcompare.LXMLOutputChecker.empty_tags" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.doctestcompare._RestoreChecker">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.doctestcompare.</code><code class="sig-name descname">_RestoreChecker</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">dt_self</span></em>, <em class="sig-param"><span class="n">old_checker</span></em>, <em class="sig-param"><span class="n">new_checker</span></em>, <em class="sig-param"><span class="n">check_func</span></em>, <em class="sig-param"><span class="n">clone_func</span></em>, <em class="sig-param"><span class="n">del_module</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare._RestoreChecker">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.doctestcompare.</span></span><span class="sig-name descname"><span class="pre">_RestoreChecker</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dt_self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">old_checker</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">new_checker</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">clone_func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">del_module</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="py method">
-<dt id="lxml.doctestcompare._RestoreChecker.call_super">
-<code class="sig-name descname">call_super</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.call_super"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.call_super" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare._RestoreChecker.call_super">
+<span class="sig-name descname"><span class="pre">call_super</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.call_super"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.call_super" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare._RestoreChecker.install_clone">
-<code class="sig-name descname">install_clone</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.install_clone"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.install_clone" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare._RestoreChecker.install_clone">
+<span class="sig-name descname"><span class="pre">install_clone</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.install_clone"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.install_clone" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare._RestoreChecker.install_dt_self">
-<code class="sig-name descname">install_dt_self</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.install_dt_self"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.install_dt_self" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare._RestoreChecker.install_dt_self">
+<span class="sig-name descname"><span class="pre">install_dt_self</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.install_dt_self"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.install_dt_self" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare._RestoreChecker.uninstall_clone">
-<code class="sig-name descname">uninstall_clone</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.uninstall_clone"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.uninstall_clone" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare._RestoreChecker.uninstall_clone">
+<span class="sig-name descname"><span class="pre">uninstall_clone</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.uninstall_clone"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.uninstall_clone" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare._RestoreChecker.uninstall_dt_self">
-<code class="sig-name descname">uninstall_dt_self</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.uninstall_dt_self"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.uninstall_dt_self" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare._RestoreChecker.uninstall_dt_self">
+<span class="sig-name descname"><span class="pre">uninstall_dt_self</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.uninstall_dt_self"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.uninstall_dt_self" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.doctestcompare._RestoreChecker.uninstall_module">
-<code class="sig-name descname">uninstall_module</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.uninstall_module"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.uninstall_module" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare._RestoreChecker.uninstall_module">
+<span class="sig-name descname"><span class="pre">uninstall_module</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_RestoreChecker.uninstall_module"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare._RestoreChecker.uninstall_module" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
-<dt id="lxml.doctestcompare._find_doctest_frame">
-<code class="sig-prename descclassname">lxml.doctestcompare.</code><code class="sig-name descname">_find_doctest_frame</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_find_doctest_frame"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare._find_doctest_frame" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare._find_doctest_frame">
+<span class="sig-prename descclassname"><span class="pre">lxml.doctestcompare.</span></span><span class="sig-name descname"><span class="pre">_find_doctest_frame</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#_find_doctest_frame"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare._find_doctest_frame" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.doctestcompare.html_fromstring">
-<code class="sig-prename descclassname">lxml.doctestcompare.</code><code class="sig-name descname">html_fromstring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#html_fromstring"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.html_fromstring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.html_fromstring">
+<span class="sig-prename descclassname"><span class="pre">lxml.doctestcompare.</span></span><span class="sig-name descname"><span class="pre">html_fromstring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#html_fromstring"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.html_fromstring" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.doctestcompare.install">
-<code class="sig-prename descclassname">lxml.doctestcompare.</code><code class="sig-name descname">install</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#install"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.install" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.install">
+<span class="sig-prename descclassname"><span class="pre">lxml.doctestcompare.</span></span><span class="sig-name descname"><span class="pre">install</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#install"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.install" title="Permalink to this definition"></a></dt>
<dd><p>Install doctestcompare for all future doctests.</p>
<p>If html is true, then by default the HTML parser will be used;
otherwise the XML parser is used.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.doctestcompare.norm_whitespace">
-<code class="sig-prename descclassname">lxml.doctestcompare.</code><code class="sig-name descname">norm_whitespace</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">v</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#norm_whitespace"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.norm_whitespace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.norm_whitespace">
+<span class="sig-prename descclassname"><span class="pre">lxml.doctestcompare.</span></span><span class="sig-name descname"><span class="pre">norm_whitespace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#norm_whitespace"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.norm_whitespace" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.doctestcompare.strip">
-<code class="sig-prename descclassname">lxml.doctestcompare.</code><code class="sig-name descname">strip</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">v</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#strip"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.strip" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.strip">
+<span class="sig-prename descclassname"><span class="pre">lxml.doctestcompare.</span></span><span class="sig-name descname"><span class="pre">strip</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#strip"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.strip" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.doctestcompare.temp_install">
-<code class="sig-prename descclassname">lxml.doctestcompare.</code><code class="sig-name descname">temp_install</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">del_module</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#temp_install"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.doctestcompare.temp_install" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.doctestcompare.temp_install">
+<span class="sig-prename descclassname"><span class="pre">lxml.doctestcompare.</span></span><span class="sig-name descname"><span class="pre">temp_install</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">del_module</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/doctestcompare.html#temp_install"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.doctestcompare.temp_install" title="Permalink to this definition"></a></dt>
<dd><p>Use this <em>inside</em> a doctest to enable this checker for this
doctest only.</p>
<p>If html is true, then by default the HTML parser will be used;
otherwise the XML parser is used.</p>
</dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.etree.html" class="btn btn-neutral float-right" title="lxml.etree module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.cssselect.html" class="btn btn-neutral float-left" title="lxml.cssselect module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.cssselect.html" class="btn btn-neutral float-left" title="lxml.cssselect module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.etree.html" class="btn btn-neutral float-right" title="lxml.etree module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.etree module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.etree module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.objectify module" href="lxml.objectify.html" />
<link rel="prev" title="lxml.doctestcompare module" href="lxml.doctestcompare.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li>lxml.etree module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.etree.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.etree">
-<span id="lxml-etree-module"></span><h1>lxml.etree module<a class="headerlink" href="#module-lxml.etree" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.etree">
+<span id="lxml-etree-module"></span><h1>lxml.etree module<a class="headerlink" href="#module-lxml.etree" title="Permalink to this headline"></a></h1>
<p>The <code class="docutils literal notranslate"><span class="pre">lxml.etree</span></code> module implements the extended ElementTree API for XML.</p>
<dl class="py exception">
-<dt id="lxml.etree.C14NError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">C14NError</code><a class="headerlink" href="#lxml.etree.C14NError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.C14NError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">C14NError</span></span><a class="headerlink" href="#lxml.etree.C14NError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Error during C14N serialisation.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.DTDError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">DTDError</code><a class="headerlink" href="#lxml.etree.DTDError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTDError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">DTDError</span></span><a class="headerlink" href="#lxml.etree.DTDError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Base class for DTD errors.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.DTDParseError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">DTDParseError</code><a class="headerlink" href="#lxml.etree.DTDParseError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTDParseError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">DTDParseError</span></span><a class="headerlink" href="#lxml.etree.DTDParseError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.DTDError" title="lxml.etree.DTDError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.DTDError</span></code></a></p>
<p>Error while parsing a DTD.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.DTDValidateError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">DTDValidateError</code><a class="headerlink" href="#lxml.etree.DTDValidateError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTDValidateError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">DTDValidateError</span></span><a class="headerlink" href="#lxml.etree.DTDValidateError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.DTDError" title="lxml.etree.DTDError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.DTDError</span></code></a></p>
<p>Error while validating an XML document with a DTD.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.DocumentInvalid">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">DocumentInvalid</code><a class="headerlink" href="#lxml.etree.DocumentInvalid" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocumentInvalid">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">DocumentInvalid</span></span><a class="headerlink" href="#lxml.etree.DocumentInvalid" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Validation error.</p>
<p>Raised by all document validators when their <code class="docutils literal notranslate"><span class="pre">assertValid(tree)</span></code>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.Error">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">Error</code><a class="headerlink" href="#lxml.etree.Error" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Error">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">Error</span></span><a class="headerlink" href="#lxml.etree.Error" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.LxmlError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">LxmlError</code><a class="headerlink" href="#lxml.etree.LxmlError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.LxmlError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">LxmlError</span></span><a class="headerlink" href="#lxml.etree.LxmlError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.Error" title="lxml.etree.Error"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.Error</span></code></a></p>
<p>Main exception base class for lxml. All other exceptions inherit from
this one.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.LxmlRegistryError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">LxmlRegistryError</code><a class="headerlink" href="#lxml.etree.LxmlRegistryError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.LxmlRegistryError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">LxmlRegistryError</span></span><a class="headerlink" href="#lxml.etree.LxmlRegistryError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Base class of lxml registry errors.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.LxmlSyntaxError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">LxmlSyntaxError</code><a class="headerlink" href="#lxml.etree.LxmlSyntaxError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.LxmlSyntaxError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">LxmlSyntaxError</span></span><a class="headerlink" href="#lxml.etree.LxmlSyntaxError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a>, <code class="xref py py-class docutils literal notranslate"><span class="pre">SyntaxError</span></code></p>
<p>Base class for all syntax errors.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.NamespaceRegistryError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">NamespaceRegistryError</code><a class="headerlink" href="#lxml.etree.NamespaceRegistryError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.NamespaceRegistryError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">NamespaceRegistryError</span></span><a class="headerlink" href="#lxml.etree.NamespaceRegistryError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlRegistryError" title="lxml.etree.LxmlRegistryError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlRegistryError</span></code></a></p>
<p>Error registering a namespace extension.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.ParseError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ParseError</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">message</span></em>, <em class="sig-param"><span class="n">code</span></em>, <em class="sig-param"><span class="n">line</span></em>, <em class="sig-param"><span class="n">column</span></em>, <em class="sig-param"><span class="n">filename</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ParseError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ParseError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ParseError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">code</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">line</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">column</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ParseError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlSyntaxError" title="lxml.etree.LxmlSyntaxError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlSyntaxError</span></code></a></p>
<p>Syntax error while parsing an XML document.</p>
<p>For compatibility with ElementTree 1.3 and later.</p>
-<dl class="py method">
-<dt id="lxml.etree.ParseError.position">
-<em class="property">property </em><code class="sig-name descname">position</code><a class="headerlink" href="#lxml.etree.ParseError.position" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.etree.ParseError.position">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">position</span></span><a class="headerlink" href="#lxml.etree.ParseError.position" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.ParserError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ParserError</code><a class="headerlink" href="#lxml.etree.ParserError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ParserError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ParserError</span></span><a class="headerlink" href="#lxml.etree.ParserError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Internal lxml parser error.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.RelaxNGError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">RelaxNGError</code><a class="headerlink" href="#lxml.etree.RelaxNGError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">RelaxNGError</span></span><a class="headerlink" href="#lxml.etree.RelaxNGError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Base class for RelaxNG errors.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.RelaxNGParseError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">RelaxNGParseError</code><a class="headerlink" href="#lxml.etree.RelaxNGParseError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGParseError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">RelaxNGParseError</span></span><a class="headerlink" href="#lxml.etree.RelaxNGParseError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.RelaxNGError" title="lxml.etree.RelaxNGError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.RelaxNGError</span></code></a></p>
<p>Error while parsing an XML document as RelaxNG.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.RelaxNGValidateError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">RelaxNGValidateError</code><a class="headerlink" href="#lxml.etree.RelaxNGValidateError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGValidateError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">RelaxNGValidateError</span></span><a class="headerlink" href="#lxml.etree.RelaxNGValidateError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.RelaxNGError" title="lxml.etree.RelaxNGError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.RelaxNGError</span></code></a></p>
<p>Error while validating an XML document with a RelaxNG schema.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.SchematronError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">SchematronError</code><a class="headerlink" href="#lxml.etree.SchematronError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.SchematronError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">SchematronError</span></span><a class="headerlink" href="#lxml.etree.SchematronError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Base class of all Schematron errors.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.SchematronParseError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">SchematronParseError</code><a class="headerlink" href="#lxml.etree.SchematronParseError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.SchematronParseError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">SchematronParseError</span></span><a class="headerlink" href="#lxml.etree.SchematronParseError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.SchematronError" title="lxml.etree.SchematronError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.SchematronError</span></code></a></p>
<p>Error while parsing an XML document as Schematron schema.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.SchematronValidateError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">SchematronValidateError</code><a class="headerlink" href="#lxml.etree.SchematronValidateError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.SchematronValidateError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">SchematronValidateError</span></span><a class="headerlink" href="#lxml.etree.SchematronValidateError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.SchematronError" title="lxml.etree.SchematronError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.SchematronError</span></code></a></p>
<p>Error while validating an XML document with a Schematron schema.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.SerialisationError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">SerialisationError</code><a class="headerlink" href="#lxml.etree.SerialisationError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.SerialisationError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">SerialisationError</span></span><a class="headerlink" href="#lxml.etree.SerialisationError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>A libxml2 error that occurred during serialisation.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XIncludeError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XIncludeError</code><a class="headerlink" href="#lxml.etree.XIncludeError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XIncludeError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XIncludeError</span></span><a class="headerlink" href="#lxml.etree.XIncludeError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Error during XInclude processing.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XMLSchemaError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLSchemaError</code><a class="headerlink" href="#lxml.etree.XMLSchemaError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLSchemaError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLSchemaError</span></span><a class="headerlink" href="#lxml.etree.XMLSchemaError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Base class of all XML Schema errors</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XMLSchemaParseError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLSchemaParseError</code><a class="headerlink" href="#lxml.etree.XMLSchemaParseError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLSchemaParseError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLSchemaParseError</span></span><a class="headerlink" href="#lxml.etree.XMLSchemaParseError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XMLSchemaError" title="lxml.etree.XMLSchemaError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XMLSchemaError</span></code></a></p>
<p>Error while parsing an XML document as XML Schema.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XMLSchemaValidateError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLSchemaValidateError</code><a class="headerlink" href="#lxml.etree.XMLSchemaValidateError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLSchemaValidateError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLSchemaValidateError</span></span><a class="headerlink" href="#lxml.etree.XMLSchemaValidateError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XMLSchemaError" title="lxml.etree.XMLSchemaError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XMLSchemaError</span></code></a></p>
<p>Error while validating an XML document with an XML Schema.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XMLSyntaxAssertionError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLSyntaxAssertionError</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">message</span></em>, <em class="sig-param"><span class="n">code</span></em>, <em class="sig-param"><span class="n">line</span></em>, <em class="sig-param"><span class="n">column</span></em>, <em class="sig-param"><span class="n">filename</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLSyntaxAssertionError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLSyntaxAssertionError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLSyntaxAssertionError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">code</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">line</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">column</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLSyntaxAssertionError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XMLSyntaxError" title="lxml.etree.XMLSyntaxError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XMLSyntaxError</span></code></a>, <code class="xref py py-class docutils literal notranslate"><span class="pre">AssertionError</span></code></p>
<p>An XMLSyntaxError that additionally inherits from AssertionError for
ElementTree / backwards compatibility reasons.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XMLSyntaxError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLSyntaxError</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">message</span></em>, <em class="sig-param"><span class="n">code</span></em>, <em class="sig-param"><span class="n">line</span></em>, <em class="sig-param"><span class="n">column</span></em>, <em class="sig-param"><span class="n">filename</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLSyntaxError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLSyntaxError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLSyntaxError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">code</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">line</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">column</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLSyntaxError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.ParseError" title="lxml.etree.ParseError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.ParseError</span></code></a></p>
<p>Syntax error while parsing an XML document.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XPathError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XPathError</code><a class="headerlink" href="#lxml.etree.XPathError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPathError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XPathError</span></span><a class="headerlink" href="#lxml.etree.XPathError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Base class of all XPath errors.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XPathEvalError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XPathEvalError</code><a class="headerlink" href="#lxml.etree.XPathEvalError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPathEvalError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XPathEvalError</span></span><a class="headerlink" href="#lxml.etree.XPathEvalError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XPathError" title="lxml.etree.XPathError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XPathError</span></code></a></p>
<p>Error during XPath evaluation.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XPathFunctionError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XPathFunctionError</code><a class="headerlink" href="#lxml.etree.XPathFunctionError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPathFunctionError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XPathFunctionError</span></span><a class="headerlink" href="#lxml.etree.XPathFunctionError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XPathEvalError" title="lxml.etree.XPathEvalError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XPathEvalError</span></code></a></p>
<p>Internal error looking up an XPath extension function.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XPathResultError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XPathResultError</code><a class="headerlink" href="#lxml.etree.XPathResultError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPathResultError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XPathResultError</span></span><a class="headerlink" href="#lxml.etree.XPathResultError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XPathEvalError" title="lxml.etree.XPathEvalError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XPathEvalError</span></code></a></p>
<p>Error handling an XPath result.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XPathSyntaxError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XPathSyntaxError</code><a class="headerlink" href="#lxml.etree.XPathSyntaxError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPathSyntaxError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XPathSyntaxError</span></span><a class="headerlink" href="#lxml.etree.XPathSyntaxError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlSyntaxError" title="lxml.etree.LxmlSyntaxError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlSyntaxError</span></code></a>, <a class="reference internal" href="#lxml.etree.XPathError" title="lxml.etree.XPathError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XPathError</span></code></a></p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XSLTApplyError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XSLTApplyError</code><a class="headerlink" href="#lxml.etree.XSLTApplyError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTApplyError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XSLTApplyError</span></span><a class="headerlink" href="#lxml.etree.XSLTApplyError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XSLTError" title="lxml.etree.XSLTError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XSLTError</span></code></a></p>
<p>Error running an XSL transformation.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XSLTError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XSLTError</code><a class="headerlink" href="#lxml.etree.XSLTError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XSLTError</span></span><a class="headerlink" href="#lxml.etree.XSLTError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>Base class of all XSLT errors.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XSLTExtensionError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XSLTExtensionError</code><a class="headerlink" href="#lxml.etree.XSLTExtensionError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTExtensionError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XSLTExtensionError</span></span><a class="headerlink" href="#lxml.etree.XSLTExtensionError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XSLTError" title="lxml.etree.XSLTError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XSLTError</span></code></a></p>
<p>Error registering an XSLT extension.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XSLTParseError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XSLTParseError</code><a class="headerlink" href="#lxml.etree.XSLTParseError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTParseError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XSLTParseError</span></span><a class="headerlink" href="#lxml.etree.XSLTParseError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XSLTError" title="lxml.etree.XSLTError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XSLTError</span></code></a></p>
<p>Error parsing a stylesheet document.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree.XSLTSaveError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XSLTSaveError</code><a class="headerlink" href="#lxml.etree.XSLTSaveError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTSaveError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XSLTSaveError</span></span><a class="headerlink" href="#lxml.etree.XSLTSaveError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XSLTError" title="lxml.etree.XSLTError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XSLTError</span></code></a>, <a class="reference internal" href="#lxml.etree.SerialisationError" title="lxml.etree.SerialisationError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.SerialisationError</span></code></a></p>
<p>Error serialising an XSLT result.</p>
</dd></dl>
<dl class="py exception">
-<dt id="lxml.etree._TargetParserResult">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_TargetParserResult</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">result</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._TargetParserResult" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._TargetParserResult">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_TargetParserResult</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">result</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._TargetParserResult" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.AncestorsIterator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">AncestorsIterator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">node</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.AncestorsIterator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.AncestorsIterator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">AncestorsIterator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">node</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.AncestorsIterator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._ElementMatchIterator" title="lxml.etree._ElementMatchIterator"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._ElementMatchIterator</span></code></a></p>
<p>Iterates over the ancestors of an element (from parent to parent).</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.AttributeBasedElementClassLookup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">AttributeBasedElementClassLookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">attribute_name</span></em>, <em class="sig-param"><span class="n">class_mapping</span></em>, <em class="sig-param"><span class="n">fallback</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.AttributeBasedElementClassLookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.AttributeBasedElementClassLookup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">AttributeBasedElementClassLookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attribute_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">class_mapping</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fallback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.AttributeBasedElementClassLookup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.FallbackElementClassLookup" title="lxml.etree.FallbackElementClassLookup"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.FallbackElementClassLookup</span></code></a></p>
<p>Checks an attribute of an Element and looks up the value in a
class dictionary.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.C14NWriterTarget">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">C14NWriterTarget</code><a class="headerlink" href="#lxml.etree.C14NWriterTarget" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.C14NWriterTarget">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">C14NWriterTarget</span></span><a class="headerlink" href="#lxml.etree.C14NWriterTarget" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Canonicalization writer target for the XMLParser.</p>
<p>Serialises parse events to XML C14N 2.0.</p>
<li><p><em>exclude_tags</em>: a set of tag names that should not be serialised</p></li>
</ul>
<dl class="py method">
-<dt id="lxml.etree.C14NWriterTarget._iter_namespaces">
-<code class="sig-name descname">_iter_namespaces</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">ns_stack</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget._iter_namespaces" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.C14NWriterTarget._iter_namespaces">
+<span class="sig-name descname"><span class="pre">_iter_namespaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ns_stack</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget._iter_namespaces" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree.C14NWriterTarget.close">
-<code class="sig-name descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.close" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.C14NWriterTarget.close">
+<span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.close" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree.C14NWriterTarget.comment">
-<code class="sig-name descname">comment</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.comment" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.C14NWriterTarget.comment">
+<span class="sig-name descname"><span class="pre">comment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.comment" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree.C14NWriterTarget.data">
-<code class="sig-name descname">data</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.data" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.C14NWriterTarget.data">
+<span class="sig-name descname"><span class="pre">data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.data" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree.C14NWriterTarget.end">
-<code class="sig-name descname">end</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tag</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.end" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.C14NWriterTarget.end">
+<span class="sig-name descname"><span class="pre">end</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tag</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.end" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree.C14NWriterTarget.pi">
-<code class="sig-name descname">pi</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">target</span></em>, <em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.pi" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.C14NWriterTarget.pi">
+<span class="sig-name descname"><span class="pre">pi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.pi" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree.C14NWriterTarget.start">
-<code class="sig-name descname">start</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tag</span></em>, <em class="sig-param"><span class="n">attrs</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.start" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.C14NWriterTarget.start">
+<span class="sig-name descname"><span class="pre">start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.start" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree.C14NWriterTarget.start_ns">
-<code class="sig-name descname">start_ns</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">prefix</span></em>, <em class="sig-param"><span class="n">uri</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.start_ns" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.C14NWriterTarget.start_ns">
+<span class="sig-name descname"><span class="pre">start_ns</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prefix</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">uri</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.C14NWriterTarget.start_ns" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.CDATA">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">CDATA</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.CDATA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.CDATA">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">CDATA</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.CDATA" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>CDATA factory. This factory creates an opaque data object that
can be used to set Element text. The usual way to use it is:</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.CommentBase">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">CommentBase</code><a class="headerlink" href="#lxml.etree.CommentBase" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.CommentBase">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">CommentBase</span></span><a class="headerlink" href="#lxml.etree.CommentBase" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._Comment" title="lxml.etree._Comment"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._Comment</span></code></a></p>
<p>All custom Comment classes must inherit from this one.</p>
<p>To create an XML Comment instance, use the <code class="docutils literal notranslate"><span class="pre">Comment()</span></code> factory.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.CustomElementClassLookup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">CustomElementClassLookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">fallback</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.CustomElementClassLookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.CustomElementClassLookup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">CustomElementClassLookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fallback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.CustomElementClassLookup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.FallbackElementClassLookup" title="lxml.etree.FallbackElementClassLookup"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.FallbackElementClassLookup</span></code></a></p>
<p>Element class lookup based on a subclass method.</p>
<p>You can inherit from this class and override the method:</p>
* name: name of the element/entity, None for comments, target for PIs</p>
<p>If you return None from this method, the fallback will be called.</p>
<dl class="py method">
-<dt id="lxml.etree.CustomElementClassLookup.lookup">
-<code class="sig-name descname">lookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">type</span></em>, <em class="sig-param"><span class="n">doc</span></em>, <em class="sig-param"><span class="n">namespace</span></em>, <em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.CustomElementClassLookup.lookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.CustomElementClassLookup.lookup">
+<span class="sig-name descname"><span class="pre">lookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">doc</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespace</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.CustomElementClassLookup.lookup" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.DTD">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">DTD</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">file</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">external_id</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DTD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTD">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">DTD</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">external_id</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DTD" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._Validator" title="lxml.etree._Validator"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._Validator</span></code></a></p>
<p>A DTD validator.</p>
<p>Can load from filesystem directly given a filename or file-like object.
Alternatively, pass the keyword parameter <code class="docutils literal notranslate"><span class="pre">external_id</span></code> to load from a
catalog.</p>
<dl class="py method">
-<dt id="lxml.etree.DTD.elements">
-<code class="sig-name descname">elements</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DTD.elements" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTD.elements">
+<span class="sig-name descname"><span class="pre">elements</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DTD.elements" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree.DTD.entities">
-<code class="sig-name descname">entities</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DTD.entities" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTD.entities">
+<span class="sig-name descname"><span class="pre">entities</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DTD.entities" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree.DTD.iterelements">
-<code class="sig-name descname">iterelements</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DTD.iterelements" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTD.iterelements">
+<span class="sig-name descname"><span class="pre">iterelements</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DTD.iterelements" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree.DTD.iterentities">
-<code class="sig-name descname">iterentities</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DTD.iterentities" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTD.iterentities">
+<span class="sig-name descname"><span class="pre">iterentities</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DTD.iterentities" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DTD.external_id">
-<code class="sig-name descname">external_id</code><a class="headerlink" href="#lxml.etree.DTD.external_id" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTD.external_id">
+<span class="sig-name descname"><span class="pre">external_id</span></span><a class="headerlink" href="#lxml.etree.DTD.external_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DTD.name">
-<code class="sig-name descname">name</code><a class="headerlink" href="#lxml.etree.DTD.name" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTD.name">
+<span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#lxml.etree.DTD.name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DTD.system_url">
-<code class="sig-name descname">system_url</code><a class="headerlink" href="#lxml.etree.DTD.system_url" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DTD.system_url">
+<span class="sig-name descname"><span class="pre">system_url</span></span><a class="headerlink" href="#lxml.etree.DTD.system_url" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.DocInfo">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">DocInfo</code><a class="headerlink" href="#lxml.etree.DocInfo" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">DocInfo</span></span><a class="headerlink" href="#lxml.etree.DocInfo" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Document information provided by parser and DTD.</p>
<dl class="py method">
-<dt id="lxml.etree.DocInfo.clear">
-<code class="sig-name descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DocInfo.clear" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.clear">
+<span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.DocInfo.clear" title="Permalink to this definition"></a></dt>
<dd><p>Removes DOCTYPE and internal subset from the document.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DocInfo.URL">
-<code class="sig-name descname">URL</code><a class="headerlink" href="#lxml.etree.DocInfo.URL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.URL">
+<span class="sig-name descname"><span class="pre">URL</span></span><a class="headerlink" href="#lxml.etree.DocInfo.URL" title="Permalink to this definition"></a></dt>
<dd><p>The source URL of the document (or None if unknown).</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DocInfo.doctype">
-<code class="sig-name descname">doctype</code><a class="headerlink" href="#lxml.etree.DocInfo.doctype" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.doctype">
+<span class="sig-name descname"><span class="pre">doctype</span></span><a class="headerlink" href="#lxml.etree.DocInfo.doctype" title="Permalink to this definition"></a></dt>
<dd><p>Returns a DOCTYPE declaration string for the document.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DocInfo.encoding">
-<code class="sig-name descname">encoding</code><a class="headerlink" href="#lxml.etree.DocInfo.encoding" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.encoding">
+<span class="sig-name descname"><span class="pre">encoding</span></span><a class="headerlink" href="#lxml.etree.DocInfo.encoding" title="Permalink to this definition"></a></dt>
<dd><p>Returns the encoding name as declared by the document.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DocInfo.externalDTD">
-<code class="sig-name descname">externalDTD</code><a class="headerlink" href="#lxml.etree.DocInfo.externalDTD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.externalDTD">
+<span class="sig-name descname"><span class="pre">externalDTD</span></span><a class="headerlink" href="#lxml.etree.DocInfo.externalDTD" title="Permalink to this definition"></a></dt>
<dd><p>Returns a DTD validator based on the external subset of the document.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DocInfo.internalDTD">
-<code class="sig-name descname">internalDTD</code><a class="headerlink" href="#lxml.etree.DocInfo.internalDTD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.internalDTD">
+<span class="sig-name descname"><span class="pre">internalDTD</span></span><a class="headerlink" href="#lxml.etree.DocInfo.internalDTD" title="Permalink to this definition"></a></dt>
<dd><p>Returns a DTD validator based on the internal subset of the document.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DocInfo.public_id">
-<code class="sig-name descname">public_id</code><a class="headerlink" href="#lxml.etree.DocInfo.public_id" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.public_id">
+<span class="sig-name descname"><span class="pre">public_id</span></span><a class="headerlink" href="#lxml.etree.DocInfo.public_id" title="Permalink to this definition"></a></dt>
<dd><p>Public ID of the DOCTYPE.</p>
<p>Mutable. May be set to a valid string or None. If a DTD does not
exist, setting this variable (even to None) will create one.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DocInfo.root_name">
-<code class="sig-name descname">root_name</code><a class="headerlink" href="#lxml.etree.DocInfo.root_name" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.root_name">
+<span class="sig-name descname"><span class="pre">root_name</span></span><a class="headerlink" href="#lxml.etree.DocInfo.root_name" title="Permalink to this definition"></a></dt>
<dd><p>Returns the name of the root node as defined by the DOCTYPE.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DocInfo.standalone">
-<code class="sig-name descname">standalone</code><a class="headerlink" href="#lxml.etree.DocInfo.standalone" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.standalone">
+<span class="sig-name descname"><span class="pre">standalone</span></span><a class="headerlink" href="#lxml.etree.DocInfo.standalone" title="Permalink to this definition"></a></dt>
<dd><p>Returns the standalone flag as declared by the document. The possible
values are True (<code class="docutils literal notranslate"><span class="pre">standalone='yes'</span></code>), False
(<code class="docutils literal notranslate"><span class="pre">standalone='no'</span></code> or flag not provided in the declaration),
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DocInfo.system_url">
-<code class="sig-name descname">system_url</code><a class="headerlink" href="#lxml.etree.DocInfo.system_url" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.system_url">
+<span class="sig-name descname"><span class="pre">system_url</span></span><a class="headerlink" href="#lxml.etree.DocInfo.system_url" title="Permalink to this definition"></a></dt>
<dd><p>System ID of the DOCTYPE.</p>
<p>Mutable. May be set to a valid string or None. If a DTD does not
exist, setting this variable (even to None) will create one.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.DocInfo.xml_version">
-<code class="sig-name descname">xml_version</code><a class="headerlink" href="#lxml.etree.DocInfo.xml_version" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.DocInfo.xml_version">
+<span class="sig-name descname"><span class="pre">xml_version</span></span><a class="headerlink" href="#lxml.etree.DocInfo.xml_version" title="Permalink to this definition"></a></dt>
<dd><p>Returns the XML version as declared by the document.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ETCompatXMLParser">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ETCompatXMLParser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">attribute_defaults</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">dtd_validation</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">load_dtd</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">no_network</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">ns_clean</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">recover</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">schema</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">huge_tree</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">remove_blank_text</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">resolve_entities</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">remove_comments</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">remove_pis</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">strip_cdata</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">target</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">compact</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ETCompatXMLParser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ETCompatXMLParser">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ETCompatXMLParser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attribute_defaults</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dtd_validation</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load_dtd</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_network</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ns_clean</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">recover</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">schema</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">huge_tree</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_blank_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">resolve_entities</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_comments</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_pis</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strip_cdata</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compact</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ETCompatXMLParser" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XMLParser" title="lxml.etree.XMLParser"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XMLParser</span></code></a></p>
<p>An XML parser with an ElementTree compatible default setup.</p>
<p>See the XMLParser class for details.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ETXPath">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ETXPath</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">extensions</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">regexp</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">smart_strings</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ETXPath" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ETXPath">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ETXPath</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extensions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">regexp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">smart_strings</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ETXPath" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XPath" title="lxml.etree.XPath"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XPath</span></code></a></p>
<p>Special XPath class that supports the ElementTree {uri} notation for namespaces.</p>
<p>Note that this class does not accept the <code class="docutils literal notranslate"><span class="pre">namespace</span></code> keyword
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ElementBase">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ElementBase</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">children</span></em>, <em class="sig-param"><span class="n">attrib</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">nsmap</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_extra</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementBase" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementBase">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ElementBase</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">children</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrib</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nsmap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_extra</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementBase" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._Element" title="lxml.etree._Element"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._Element</span></code></a></p>
<p>The public Element class. All custom Element classes must inherit
from this one. To create an Element, use the <cite>Element()</cite> factory.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ElementChildIterator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ElementChildIterator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">node</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">reversed</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementChildIterator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementChildIterator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ElementChildIterator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">node</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reversed</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementChildIterator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._ElementMatchIterator" title="lxml.etree._ElementMatchIterator"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._ElementMatchIterator</span></code></a></p>
<p>Iterates over the children of an element.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ElementClassLookup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ElementClassLookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementClassLookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementClassLookup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ElementClassLookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementClassLookup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Superclass of Element class lookups.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ElementDefaultClassLookup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ElementDefaultClassLookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">element</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">comment</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">pi</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">entity</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementDefaultClassLookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementDefaultClassLookup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ElementDefaultClassLookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">comment</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pi</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">entity</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementDefaultClassLookup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.ElementClassLookup" title="lxml.etree.ElementClassLookup"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.ElementClassLookup</span></code></a></p>
<p>Element class lookup scheme that always returns the default Element
class.</p>
<p>The keyword arguments <code class="docutils literal notranslate"><span class="pre">element</span></code>, <code class="docutils literal notranslate"><span class="pre">comment</span></code>, <code class="docutils literal notranslate"><span class="pre">pi</span></code> and <code class="docutils literal notranslate"><span class="pre">entity</span></code>
accept the respective Element classes.</p>
<dl class="py attribute">
-<dt id="lxml.etree.ElementDefaultClassLookup.comment_class">
-<code class="sig-name descname">comment_class</code><a class="headerlink" href="#lxml.etree.ElementDefaultClassLookup.comment_class" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementDefaultClassLookup.comment_class">
+<span class="sig-name descname"><span class="pre">comment_class</span></span><a class="headerlink" href="#lxml.etree.ElementDefaultClassLookup.comment_class" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ElementDefaultClassLookup.element_class">
-<code class="sig-name descname">element_class</code><a class="headerlink" href="#lxml.etree.ElementDefaultClassLookup.element_class" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementDefaultClassLookup.element_class">
+<span class="sig-name descname"><span class="pre">element_class</span></span><a class="headerlink" href="#lxml.etree.ElementDefaultClassLookup.element_class" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ElementDefaultClassLookup.entity_class">
-<code class="sig-name descname">entity_class</code><a class="headerlink" href="#lxml.etree.ElementDefaultClassLookup.entity_class" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementDefaultClassLookup.entity_class">
+<span class="sig-name descname"><span class="pre">entity_class</span></span><a class="headerlink" href="#lxml.etree.ElementDefaultClassLookup.entity_class" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ElementDefaultClassLookup.pi_class">
-<code class="sig-name descname">pi_class</code><a class="headerlink" href="#lxml.etree.ElementDefaultClassLookup.pi_class" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementDefaultClassLookup.pi_class">
+<span class="sig-name descname"><span class="pre">pi_class</span></span><a class="headerlink" href="#lxml.etree.ElementDefaultClassLookup.pi_class" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ElementDepthFirstIterator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ElementDepthFirstIterator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">node</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">inclusive</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementDepthFirstIterator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementDepthFirstIterator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ElementDepthFirstIterator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">node</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inclusive</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementDepthFirstIterator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Iterates over an element and its sub-elements in document order (depth
first pre-order).</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ElementNamespaceClassLookup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ElementNamespaceClassLookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">fallback</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementNamespaceClassLookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementNamespaceClassLookup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ElementNamespaceClassLookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fallback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementNamespaceClassLookup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.FallbackElementClassLookup" title="lxml.etree.FallbackElementClassLookup"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.FallbackElementClassLookup</span></code></a></p>
<p>Element class lookup scheme that searches the Element class in the
Namespace registry.</p>
</pre></div>
</div>
<dl class="py method">
-<dt id="lxml.etree.ElementNamespaceClassLookup.get_namespace">
-<code class="sig-name descname">get_namespace</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">ns_uri</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementNamespaceClassLookup.get_namespace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementNamespaceClassLookup.get_namespace">
+<span class="sig-name descname"><span class="pre">get_namespace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ns_uri</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementNamespaceClassLookup.get_namespace" title="Permalink to this definition"></a></dt>
<dd><p>Retrieve the namespace object associated with the given URI.
Pass None for the empty namespace.</p>
<p>Creates a new namespace object if it does not yet exist.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ElementTextIterator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ElementTextIterator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">element</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">with_tail</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementTextIterator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementTextIterator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ElementTextIterator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_tail</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementTextIterator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Iterates over the text content of a subtree.</p>
<p>You can pass the <code class="docutils literal notranslate"><span class="pre">tag</span></code> keyword argument to restrict text content to a
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.EntityBase">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">EntityBase</code><a class="headerlink" href="#lxml.etree.EntityBase" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.EntityBase">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">EntityBase</span></span><a class="headerlink" href="#lxml.etree.EntityBase" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._Entity" title="lxml.etree._Entity"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._Entity</span></code></a></p>
<p>All custom Entity classes must inherit from this one.</p>
<p>To create an XML Entity instance, use the <code class="docutils literal notranslate"><span class="pre">Entity()</span></code> factory.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ErrorDomains">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ErrorDomains</code><a class="headerlink" href="#lxml.etree.ErrorDomains" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ErrorDomains</span></span><a class="headerlink" href="#lxml.etree.ErrorDomains" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Libxml2 error domains</p>
<dl class="py method">
-<dt id="lxml.etree.ErrorDomains._getName">
-<code class="sig-name descname">_getName</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">/</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ErrorDomains._getName" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains._getName">
+<span class="sig-name descname"><span class="pre">_getName</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">/</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ErrorDomains._getName" title="Permalink to this definition"></a></dt>
<dd><p>Return the value for key if key is in the dictionary, else default.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.BUFFER">
-<code class="sig-name descname">BUFFER</code><em class="property"> = 29</em><a class="headerlink" href="#lxml.etree.ErrorDomains.BUFFER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.BUFFER">
+<span class="sig-name descname"><span class="pre">BUFFER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">29</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.BUFFER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.C14N">
-<code class="sig-name descname">C14N</code><em class="property"> = 21</em><a class="headerlink" href="#lxml.etree.ErrorDomains.C14N" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.C14N">
+<span class="sig-name descname"><span class="pre">C14N</span></span><em class="property"> <span class="pre">=</span> <span class="pre">21</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.C14N" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.CATALOG">
-<code class="sig-name descname">CATALOG</code><em class="property"> = 20</em><a class="headerlink" href="#lxml.etree.ErrorDomains.CATALOG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.CATALOG">
+<span class="sig-name descname"><span class="pre">CATALOG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">20</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.CATALOG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.CHECK">
-<code class="sig-name descname">CHECK</code><em class="property"> = 24</em><a class="headerlink" href="#lxml.etree.ErrorDomains.CHECK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.CHECK">
+<span class="sig-name descname"><span class="pre">CHECK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">24</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.CHECK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.DATATYPE">
-<code class="sig-name descname">DATATYPE</code><em class="property"> = 15</em><a class="headerlink" href="#lxml.etree.ErrorDomains.DATATYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.DATATYPE">
+<span class="sig-name descname"><span class="pre">DATATYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">15</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.DATATYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.DTD">
-<code class="sig-name descname">DTD</code><em class="property"> = 4</em><a class="headerlink" href="#lxml.etree.ErrorDomains.DTD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.DTD">
+<span class="sig-name descname"><span class="pre">DTD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">4</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.DTD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.FTP">
-<code class="sig-name descname">FTP</code><em class="property"> = 9</em><a class="headerlink" href="#lxml.etree.ErrorDomains.FTP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.FTP">
+<span class="sig-name descname"><span class="pre">FTP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">9</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.FTP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.HTML">
-<code class="sig-name descname">HTML</code><em class="property"> = 5</em><a class="headerlink" href="#lxml.etree.ErrorDomains.HTML" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.HTML">
+<span class="sig-name descname"><span class="pre">HTML</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.HTML" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.HTTP">
-<code class="sig-name descname">HTTP</code><em class="property"> = 10</em><a class="headerlink" href="#lxml.etree.ErrorDomains.HTTP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.HTTP">
+<span class="sig-name descname"><span class="pre">HTTP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">10</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.HTTP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.I18N">
-<code class="sig-name descname">I18N</code><em class="property"> = 27</em><a class="headerlink" href="#lxml.etree.ErrorDomains.I18N" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.I18N">
+<span class="sig-name descname"><span class="pre">I18N</span></span><em class="property"> <span class="pre">=</span> <span class="pre">27</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.I18N" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.IO">
-<code class="sig-name descname">IO</code><em class="property"> = 8</em><a class="headerlink" href="#lxml.etree.ErrorDomains.IO" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.IO">
+<span class="sig-name descname"><span class="pre">IO</span></span><em class="property"> <span class="pre">=</span> <span class="pre">8</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.IO" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.MEMORY">
-<code class="sig-name descname">MEMORY</code><em class="property"> = 6</em><a class="headerlink" href="#lxml.etree.ErrorDomains.MEMORY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.MEMORY">
+<span class="sig-name descname"><span class="pre">MEMORY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">6</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.MEMORY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.MODULE">
-<code class="sig-name descname">MODULE</code><em class="property"> = 26</em><a class="headerlink" href="#lxml.etree.ErrorDomains.MODULE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.MODULE">
+<span class="sig-name descname"><span class="pre">MODULE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">26</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.MODULE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.NAMESPACE">
-<code class="sig-name descname">NAMESPACE</code><em class="property"> = 3</em><a class="headerlink" href="#lxml.etree.ErrorDomains.NAMESPACE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.NAMESPACE">
+<span class="sig-name descname"><span class="pre">NAMESPACE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.NAMESPACE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.NONE">
-<code class="sig-name descname">NONE</code><em class="property"> = 0</em><a class="headerlink" href="#lxml.etree.ErrorDomains.NONE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.NONE">
+<span class="sig-name descname"><span class="pre">NONE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">0</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.NONE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.OUTPUT">
-<code class="sig-name descname">OUTPUT</code><em class="property"> = 7</em><a class="headerlink" href="#lxml.etree.ErrorDomains.OUTPUT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.OUTPUT">
+<span class="sig-name descname"><span class="pre">OUTPUT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">7</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.OUTPUT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.PARSER">
-<code class="sig-name descname">PARSER</code><em class="property"> = 1</em><a class="headerlink" href="#lxml.etree.ErrorDomains.PARSER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.PARSER">
+<span class="sig-name descname"><span class="pre">PARSER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.PARSER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.REGEXP">
-<code class="sig-name descname">REGEXP</code><em class="property"> = 14</em><a class="headerlink" href="#lxml.etree.ErrorDomains.REGEXP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.REGEXP">
+<span class="sig-name descname"><span class="pre">REGEXP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">14</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.REGEXP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.RELAXNGP">
-<code class="sig-name descname">RELAXNGP</code><em class="property"> = 18</em><a class="headerlink" href="#lxml.etree.ErrorDomains.RELAXNGP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.RELAXNGP">
+<span class="sig-name descname"><span class="pre">RELAXNGP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">18</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.RELAXNGP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.RELAXNGV">
-<code class="sig-name descname">RELAXNGV</code><em class="property"> = 19</em><a class="headerlink" href="#lxml.etree.ErrorDomains.RELAXNGV" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.RELAXNGV">
+<span class="sig-name descname"><span class="pre">RELAXNGV</span></span><em class="property"> <span class="pre">=</span> <span class="pre">19</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.RELAXNGV" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.SCHEMASP">
-<code class="sig-name descname">SCHEMASP</code><em class="property"> = 16</em><a class="headerlink" href="#lxml.etree.ErrorDomains.SCHEMASP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.SCHEMASP">
+<span class="sig-name descname"><span class="pre">SCHEMASP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">16</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.SCHEMASP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.SCHEMASV">
-<code class="sig-name descname">SCHEMASV</code><em class="property"> = 17</em><a class="headerlink" href="#lxml.etree.ErrorDomains.SCHEMASV" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.SCHEMASV">
+<span class="sig-name descname"><span class="pre">SCHEMASV</span></span><em class="property"> <span class="pre">=</span> <span class="pre">17</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.SCHEMASV" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.SCHEMATRONV">
-<code class="sig-name descname">SCHEMATRONV</code><em class="property"> = 28</em><a class="headerlink" href="#lxml.etree.ErrorDomains.SCHEMATRONV" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.SCHEMATRONV">
+<span class="sig-name descname"><span class="pre">SCHEMATRONV</span></span><em class="property"> <span class="pre">=</span> <span class="pre">28</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.SCHEMATRONV" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.TREE">
-<code class="sig-name descname">TREE</code><em class="property"> = 2</em><a class="headerlink" href="#lxml.etree.ErrorDomains.TREE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.TREE">
+<span class="sig-name descname"><span class="pre">TREE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.TREE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.URI">
-<code class="sig-name descname">URI</code><em class="property"> = 30</em><a class="headerlink" href="#lxml.etree.ErrorDomains.URI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.URI">
+<span class="sig-name descname"><span class="pre">URI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">30</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.URI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.VALID">
-<code class="sig-name descname">VALID</code><em class="property"> = 23</em><a class="headerlink" href="#lxml.etree.ErrorDomains.VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.VALID">
+<span class="sig-name descname"><span class="pre">VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">23</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.WRITER">
-<code class="sig-name descname">WRITER</code><em class="property"> = 25</em><a class="headerlink" href="#lxml.etree.ErrorDomains.WRITER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.WRITER">
+<span class="sig-name descname"><span class="pre">WRITER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">25</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.WRITER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.XINCLUDE">
-<code class="sig-name descname">XINCLUDE</code><em class="property"> = 11</em><a class="headerlink" href="#lxml.etree.ErrorDomains.XINCLUDE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.XINCLUDE">
+<span class="sig-name descname"><span class="pre">XINCLUDE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">11</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.XINCLUDE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.XPATH">
-<code class="sig-name descname">XPATH</code><em class="property"> = 12</em><a class="headerlink" href="#lxml.etree.ErrorDomains.XPATH" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.XPATH">
+<span class="sig-name descname"><span class="pre">XPATH</span></span><em class="property"> <span class="pre">=</span> <span class="pre">12</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.XPATH" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.XPOINTER">
-<code class="sig-name descname">XPOINTER</code><em class="property"> = 13</em><a class="headerlink" href="#lxml.etree.ErrorDomains.XPOINTER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.XPOINTER">
+<span class="sig-name descname"><span class="pre">XPOINTER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">13</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.XPOINTER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains.XSLT">
-<code class="sig-name descname">XSLT</code><em class="property"> = 22</em><a class="headerlink" href="#lxml.etree.ErrorDomains.XSLT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains.XSLT">
+<span class="sig-name descname"><span class="pre">XSLT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">22</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains.XSLT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorDomains._names">
-<code class="sig-name descname">_names</code><em class="property"> = {0: 'NONE', 1: 'PARSER', 2: 'TREE', 3: 'NAMESPACE', 4: 'DTD', 5: 'HTML', 6: 'MEMORY', 7: 'OUTPUT', 8: 'IO', 9: 'FTP', 10: 'HTTP', 11: 'XINCLUDE', 12: 'XPATH', 13: 'XPOINTER', 14: 'REGEXP', 15: 'DATATYPE', 16: 'SCHEMASP', 17: 'SCHEMASV', 18: 'RELAXNGP', 19: 'RELAXNGV', 20: 'CATALOG', 21: 'C14N', 22: 'XSLT', 23: 'VALID', 24: 'CHECK', 25: 'WRITER', 26: 'MODULE', 27: 'I18N', 28: 'SCHEMATRONV', 29: 'BUFFER', 30: 'URI'}</em><a class="headerlink" href="#lxml.etree.ErrorDomains._names" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorDomains._names">
+<span class="sig-name descname"><span class="pre">_names</span></span><em class="property"> <span class="pre">=</span> <span class="pre">{0:</span> <span class="pre">'NONE',</span> <span class="pre">1:</span> <span class="pre">'PARSER',</span> <span class="pre">2:</span> <span class="pre">'TREE',</span> <span class="pre">3:</span> <span class="pre">'NAMESPACE',</span> <span class="pre">4:</span> <span class="pre">'DTD',</span> <span class="pre">5:</span> <span class="pre">'HTML',</span> <span class="pre">6:</span> <span class="pre">'MEMORY',</span> <span class="pre">7:</span> <span class="pre">'OUTPUT',</span> <span class="pre">8:</span> <span class="pre">'IO',</span> <span class="pre">9:</span> <span class="pre">'FTP',</span> <span class="pre">10:</span> <span class="pre">'HTTP',</span> <span class="pre">11:</span> <span class="pre">'XINCLUDE',</span> <span class="pre">12:</span> <span class="pre">'XPATH',</span> <span class="pre">13:</span> <span class="pre">'XPOINTER',</span> <span class="pre">14:</span> <span class="pre">'REGEXP',</span> <span class="pre">15:</span> <span class="pre">'DATATYPE',</span> <span class="pre">16:</span> <span class="pre">'SCHEMASP',</span> <span class="pre">17:</span> <span class="pre">'SCHEMASV',</span> <span class="pre">18:</span> <span class="pre">'RELAXNGP',</span> <span class="pre">19:</span> <span class="pre">'RELAXNGV',</span> <span class="pre">20:</span> <span class="pre">'CATALOG',</span> <span class="pre">21:</span> <span class="pre">'C14N',</span> <span class="pre">22:</span> <span class="pre">'XSLT',</span> <span class="pre">23:</span> <span class="pre">'VALID',</span> <span class="pre">24:</span> <span class="pre">'CHECK',</span> <span class="pre">25:</span> <span class="pre">'WRITER',</span> <span class="pre">26:</span> <span class="pre">'MODULE',</span> <span class="pre">27:</span> <span class="pre">'I18N',</span> <span class="pre">28:</span> <span class="pre">'SCHEMATRONV',</span> <span class="pre">29:</span> <span class="pre">'BUFFER',</span> <span class="pre">30:</span> <span class="pre">'URI'}</span></em><a class="headerlink" href="#lxml.etree.ErrorDomains._names" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ErrorLevels">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ErrorLevels</code><a class="headerlink" href="#lxml.etree.ErrorLevels" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorLevels">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ErrorLevels</span></span><a class="headerlink" href="#lxml.etree.ErrorLevels" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Libxml2 error levels</p>
<dl class="py method">
-<dt id="lxml.etree.ErrorLevels._getName">
-<code class="sig-name descname">_getName</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">/</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ErrorLevels._getName" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorLevels._getName">
+<span class="sig-name descname"><span class="pre">_getName</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">/</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ErrorLevels._getName" title="Permalink to this definition"></a></dt>
<dd><p>Return the value for key if key is in the dictionary, else default.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorLevels.ERROR">
-<code class="sig-name descname">ERROR</code><em class="property"> = 2</em><a class="headerlink" href="#lxml.etree.ErrorLevels.ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorLevels.ERROR">
+<span class="sig-name descname"><span class="pre">ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2</span></em><a class="headerlink" href="#lxml.etree.ErrorLevels.ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorLevels.FATAL">
-<code class="sig-name descname">FATAL</code><em class="property"> = 3</em><a class="headerlink" href="#lxml.etree.ErrorLevels.FATAL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorLevels.FATAL">
+<span class="sig-name descname"><span class="pre">FATAL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3</span></em><a class="headerlink" href="#lxml.etree.ErrorLevels.FATAL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorLevels.NONE">
-<code class="sig-name descname">NONE</code><em class="property"> = 0</em><a class="headerlink" href="#lxml.etree.ErrorLevels.NONE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorLevels.NONE">
+<span class="sig-name descname"><span class="pre">NONE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">0</span></em><a class="headerlink" href="#lxml.etree.ErrorLevels.NONE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorLevels.WARNING">
-<code class="sig-name descname">WARNING</code><em class="property"> = 1</em><a class="headerlink" href="#lxml.etree.ErrorLevels.WARNING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorLevels.WARNING">
+<span class="sig-name descname"><span class="pre">WARNING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1</span></em><a class="headerlink" href="#lxml.etree.ErrorLevels.WARNING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorLevels._names">
-<code class="sig-name descname">_names</code><em class="property"> = {0: 'NONE', 1: 'WARNING', 2: 'ERROR', 3: 'FATAL'}</em><a class="headerlink" href="#lxml.etree.ErrorLevels._names" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorLevels._names">
+<span class="sig-name descname"><span class="pre">_names</span></span><em class="property"> <span class="pre">=</span> <span class="pre">{0:</span> <span class="pre">'NONE',</span> <span class="pre">1:</span> <span class="pre">'WARNING',</span> <span class="pre">2:</span> <span class="pre">'ERROR',</span> <span class="pre">3:</span> <span class="pre">'FATAL'}</span></em><a class="headerlink" href="#lxml.etree.ErrorLevels._names" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ErrorTypes">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ErrorTypes</code><a class="headerlink" href="#lxml.etree.ErrorTypes" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ErrorTypes</span></span><a class="headerlink" href="#lxml.etree.ErrorTypes" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Libxml2 error types</p>
<dl class="py method">
-<dt id="lxml.etree.ErrorTypes._getName">
-<code class="sig-name descname">_getName</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">/</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ErrorTypes._getName" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes._getName">
+<span class="sig-name descname"><span class="pre">_getName</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">/</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ErrorTypes._getName" title="Permalink to this definition"></a></dt>
<dd><p>Return the value for key if key is in the dictionary, else default.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.BUF_OVERFLOW">
-<code class="sig-name descname">BUF_OVERFLOW</code><em class="property"> = 7000</em><a class="headerlink" href="#lxml.etree.ErrorTypes.BUF_OVERFLOW" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.BUF_OVERFLOW">
+<span class="sig-name descname"><span class="pre">BUF_OVERFLOW</span></span><em class="property"> <span class="pre">=</span> <span class="pre">7000</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.BUF_OVERFLOW" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.C14N_CREATE_CTXT">
-<code class="sig-name descname">C14N_CREATE_CTXT</code><em class="property"> = 1950</em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_CREATE_CTXT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.C14N_CREATE_CTXT">
+<span class="sig-name descname"><span class="pre">C14N_CREATE_CTXT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1950</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_CREATE_CTXT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.C14N_CREATE_STACK">
-<code class="sig-name descname">C14N_CREATE_STACK</code><em class="property"> = 1952</em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_CREATE_STACK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.C14N_CREATE_STACK">
+<span class="sig-name descname"><span class="pre">C14N_CREATE_STACK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1952</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_CREATE_STACK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.C14N_INVALID_NODE">
-<code class="sig-name descname">C14N_INVALID_NODE</code><em class="property"> = 1953</em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_INVALID_NODE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.C14N_INVALID_NODE">
+<span class="sig-name descname"><span class="pre">C14N_INVALID_NODE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1953</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_INVALID_NODE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.C14N_RELATIVE_NAMESPACE">
-<code class="sig-name descname">C14N_RELATIVE_NAMESPACE</code><em class="property"> = 1955</em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_RELATIVE_NAMESPACE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.C14N_RELATIVE_NAMESPACE">
+<span class="sig-name descname"><span class="pre">C14N_RELATIVE_NAMESPACE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1955</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_RELATIVE_NAMESPACE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.C14N_REQUIRES_UTF8">
-<code class="sig-name descname">C14N_REQUIRES_UTF8</code><em class="property"> = 1951</em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_REQUIRES_UTF8" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.C14N_REQUIRES_UTF8">
+<span class="sig-name descname"><span class="pre">C14N_REQUIRES_UTF8</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1951</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_REQUIRES_UTF8" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.C14N_UNKNOW_NODE">
-<code class="sig-name descname">C14N_UNKNOW_NODE</code><em class="property"> = 1954</em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_UNKNOW_NODE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.C14N_UNKNOW_NODE">
+<span class="sig-name descname"><span class="pre">C14N_UNKNOW_NODE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1954</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.C14N_UNKNOW_NODE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CATALOG_ENTRY_BROKEN">
-<code class="sig-name descname">CATALOG_ENTRY_BROKEN</code><em class="property"> = 1651</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CATALOG_ENTRY_BROKEN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CATALOG_ENTRY_BROKEN">
+<span class="sig-name descname"><span class="pre">CATALOG_ENTRY_BROKEN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1651</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CATALOG_ENTRY_BROKEN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CATALOG_MISSING_ATTR">
-<code class="sig-name descname">CATALOG_MISSING_ATTR</code><em class="property"> = 1650</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CATALOG_MISSING_ATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CATALOG_MISSING_ATTR">
+<span class="sig-name descname"><span class="pre">CATALOG_MISSING_ATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1650</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CATALOG_MISSING_ATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CATALOG_NOT_CATALOG">
-<code class="sig-name descname">CATALOG_NOT_CATALOG</code><em class="property"> = 1653</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CATALOG_NOT_CATALOG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CATALOG_NOT_CATALOG">
+<span class="sig-name descname"><span class="pre">CATALOG_NOT_CATALOG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1653</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CATALOG_NOT_CATALOG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CATALOG_PREFER_VALUE">
-<code class="sig-name descname">CATALOG_PREFER_VALUE</code><em class="property"> = 1652</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CATALOG_PREFER_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CATALOG_PREFER_VALUE">
+<span class="sig-name descname"><span class="pre">CATALOG_PREFER_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1652</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CATALOG_PREFER_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CATALOG_RECURSION">
-<code class="sig-name descname">CATALOG_RECURSION</code><em class="property"> = 1654</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CATALOG_RECURSION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CATALOG_RECURSION">
+<span class="sig-name descname"><span class="pre">CATALOG_RECURSION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1654</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CATALOG_RECURSION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_ENTITY_TYPE">
-<code class="sig-name descname">CHECK_ENTITY_TYPE</code><em class="property"> = 5012</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_ENTITY_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_ENTITY_TYPE">
+<span class="sig-name descname"><span class="pre">CHECK_ENTITY_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5012</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_ENTITY_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_ATTRIBUTE">
-<code class="sig-name descname">CHECK_FOUND_ATTRIBUTE</code><em class="property"> = 5001</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_ATTRIBUTE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_ATTRIBUTE">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_ATTRIBUTE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5001</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_ATTRIBUTE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_CDATA">
-<code class="sig-name descname">CHECK_FOUND_CDATA</code><em class="property"> = 5003</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_CDATA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_CDATA">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_CDATA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5003</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_CDATA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_COMMENT">
-<code class="sig-name descname">CHECK_FOUND_COMMENT</code><em class="property"> = 5007</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_COMMENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_COMMENT">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_COMMENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5007</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_COMMENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_DOCTYPE">
-<code class="sig-name descname">CHECK_FOUND_DOCTYPE</code><em class="property"> = 5008</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_DOCTYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_DOCTYPE">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_DOCTYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5008</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_DOCTYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_ELEMENT">
-<code class="sig-name descname">CHECK_FOUND_ELEMENT</code><em class="property"> = 5000</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_ELEMENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_ELEMENT">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_ELEMENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5000</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_ELEMENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_ENTITY">
-<code class="sig-name descname">CHECK_FOUND_ENTITY</code><em class="property"> = 5005</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_ENTITY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_ENTITY">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_ENTITY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5005</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_ENTITY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_ENTITYREF">
-<code class="sig-name descname">CHECK_FOUND_ENTITYREF</code><em class="property"> = 5004</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_ENTITYREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_ENTITYREF">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_ENTITYREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5004</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_ENTITYREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_FRAGMENT">
-<code class="sig-name descname">CHECK_FOUND_FRAGMENT</code><em class="property"> = 5009</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_FRAGMENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_FRAGMENT">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_FRAGMENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5009</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_FRAGMENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_NOTATION">
-<code class="sig-name descname">CHECK_FOUND_NOTATION</code><em class="property"> = 5010</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_NOTATION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_NOTATION">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_NOTATION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5010</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_NOTATION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_PI">
-<code class="sig-name descname">CHECK_FOUND_PI</code><em class="property"> = 5006</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_PI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_PI">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_PI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5006</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_PI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_FOUND_TEXT">
-<code class="sig-name descname">CHECK_FOUND_TEXT</code><em class="property"> = 5002</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_TEXT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_FOUND_TEXT">
+<span class="sig-name descname"><span class="pre">CHECK_FOUND_TEXT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5002</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_FOUND_TEXT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NAME_NOT_NULL">
-<code class="sig-name descname">CHECK_NAME_NOT_NULL</code><em class="property"> = 5037</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NAME_NOT_NULL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NAME_NOT_NULL">
+<span class="sig-name descname"><span class="pre">CHECK_NAME_NOT_NULL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5037</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NAME_NOT_NULL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NOT_ATTR">
-<code class="sig-name descname">CHECK_NOT_ATTR</code><em class="property"> = 5023</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_ATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NOT_ATTR">
+<span class="sig-name descname"><span class="pre">CHECK_NOT_ATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5023</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_ATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NOT_ATTR_DECL">
-<code class="sig-name descname">CHECK_NOT_ATTR_DECL</code><em class="property"> = 5024</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_ATTR_DECL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NOT_ATTR_DECL">
+<span class="sig-name descname"><span class="pre">CHECK_NOT_ATTR_DECL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5024</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_ATTR_DECL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NOT_DTD">
-<code class="sig-name descname">CHECK_NOT_DTD</code><em class="property"> = 5022</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_DTD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NOT_DTD">
+<span class="sig-name descname"><span class="pre">CHECK_NOT_DTD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5022</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_DTD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NOT_ELEM_DECL">
-<code class="sig-name descname">CHECK_NOT_ELEM_DECL</code><em class="property"> = 5025</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_ELEM_DECL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NOT_ELEM_DECL">
+<span class="sig-name descname"><span class="pre">CHECK_NOT_ELEM_DECL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5025</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_ELEM_DECL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NOT_ENTITY_DECL">
-<code class="sig-name descname">CHECK_NOT_ENTITY_DECL</code><em class="property"> = 5026</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_ENTITY_DECL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NOT_ENTITY_DECL">
+<span class="sig-name descname"><span class="pre">CHECK_NOT_ENTITY_DECL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5026</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_ENTITY_DECL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NOT_NCNAME">
-<code class="sig-name descname">CHECK_NOT_NCNAME</code><em class="property"> = 5034</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_NCNAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NOT_NCNAME">
+<span class="sig-name descname"><span class="pre">CHECK_NOT_NCNAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5034</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_NCNAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NOT_NS_DECL">
-<code class="sig-name descname">CHECK_NOT_NS_DECL</code><em class="property"> = 5027</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_NS_DECL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NOT_NS_DECL">
+<span class="sig-name descname"><span class="pre">CHECK_NOT_NS_DECL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5027</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_NS_DECL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NOT_UTF8">
-<code class="sig-name descname">CHECK_NOT_UTF8</code><em class="property"> = 5032</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_UTF8" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NOT_UTF8">
+<span class="sig-name descname"><span class="pre">CHECK_NOT_UTF8</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5032</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NOT_UTF8" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NO_DICT">
-<code class="sig-name descname">CHECK_NO_DICT</code><em class="property"> = 5033</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_DICT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NO_DICT">
+<span class="sig-name descname"><span class="pre">CHECK_NO_DICT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5033</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_DICT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NO_DOC">
-<code class="sig-name descname">CHECK_NO_DOC</code><em class="property"> = 5014</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_DOC" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NO_DOC">
+<span class="sig-name descname"><span class="pre">CHECK_NO_DOC</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5014</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_DOC" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NO_ELEM">
-<code class="sig-name descname">CHECK_NO_ELEM</code><em class="property"> = 5016</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_ELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NO_ELEM">
+<span class="sig-name descname"><span class="pre">CHECK_NO_ELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5016</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_ELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NO_HREF">
-<code class="sig-name descname">CHECK_NO_HREF</code><em class="property"> = 5028</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_HREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NO_HREF">
+<span class="sig-name descname"><span class="pre">CHECK_NO_HREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5028</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_HREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NO_NAME">
-<code class="sig-name descname">CHECK_NO_NAME</code><em class="property"> = 5015</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NO_NAME">
+<span class="sig-name descname"><span class="pre">CHECK_NO_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5015</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NO_NEXT">
-<code class="sig-name descname">CHECK_NO_NEXT</code><em class="property"> = 5020</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_NEXT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NO_NEXT">
+<span class="sig-name descname"><span class="pre">CHECK_NO_NEXT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5020</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_NEXT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NO_PARENT">
-<code class="sig-name descname">CHECK_NO_PARENT</code><em class="property"> = 5013</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_PARENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NO_PARENT">
+<span class="sig-name descname"><span class="pre">CHECK_NO_PARENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5013</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_PARENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NO_PREV">
-<code class="sig-name descname">CHECK_NO_PREV</code><em class="property"> = 5018</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_PREV" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NO_PREV">
+<span class="sig-name descname"><span class="pre">CHECK_NO_PREV</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5018</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NO_PREV" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NS_ANCESTOR">
-<code class="sig-name descname">CHECK_NS_ANCESTOR</code><em class="property"> = 5031</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NS_ANCESTOR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NS_ANCESTOR">
+<span class="sig-name descname"><span class="pre">CHECK_NS_ANCESTOR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5031</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NS_ANCESTOR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_NS_SCOPE">
-<code class="sig-name descname">CHECK_NS_SCOPE</code><em class="property"> = 5030</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NS_SCOPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_NS_SCOPE">
+<span class="sig-name descname"><span class="pre">CHECK_NS_SCOPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5030</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_NS_SCOPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_OUTSIDE_DICT">
-<code class="sig-name descname">CHECK_OUTSIDE_DICT</code><em class="property"> = 5035</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_OUTSIDE_DICT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_OUTSIDE_DICT">
+<span class="sig-name descname"><span class="pre">CHECK_OUTSIDE_DICT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5035</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_OUTSIDE_DICT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_UNKNOWN_NODE">
-<code class="sig-name descname">CHECK_UNKNOWN_NODE</code><em class="property"> = 5011</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_UNKNOWN_NODE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_UNKNOWN_NODE">
+<span class="sig-name descname"><span class="pre">CHECK_UNKNOWN_NODE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5011</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_UNKNOWN_NODE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_WRONG_DOC">
-<code class="sig-name descname">CHECK_WRONG_DOC</code><em class="property"> = 5017</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_WRONG_DOC" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_WRONG_DOC">
+<span class="sig-name descname"><span class="pre">CHECK_WRONG_DOC</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5017</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_WRONG_DOC" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_WRONG_NAME">
-<code class="sig-name descname">CHECK_WRONG_NAME</code><em class="property"> = 5036</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_WRONG_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_WRONG_NAME">
+<span class="sig-name descname"><span class="pre">CHECK_WRONG_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5036</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_WRONG_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_WRONG_NEXT">
-<code class="sig-name descname">CHECK_WRONG_NEXT</code><em class="property"> = 5021</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_WRONG_NEXT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_WRONG_NEXT">
+<span class="sig-name descname"><span class="pre">CHECK_WRONG_NEXT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5021</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_WRONG_NEXT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_WRONG_PARENT">
-<code class="sig-name descname">CHECK_WRONG_PARENT</code><em class="property"> = 5029</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_WRONG_PARENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_WRONG_PARENT">
+<span class="sig-name descname"><span class="pre">CHECK_WRONG_PARENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5029</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_WRONG_PARENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.CHECK_WRONG_PREV">
-<code class="sig-name descname">CHECK_WRONG_PREV</code><em class="property"> = 5019</em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_WRONG_PREV" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.CHECK_WRONG_PREV">
+<span class="sig-name descname"><span class="pre">CHECK_WRONG_PREV</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5019</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.CHECK_WRONG_PREV" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ATTRIBUTE_DEFAULT">
-<code class="sig-name descname">DTD_ATTRIBUTE_DEFAULT</code><em class="property"> = 500</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ATTRIBUTE_DEFAULT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ATTRIBUTE_DEFAULT">
+<span class="sig-name descname"><span class="pre">DTD_ATTRIBUTE_DEFAULT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">500</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ATTRIBUTE_DEFAULT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ATTRIBUTE_REDEFINED">
-<code class="sig-name descname">DTD_ATTRIBUTE_REDEFINED</code><em class="property"> = 501</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ATTRIBUTE_REDEFINED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ATTRIBUTE_REDEFINED">
+<span class="sig-name descname"><span class="pre">DTD_ATTRIBUTE_REDEFINED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">501</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ATTRIBUTE_REDEFINED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ATTRIBUTE_VALUE">
-<code class="sig-name descname">DTD_ATTRIBUTE_VALUE</code><em class="property"> = 502</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ATTRIBUTE_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ATTRIBUTE_VALUE">
+<span class="sig-name descname"><span class="pre">DTD_ATTRIBUTE_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">502</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ATTRIBUTE_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_CONTENT_ERROR">
-<code class="sig-name descname">DTD_CONTENT_ERROR</code><em class="property"> = 503</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_CONTENT_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_CONTENT_ERROR">
+<span class="sig-name descname"><span class="pre">DTD_CONTENT_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">503</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_CONTENT_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_CONTENT_MODEL">
-<code class="sig-name descname">DTD_CONTENT_MODEL</code><em class="property"> = 504</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_CONTENT_MODEL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_CONTENT_MODEL">
+<span class="sig-name descname"><span class="pre">DTD_CONTENT_MODEL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">504</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_CONTENT_MODEL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_CONTENT_NOT_DETERMINIST">
-<code class="sig-name descname">DTD_CONTENT_NOT_DETERMINIST</code><em class="property"> = 505</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_CONTENT_NOT_DETERMINIST" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_CONTENT_NOT_DETERMINIST">
+<span class="sig-name descname"><span class="pre">DTD_CONTENT_NOT_DETERMINIST</span></span><em class="property"> <span class="pre">=</span> <span class="pre">505</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_CONTENT_NOT_DETERMINIST" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_DIFFERENT_PREFIX">
-<code class="sig-name descname">DTD_DIFFERENT_PREFIX</code><em class="property"> = 506</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_DIFFERENT_PREFIX" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_DIFFERENT_PREFIX">
+<span class="sig-name descname"><span class="pre">DTD_DIFFERENT_PREFIX</span></span><em class="property"> <span class="pre">=</span> <span class="pre">506</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_DIFFERENT_PREFIX" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_DUP_TOKEN">
-<code class="sig-name descname">DTD_DUP_TOKEN</code><em class="property"> = 541</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_DUP_TOKEN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_DUP_TOKEN">
+<span class="sig-name descname"><span class="pre">DTD_DUP_TOKEN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">541</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_DUP_TOKEN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ELEM_DEFAULT_NAMESPACE">
-<code class="sig-name descname">DTD_ELEM_DEFAULT_NAMESPACE</code><em class="property"> = 507</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ELEM_DEFAULT_NAMESPACE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ELEM_DEFAULT_NAMESPACE">
+<span class="sig-name descname"><span class="pre">DTD_ELEM_DEFAULT_NAMESPACE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">507</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ELEM_DEFAULT_NAMESPACE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ELEM_NAMESPACE">
-<code class="sig-name descname">DTD_ELEM_NAMESPACE</code><em class="property"> = 508</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ELEM_NAMESPACE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ELEM_NAMESPACE">
+<span class="sig-name descname"><span class="pre">DTD_ELEM_NAMESPACE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">508</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ELEM_NAMESPACE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ELEM_REDEFINED">
-<code class="sig-name descname">DTD_ELEM_REDEFINED</code><em class="property"> = 509</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ELEM_REDEFINED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ELEM_REDEFINED">
+<span class="sig-name descname"><span class="pre">DTD_ELEM_REDEFINED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">509</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ELEM_REDEFINED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_EMPTY_NOTATION">
-<code class="sig-name descname">DTD_EMPTY_NOTATION</code><em class="property"> = 510</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_EMPTY_NOTATION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_EMPTY_NOTATION">
+<span class="sig-name descname"><span class="pre">DTD_EMPTY_NOTATION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">510</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_EMPTY_NOTATION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ENTITY_TYPE">
-<code class="sig-name descname">DTD_ENTITY_TYPE</code><em class="property"> = 511</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ENTITY_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ENTITY_TYPE">
+<span class="sig-name descname"><span class="pre">DTD_ENTITY_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">511</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ENTITY_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ID_FIXED">
-<code class="sig-name descname">DTD_ID_FIXED</code><em class="property"> = 512</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ID_FIXED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ID_FIXED">
+<span class="sig-name descname"><span class="pre">DTD_ID_FIXED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">512</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ID_FIXED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ID_REDEFINED">
-<code class="sig-name descname">DTD_ID_REDEFINED</code><em class="property"> = 513</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ID_REDEFINED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ID_REDEFINED">
+<span class="sig-name descname"><span class="pre">DTD_ID_REDEFINED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">513</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ID_REDEFINED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ID_SUBSET">
-<code class="sig-name descname">DTD_ID_SUBSET</code><em class="property"> = 514</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ID_SUBSET" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ID_SUBSET">
+<span class="sig-name descname"><span class="pre">DTD_ID_SUBSET</span></span><em class="property"> <span class="pre">=</span> <span class="pre">514</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ID_SUBSET" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_INVALID_CHILD">
-<code class="sig-name descname">DTD_INVALID_CHILD</code><em class="property"> = 515</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_INVALID_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_INVALID_CHILD">
+<span class="sig-name descname"><span class="pre">DTD_INVALID_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">515</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_INVALID_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_INVALID_DEFAULT">
-<code class="sig-name descname">DTD_INVALID_DEFAULT</code><em class="property"> = 516</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_INVALID_DEFAULT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_INVALID_DEFAULT">
+<span class="sig-name descname"><span class="pre">DTD_INVALID_DEFAULT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">516</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_INVALID_DEFAULT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_LOAD_ERROR">
-<code class="sig-name descname">DTD_LOAD_ERROR</code><em class="property"> = 517</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_LOAD_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_LOAD_ERROR">
+<span class="sig-name descname"><span class="pre">DTD_LOAD_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">517</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_LOAD_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_MISSING_ATTRIBUTE">
-<code class="sig-name descname">DTD_MISSING_ATTRIBUTE</code><em class="property"> = 518</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_MISSING_ATTRIBUTE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_MISSING_ATTRIBUTE">
+<span class="sig-name descname"><span class="pre">DTD_MISSING_ATTRIBUTE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">518</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_MISSING_ATTRIBUTE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_MIXED_CORRUPT">
-<code class="sig-name descname">DTD_MIXED_CORRUPT</code><em class="property"> = 519</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_MIXED_CORRUPT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_MIXED_CORRUPT">
+<span class="sig-name descname"><span class="pre">DTD_MIXED_CORRUPT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">519</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_MIXED_CORRUPT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_MULTIPLE_ID">
-<code class="sig-name descname">DTD_MULTIPLE_ID</code><em class="property"> = 520</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_MULTIPLE_ID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_MULTIPLE_ID">
+<span class="sig-name descname"><span class="pre">DTD_MULTIPLE_ID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">520</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_MULTIPLE_ID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_NOTATION_REDEFINED">
-<code class="sig-name descname">DTD_NOTATION_REDEFINED</code><em class="property"> = 526</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NOTATION_REDEFINED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_NOTATION_REDEFINED">
+<span class="sig-name descname"><span class="pre">DTD_NOTATION_REDEFINED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">526</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NOTATION_REDEFINED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_NOTATION_VALUE">
-<code class="sig-name descname">DTD_NOTATION_VALUE</code><em class="property"> = 527</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NOTATION_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_NOTATION_VALUE">
+<span class="sig-name descname"><span class="pre">DTD_NOTATION_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">527</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NOTATION_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_NOT_EMPTY">
-<code class="sig-name descname">DTD_NOT_EMPTY</code><em class="property"> = 528</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NOT_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_NOT_EMPTY">
+<span class="sig-name descname"><span class="pre">DTD_NOT_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">528</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NOT_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_NOT_PCDATA">
-<code class="sig-name descname">DTD_NOT_PCDATA</code><em class="property"> = 529</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NOT_PCDATA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_NOT_PCDATA">
+<span class="sig-name descname"><span class="pre">DTD_NOT_PCDATA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">529</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NOT_PCDATA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_NOT_STANDALONE">
-<code class="sig-name descname">DTD_NOT_STANDALONE</code><em class="property"> = 530</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NOT_STANDALONE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_NOT_STANDALONE">
+<span class="sig-name descname"><span class="pre">DTD_NOT_STANDALONE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">530</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NOT_STANDALONE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_NO_DOC">
-<code class="sig-name descname">DTD_NO_DOC</code><em class="property"> = 521</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NO_DOC" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_NO_DOC">
+<span class="sig-name descname"><span class="pre">DTD_NO_DOC</span></span><em class="property"> <span class="pre">=</span> <span class="pre">521</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NO_DOC" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_NO_DTD">
-<code class="sig-name descname">DTD_NO_DTD</code><em class="property"> = 522</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NO_DTD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_NO_DTD">
+<span class="sig-name descname"><span class="pre">DTD_NO_DTD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">522</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NO_DTD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_NO_ELEM_NAME">
-<code class="sig-name descname">DTD_NO_ELEM_NAME</code><em class="property"> = 523</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NO_ELEM_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_NO_ELEM_NAME">
+<span class="sig-name descname"><span class="pre">DTD_NO_ELEM_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">523</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NO_ELEM_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_NO_PREFIX">
-<code class="sig-name descname">DTD_NO_PREFIX</code><em class="property"> = 524</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NO_PREFIX" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_NO_PREFIX">
+<span class="sig-name descname"><span class="pre">DTD_NO_PREFIX</span></span><em class="property"> <span class="pre">=</span> <span class="pre">524</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NO_PREFIX" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_NO_ROOT">
-<code class="sig-name descname">DTD_NO_ROOT</code><em class="property"> = 525</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NO_ROOT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_NO_ROOT">
+<span class="sig-name descname"><span class="pre">DTD_NO_ROOT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">525</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_NO_ROOT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_ROOT_NAME">
-<code class="sig-name descname">DTD_ROOT_NAME</code><em class="property"> = 531</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ROOT_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_ROOT_NAME">
+<span class="sig-name descname"><span class="pre">DTD_ROOT_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">531</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_ROOT_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_STANDALONE_DEFAULTED">
-<code class="sig-name descname">DTD_STANDALONE_DEFAULTED</code><em class="property"> = 538</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_STANDALONE_DEFAULTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_STANDALONE_DEFAULTED">
+<span class="sig-name descname"><span class="pre">DTD_STANDALONE_DEFAULTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">538</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_STANDALONE_DEFAULTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_STANDALONE_WHITE_SPACE">
-<code class="sig-name descname">DTD_STANDALONE_WHITE_SPACE</code><em class="property"> = 532</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_STANDALONE_WHITE_SPACE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_STANDALONE_WHITE_SPACE">
+<span class="sig-name descname"><span class="pre">DTD_STANDALONE_WHITE_SPACE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">532</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_STANDALONE_WHITE_SPACE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_UNKNOWN_ATTRIBUTE">
-<code class="sig-name descname">DTD_UNKNOWN_ATTRIBUTE</code><em class="property"> = 533</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_UNKNOWN_ATTRIBUTE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_UNKNOWN_ATTRIBUTE">
+<span class="sig-name descname"><span class="pre">DTD_UNKNOWN_ATTRIBUTE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">533</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_UNKNOWN_ATTRIBUTE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_UNKNOWN_ELEM">
-<code class="sig-name descname">DTD_UNKNOWN_ELEM</code><em class="property"> = 534</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_UNKNOWN_ELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_UNKNOWN_ELEM">
+<span class="sig-name descname"><span class="pre">DTD_UNKNOWN_ELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">534</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_UNKNOWN_ELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_UNKNOWN_ENTITY">
-<code class="sig-name descname">DTD_UNKNOWN_ENTITY</code><em class="property"> = 535</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_UNKNOWN_ENTITY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_UNKNOWN_ENTITY">
+<span class="sig-name descname"><span class="pre">DTD_UNKNOWN_ENTITY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">535</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_UNKNOWN_ENTITY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_UNKNOWN_ID">
-<code class="sig-name descname">DTD_UNKNOWN_ID</code><em class="property"> = 536</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_UNKNOWN_ID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_UNKNOWN_ID">
+<span class="sig-name descname"><span class="pre">DTD_UNKNOWN_ID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">536</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_UNKNOWN_ID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_UNKNOWN_NOTATION">
-<code class="sig-name descname">DTD_UNKNOWN_NOTATION</code><em class="property"> = 537</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_UNKNOWN_NOTATION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_UNKNOWN_NOTATION">
+<span class="sig-name descname"><span class="pre">DTD_UNKNOWN_NOTATION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">537</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_UNKNOWN_NOTATION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_XMLID_TYPE">
-<code class="sig-name descname">DTD_XMLID_TYPE</code><em class="property"> = 540</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_XMLID_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_XMLID_TYPE">
+<span class="sig-name descname"><span class="pre">DTD_XMLID_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">540</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_XMLID_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.DTD_XMLID_VALUE">
-<code class="sig-name descname">DTD_XMLID_VALUE</code><em class="property"> = 539</em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_XMLID_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.DTD_XMLID_VALUE">
+<span class="sig-name descname"><span class="pre">DTD_XMLID_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">539</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.DTD_XMLID_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_FINISHED">
-<code class="sig-name descname">ERR_ATTLIST_NOT_FINISHED</code><em class="property"> = 51</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_ATTLIST_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">51</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_STARTED">
-<code class="sig-name descname">ERR_ATTLIST_NOT_STARTED</code><em class="property"> = 50</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_ATTLIST_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">50</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_FINISHED">
-<code class="sig-name descname">ERR_ATTRIBUTE_NOT_FINISHED</code><em class="property"> = 40</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_ATTRIBUTE_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">40</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_STARTED">
-<code class="sig-name descname">ERR_ATTRIBUTE_NOT_STARTED</code><em class="property"> = 39</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_ATTRIBUTE_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">39</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ATTRIBUTE_REDEFINED">
-<code class="sig-name descname">ERR_ATTRIBUTE_REDEFINED</code><em class="property"> = 42</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTRIBUTE_REDEFINED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ATTRIBUTE_REDEFINED">
+<span class="sig-name descname"><span class="pre">ERR_ATTRIBUTE_REDEFINED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">42</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTRIBUTE_REDEFINED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ATTRIBUTE_WITHOUT_VALUE">
-<code class="sig-name descname">ERR_ATTRIBUTE_WITHOUT_VALUE</code><em class="property"> = 41</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTRIBUTE_WITHOUT_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ATTRIBUTE_WITHOUT_VALUE">
+<span class="sig-name descname"><span class="pre">ERR_ATTRIBUTE_WITHOUT_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">41</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ATTRIBUTE_WITHOUT_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_CDATA_NOT_FINISHED">
-<code class="sig-name descname">ERR_CDATA_NOT_FINISHED</code><em class="property"> = 63</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CDATA_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_CDATA_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_CDATA_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">63</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CDATA_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_CHARREF_AT_EOF">
-<code class="sig-name descname">ERR_CHARREF_AT_EOF</code><em class="property"> = 10</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CHARREF_AT_EOF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_CHARREF_AT_EOF">
+<span class="sig-name descname"><span class="pre">ERR_CHARREF_AT_EOF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">10</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CHARREF_AT_EOF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_CHARREF_IN_DTD">
-<code class="sig-name descname">ERR_CHARREF_IN_DTD</code><em class="property"> = 13</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CHARREF_IN_DTD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_CHARREF_IN_DTD">
+<span class="sig-name descname"><span class="pre">ERR_CHARREF_IN_DTD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">13</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CHARREF_IN_DTD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_CHARREF_IN_EPILOG">
-<code class="sig-name descname">ERR_CHARREF_IN_EPILOG</code><em class="property"> = 12</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CHARREF_IN_EPILOG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_CHARREF_IN_EPILOG">
+<span class="sig-name descname"><span class="pre">ERR_CHARREF_IN_EPILOG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">12</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CHARREF_IN_EPILOG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_CHARREF_IN_PROLOG">
-<code class="sig-name descname">ERR_CHARREF_IN_PROLOG</code><em class="property"> = 11</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CHARREF_IN_PROLOG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_CHARREF_IN_PROLOG">
+<span class="sig-name descname"><span class="pre">ERR_CHARREF_IN_PROLOG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">11</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CHARREF_IN_PROLOG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_COMMENT_NOT_FINISHED">
-<code class="sig-name descname">ERR_COMMENT_NOT_FINISHED</code><em class="property"> = 45</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_COMMENT_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_COMMENT_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_COMMENT_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">45</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_COMMENT_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID">
-<code class="sig-name descname">ERR_CONDSEC_INVALID</code><em class="property"> = 83</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID">
+<span class="sig-name descname"><span class="pre">ERR_CONDSEC_INVALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">83</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID_KEYWORD">
-<code class="sig-name descname">ERR_CONDSEC_INVALID_KEYWORD</code><em class="property"> = 95</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID_KEYWORD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID_KEYWORD">
+<span class="sig-name descname"><span class="pre">ERR_CONDSEC_INVALID_KEYWORD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">95</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID_KEYWORD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_FINISHED">
-<code class="sig-name descname">ERR_CONDSEC_NOT_FINISHED</code><em class="property"> = 59</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_CONDSEC_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">59</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_STARTED">
-<code class="sig-name descname">ERR_CONDSEC_NOT_STARTED</code><em class="property"> = 58</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_CONDSEC_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">58</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_DOCTYPE_NOT_FINISHED">
-<code class="sig-name descname">ERR_DOCTYPE_NOT_FINISHED</code><em class="property"> = 61</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_DOCTYPE_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_DOCTYPE_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_DOCTYPE_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">61</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_DOCTYPE_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_DOCUMENT_EMPTY">
-<code class="sig-name descname">ERR_DOCUMENT_EMPTY</code><em class="property"> = 4</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_DOCUMENT_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_DOCUMENT_EMPTY">
+<span class="sig-name descname"><span class="pre">ERR_DOCUMENT_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">4</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_DOCUMENT_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_DOCUMENT_END">
-<code class="sig-name descname">ERR_DOCUMENT_END</code><em class="property"> = 5</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_DOCUMENT_END" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_DOCUMENT_END">
+<span class="sig-name descname"><span class="pre">ERR_DOCUMENT_END</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_DOCUMENT_END" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_DOCUMENT_START">
-<code class="sig-name descname">ERR_DOCUMENT_START</code><em class="property"> = 3</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_DOCUMENT_START" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_DOCUMENT_START">
+<span class="sig-name descname"><span class="pre">ERR_DOCUMENT_START</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_DOCUMENT_START" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_FINISHED">
-<code class="sig-name descname">ERR_ELEMCONTENT_NOT_FINISHED</code><em class="property"> = 55</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_ELEMCONTENT_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">55</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_STARTED">
-<code class="sig-name descname">ERR_ELEMCONTENT_NOT_STARTED</code><em class="property"> = 54</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_ELEMCONTENT_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">54</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENCODING_NAME">
-<code class="sig-name descname">ERR_ENCODING_NAME</code><em class="property"> = 79</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENCODING_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENCODING_NAME">
+<span class="sig-name descname"><span class="pre">ERR_ENCODING_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">79</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENCODING_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITYREF_AT_EOF">
-<code class="sig-name descname">ERR_ENTITYREF_AT_EOF</code><em class="property"> = 14</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_AT_EOF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITYREF_AT_EOF">
+<span class="sig-name descname"><span class="pre">ERR_ENTITYREF_AT_EOF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">14</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_AT_EOF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_DTD">
-<code class="sig-name descname">ERR_ENTITYREF_IN_DTD</code><em class="property"> = 17</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_DTD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_DTD">
+<span class="sig-name descname"><span class="pre">ERR_ENTITYREF_IN_DTD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">17</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_DTD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_EPILOG">
-<code class="sig-name descname">ERR_ENTITYREF_IN_EPILOG</code><em class="property"> = 16</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_EPILOG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_EPILOG">
+<span class="sig-name descname"><span class="pre">ERR_ENTITYREF_IN_EPILOG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">16</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_EPILOG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_PROLOG">
-<code class="sig-name descname">ERR_ENTITYREF_IN_PROLOG</code><em class="property"> = 15</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_PROLOG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_PROLOG">
+<span class="sig-name descname"><span class="pre">ERR_ENTITYREF_IN_PROLOG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">15</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_PROLOG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITYREF_NO_NAME">
-<code class="sig-name descname">ERR_ENTITYREF_NO_NAME</code><em class="property"> = 22</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_NO_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITYREF_NO_NAME">
+<span class="sig-name descname"><span class="pre">ERR_ENTITYREF_NO_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">22</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_NO_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITYREF_SEMICOL_MISSING">
-<code class="sig-name descname">ERR_ENTITYREF_SEMICOL_MISSING</code><em class="property"> = 23</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_SEMICOL_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITYREF_SEMICOL_MISSING">
+<span class="sig-name descname"><span class="pre">ERR_ENTITYREF_SEMICOL_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">23</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITYREF_SEMICOL_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITY_BOUNDARY">
-<code class="sig-name descname">ERR_ENTITY_BOUNDARY</code><em class="property"> = 90</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_BOUNDARY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITY_BOUNDARY">
+<span class="sig-name descname"><span class="pre">ERR_ENTITY_BOUNDARY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">90</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_BOUNDARY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITY_CHAR_ERROR">
-<code class="sig-name descname">ERR_ENTITY_CHAR_ERROR</code><em class="property"> = 87</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_CHAR_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITY_CHAR_ERROR">
+<span class="sig-name descname"><span class="pre">ERR_ENTITY_CHAR_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">87</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_CHAR_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITY_IS_EXTERNAL">
-<code class="sig-name descname">ERR_ENTITY_IS_EXTERNAL</code><em class="property"> = 29</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_IS_EXTERNAL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITY_IS_EXTERNAL">
+<span class="sig-name descname"><span class="pre">ERR_ENTITY_IS_EXTERNAL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">29</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_IS_EXTERNAL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITY_IS_PARAMETER">
-<code class="sig-name descname">ERR_ENTITY_IS_PARAMETER</code><em class="property"> = 30</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_IS_PARAMETER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITY_IS_PARAMETER">
+<span class="sig-name descname"><span class="pre">ERR_ENTITY_IS_PARAMETER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">30</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_IS_PARAMETER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITY_LOOP">
-<code class="sig-name descname">ERR_ENTITY_LOOP</code><em class="property"> = 89</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_LOOP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITY_LOOP">
+<span class="sig-name descname"><span class="pre">ERR_ENTITY_LOOP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">89</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_LOOP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITY_NOT_FINISHED">
-<code class="sig-name descname">ERR_ENTITY_NOT_FINISHED</code><em class="property"> = 37</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITY_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_ENTITY_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">37</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITY_NOT_STARTED">
-<code class="sig-name descname">ERR_ENTITY_NOT_STARTED</code><em class="property"> = 36</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITY_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_ENTITY_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">36</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITY_PE_INTERNAL">
-<code class="sig-name descname">ERR_ENTITY_PE_INTERNAL</code><em class="property"> = 88</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_PE_INTERNAL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITY_PE_INTERNAL">
+<span class="sig-name descname"><span class="pre">ERR_ENTITY_PE_INTERNAL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">88</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_PE_INTERNAL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_ENTITY_PROCESSING">
-<code class="sig-name descname">ERR_ENTITY_PROCESSING</code><em class="property"> = 104</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_PROCESSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_ENTITY_PROCESSING">
+<span class="sig-name descname"><span class="pre">ERR_ENTITY_PROCESSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">104</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_ENTITY_PROCESSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_EQUAL_REQUIRED">
-<code class="sig-name descname">ERR_EQUAL_REQUIRED</code><em class="property"> = 75</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_EQUAL_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_EQUAL_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_EQUAL_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">75</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_EQUAL_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_EXTRA_CONTENT">
-<code class="sig-name descname">ERR_EXTRA_CONTENT</code><em class="property"> = 86</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_EXTRA_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_EXTRA_CONTENT">
+<span class="sig-name descname"><span class="pre">ERR_EXTRA_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">86</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_EXTRA_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_EXT_ENTITY_STANDALONE">
-<code class="sig-name descname">ERR_EXT_ENTITY_STANDALONE</code><em class="property"> = 82</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_EXT_ENTITY_STANDALONE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_EXT_ENTITY_STANDALONE">
+<span class="sig-name descname"><span class="pre">ERR_EXT_ENTITY_STANDALONE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">82</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_EXT_ENTITY_STANDALONE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_EXT_SUBSET_NOT_FINISHED">
-<code class="sig-name descname">ERR_EXT_SUBSET_NOT_FINISHED</code><em class="property"> = 60</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_EXT_SUBSET_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_EXT_SUBSET_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_EXT_SUBSET_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">60</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_EXT_SUBSET_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_GT_REQUIRED">
-<code class="sig-name descname">ERR_GT_REQUIRED</code><em class="property"> = 73</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_GT_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_GT_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_GT_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">73</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_GT_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_HYPHEN_IN_COMMENT">
-<code class="sig-name descname">ERR_HYPHEN_IN_COMMENT</code><em class="property"> = 80</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_HYPHEN_IN_COMMENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_HYPHEN_IN_COMMENT">
+<span class="sig-name descname"><span class="pre">ERR_HYPHEN_IN_COMMENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">80</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_HYPHEN_IN_COMMENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_INTERNAL_ERROR">
-<code class="sig-name descname">ERR_INTERNAL_ERROR</code><em class="property"> = 1</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INTERNAL_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_INTERNAL_ERROR">
+<span class="sig-name descname"><span class="pre">ERR_INTERNAL_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INTERNAL_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_INVALID_CHAR">
-<code class="sig-name descname">ERR_INVALID_CHAR</code><em class="property"> = 9</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_CHAR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_INVALID_CHAR">
+<span class="sig-name descname"><span class="pre">ERR_INVALID_CHAR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">9</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_CHAR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_INVALID_CHARREF">
-<code class="sig-name descname">ERR_INVALID_CHARREF</code><em class="property"> = 8</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_CHARREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_INVALID_CHARREF">
+<span class="sig-name descname"><span class="pre">ERR_INVALID_CHARREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">8</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_CHARREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_INVALID_DEC_CHARREF">
-<code class="sig-name descname">ERR_INVALID_DEC_CHARREF</code><em class="property"> = 7</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_DEC_CHARREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_INVALID_DEC_CHARREF">
+<span class="sig-name descname"><span class="pre">ERR_INVALID_DEC_CHARREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">7</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_DEC_CHARREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_INVALID_ENCODING">
-<code class="sig-name descname">ERR_INVALID_ENCODING</code><em class="property"> = 81</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_ENCODING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_INVALID_ENCODING">
+<span class="sig-name descname"><span class="pre">ERR_INVALID_ENCODING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">81</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_ENCODING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_INVALID_HEX_CHARREF">
-<code class="sig-name descname">ERR_INVALID_HEX_CHARREF</code><em class="property"> = 6</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_HEX_CHARREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_INVALID_HEX_CHARREF">
+<span class="sig-name descname"><span class="pre">ERR_INVALID_HEX_CHARREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">6</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_HEX_CHARREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_INVALID_URI">
-<code class="sig-name descname">ERR_INVALID_URI</code><em class="property"> = 91</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_URI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_INVALID_URI">
+<span class="sig-name descname"><span class="pre">ERR_INVALID_URI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">91</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_INVALID_URI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_LITERAL_NOT_FINISHED">
-<code class="sig-name descname">ERR_LITERAL_NOT_FINISHED</code><em class="property"> = 44</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_LITERAL_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_LITERAL_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_LITERAL_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">44</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_LITERAL_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_LITERAL_NOT_STARTED">
-<code class="sig-name descname">ERR_LITERAL_NOT_STARTED</code><em class="property"> = 43</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_LITERAL_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_LITERAL_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_LITERAL_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">43</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_LITERAL_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_LTSLASH_REQUIRED">
-<code class="sig-name descname">ERR_LTSLASH_REQUIRED</code><em class="property"> = 74</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_LTSLASH_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_LTSLASH_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_LTSLASH_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">74</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_LTSLASH_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_LT_IN_ATTRIBUTE">
-<code class="sig-name descname">ERR_LT_IN_ATTRIBUTE</code><em class="property"> = 38</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_LT_IN_ATTRIBUTE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_LT_IN_ATTRIBUTE">
+<span class="sig-name descname"><span class="pre">ERR_LT_IN_ATTRIBUTE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">38</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_LT_IN_ATTRIBUTE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_LT_REQUIRED">
-<code class="sig-name descname">ERR_LT_REQUIRED</code><em class="property"> = 72</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_LT_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_LT_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_LT_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">72</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_LT_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_MISPLACED_CDATA_END">
-<code class="sig-name descname">ERR_MISPLACED_CDATA_END</code><em class="property"> = 62</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_MISPLACED_CDATA_END" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_MISPLACED_CDATA_END">
+<span class="sig-name descname"><span class="pre">ERR_MISPLACED_CDATA_END</span></span><em class="property"> <span class="pre">=</span> <span class="pre">62</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_MISPLACED_CDATA_END" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_MISSING_ENCODING">
-<code class="sig-name descname">ERR_MISSING_ENCODING</code><em class="property"> = 101</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_MISSING_ENCODING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_MISSING_ENCODING">
+<span class="sig-name descname"><span class="pre">ERR_MISSING_ENCODING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">101</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_MISSING_ENCODING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_MIXED_NOT_FINISHED">
-<code class="sig-name descname">ERR_MIXED_NOT_FINISHED</code><em class="property"> = 53</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_MIXED_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_MIXED_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_MIXED_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">53</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_MIXED_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_MIXED_NOT_STARTED">
-<code class="sig-name descname">ERR_MIXED_NOT_STARTED</code><em class="property"> = 52</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_MIXED_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_MIXED_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_MIXED_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">52</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_MIXED_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NAME_REQUIRED">
-<code class="sig-name descname">ERR_NAME_REQUIRED</code><em class="property"> = 68</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NAME_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NAME_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_NAME_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">68</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NAME_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NAME_TOO_LONG">
-<code class="sig-name descname">ERR_NAME_TOO_LONG</code><em class="property"> = 110</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NAME_TOO_LONG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NAME_TOO_LONG">
+<span class="sig-name descname"><span class="pre">ERR_NAME_TOO_LONG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">110</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NAME_TOO_LONG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NMTOKEN_REQUIRED">
-<code class="sig-name descname">ERR_NMTOKEN_REQUIRED</code><em class="property"> = 67</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NMTOKEN_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NMTOKEN_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_NMTOKEN_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">67</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NMTOKEN_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NOTATION_NOT_FINISHED">
-<code class="sig-name descname">ERR_NOTATION_NOT_FINISHED</code><em class="property"> = 49</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NOTATION_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NOTATION_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_NOTATION_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">49</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NOTATION_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NOTATION_NOT_STARTED">
-<code class="sig-name descname">ERR_NOTATION_NOT_STARTED</code><em class="property"> = 48</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NOTATION_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NOTATION_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_NOTATION_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">48</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NOTATION_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NOTATION_PROCESSING">
-<code class="sig-name descname">ERR_NOTATION_PROCESSING</code><em class="property"> = 105</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NOTATION_PROCESSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NOTATION_PROCESSING">
+<span class="sig-name descname"><span class="pre">ERR_NOTATION_PROCESSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">105</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NOTATION_PROCESSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NOT_STANDALONE">
-<code class="sig-name descname">ERR_NOT_STANDALONE</code><em class="property"> = 103</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NOT_STANDALONE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NOT_STANDALONE">
+<span class="sig-name descname"><span class="pre">ERR_NOT_STANDALONE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">103</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NOT_STANDALONE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NOT_WELL_BALANCED">
-<code class="sig-name descname">ERR_NOT_WELL_BALANCED</code><em class="property"> = 85</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NOT_WELL_BALANCED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NOT_WELL_BALANCED">
+<span class="sig-name descname"><span class="pre">ERR_NOT_WELL_BALANCED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">85</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NOT_WELL_BALANCED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NO_DTD">
-<code class="sig-name descname">ERR_NO_DTD</code><em class="property"> = 94</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NO_DTD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NO_DTD">
+<span class="sig-name descname"><span class="pre">ERR_NO_DTD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">94</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NO_DTD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NO_MEMORY">
-<code class="sig-name descname">ERR_NO_MEMORY</code><em class="property"> = 2</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NO_MEMORY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NO_MEMORY">
+<span class="sig-name descname"><span class="pre">ERR_NO_MEMORY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NO_MEMORY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_NS_DECL_ERROR">
-<code class="sig-name descname">ERR_NS_DECL_ERROR</code><em class="property"> = 35</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NS_DECL_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_NS_DECL_ERROR">
+<span class="sig-name descname"><span class="pre">ERR_NS_DECL_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">35</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_NS_DECL_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_OK">
-<code class="sig-name descname">ERR_OK</code><em class="property"> = 0</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_OK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_OK">
+<span class="sig-name descname"><span class="pre">ERR_OK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">0</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_OK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_PCDATA_REQUIRED">
-<code class="sig-name descname">ERR_PCDATA_REQUIRED</code><em class="property"> = 69</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PCDATA_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_PCDATA_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_PCDATA_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">69</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PCDATA_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_PEREF_AT_EOF">
-<code class="sig-name descname">ERR_PEREF_AT_EOF</code><em class="property"> = 18</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_AT_EOF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_PEREF_AT_EOF">
+<span class="sig-name descname"><span class="pre">ERR_PEREF_AT_EOF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">18</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_AT_EOF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_PEREF_IN_EPILOG">
-<code class="sig-name descname">ERR_PEREF_IN_EPILOG</code><em class="property"> = 20</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_IN_EPILOG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_PEREF_IN_EPILOG">
+<span class="sig-name descname"><span class="pre">ERR_PEREF_IN_EPILOG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">20</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_IN_EPILOG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_PEREF_IN_INT_SUBSET">
-<code class="sig-name descname">ERR_PEREF_IN_INT_SUBSET</code><em class="property"> = 21</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_IN_INT_SUBSET" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_PEREF_IN_INT_SUBSET">
+<span class="sig-name descname"><span class="pre">ERR_PEREF_IN_INT_SUBSET</span></span><em class="property"> <span class="pre">=</span> <span class="pre">21</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_IN_INT_SUBSET" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_PEREF_IN_PROLOG">
-<code class="sig-name descname">ERR_PEREF_IN_PROLOG</code><em class="property"> = 19</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_IN_PROLOG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_PEREF_IN_PROLOG">
+<span class="sig-name descname"><span class="pre">ERR_PEREF_IN_PROLOG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">19</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_IN_PROLOG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_PEREF_NO_NAME">
-<code class="sig-name descname">ERR_PEREF_NO_NAME</code><em class="property"> = 24</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_NO_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_PEREF_NO_NAME">
+<span class="sig-name descname"><span class="pre">ERR_PEREF_NO_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">24</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_NO_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_PEREF_SEMICOL_MISSING">
-<code class="sig-name descname">ERR_PEREF_SEMICOL_MISSING</code><em class="property"> = 25</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_SEMICOL_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_PEREF_SEMICOL_MISSING">
+<span class="sig-name descname"><span class="pre">ERR_PEREF_SEMICOL_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">25</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PEREF_SEMICOL_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_PI_NOT_FINISHED">
-<code class="sig-name descname">ERR_PI_NOT_FINISHED</code><em class="property"> = 47</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PI_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_PI_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_PI_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">47</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PI_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_PI_NOT_STARTED">
-<code class="sig-name descname">ERR_PI_NOT_STARTED</code><em class="property"> = 46</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PI_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_PI_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_PI_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">46</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PI_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_PUBID_REQUIRED">
-<code class="sig-name descname">ERR_PUBID_REQUIRED</code><em class="property"> = 71</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PUBID_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_PUBID_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_PUBID_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">71</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_PUBID_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_RESERVED_XML_NAME">
-<code class="sig-name descname">ERR_RESERVED_XML_NAME</code><em class="property"> = 64</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_RESERVED_XML_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_RESERVED_XML_NAME">
+<span class="sig-name descname"><span class="pre">ERR_RESERVED_XML_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">64</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_RESERVED_XML_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_SEPARATOR_REQUIRED">
-<code class="sig-name descname">ERR_SEPARATOR_REQUIRED</code><em class="property"> = 66</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_SEPARATOR_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_SEPARATOR_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_SEPARATOR_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">66</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_SEPARATOR_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_SPACE_REQUIRED">
-<code class="sig-name descname">ERR_SPACE_REQUIRED</code><em class="property"> = 65</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_SPACE_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_SPACE_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_SPACE_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">65</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_SPACE_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_STANDALONE_VALUE">
-<code class="sig-name descname">ERR_STANDALONE_VALUE</code><em class="property"> = 78</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_STANDALONE_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_STANDALONE_VALUE">
+<span class="sig-name descname"><span class="pre">ERR_STANDALONE_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">78</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_STANDALONE_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_STRING_NOT_CLOSED">
-<code class="sig-name descname">ERR_STRING_NOT_CLOSED</code><em class="property"> = 34</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_STRING_NOT_CLOSED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_STRING_NOT_CLOSED">
+<span class="sig-name descname"><span class="pre">ERR_STRING_NOT_CLOSED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">34</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_STRING_NOT_CLOSED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_STRING_NOT_STARTED">
-<code class="sig-name descname">ERR_STRING_NOT_STARTED</code><em class="property"> = 33</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_STRING_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_STRING_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_STRING_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">33</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_STRING_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_TAG_NAME_MISMATCH">
-<code class="sig-name descname">ERR_TAG_NAME_MISMATCH</code><em class="property"> = 76</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_TAG_NAME_MISMATCH" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_TAG_NAME_MISMATCH">
+<span class="sig-name descname"><span class="pre">ERR_TAG_NAME_MISMATCH</span></span><em class="property"> <span class="pre">=</span> <span class="pre">76</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_TAG_NAME_MISMATCH" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_TAG_NOT_FINISHED">
-<code class="sig-name descname">ERR_TAG_NOT_FINISHED</code><em class="property"> = 77</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_TAG_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_TAG_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_TAG_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">77</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_TAG_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_UNDECLARED_ENTITY">
-<code class="sig-name descname">ERR_UNDECLARED_ENTITY</code><em class="property"> = 26</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_UNDECLARED_ENTITY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_UNDECLARED_ENTITY">
+<span class="sig-name descname"><span class="pre">ERR_UNDECLARED_ENTITY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">26</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_UNDECLARED_ENTITY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_UNKNOWN_ENCODING">
-<code class="sig-name descname">ERR_UNKNOWN_ENCODING</code><em class="property"> = 31</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_UNKNOWN_ENCODING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_UNKNOWN_ENCODING">
+<span class="sig-name descname"><span class="pre">ERR_UNKNOWN_ENCODING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">31</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_UNKNOWN_ENCODING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_UNKNOWN_VERSION">
-<code class="sig-name descname">ERR_UNKNOWN_VERSION</code><em class="property"> = 108</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_UNKNOWN_VERSION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_UNKNOWN_VERSION">
+<span class="sig-name descname"><span class="pre">ERR_UNKNOWN_VERSION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">108</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_UNKNOWN_VERSION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_UNPARSED_ENTITY">
-<code class="sig-name descname">ERR_UNPARSED_ENTITY</code><em class="property"> = 28</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_UNPARSED_ENTITY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_UNPARSED_ENTITY">
+<span class="sig-name descname"><span class="pre">ERR_UNPARSED_ENTITY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">28</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_UNPARSED_ENTITY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_UNSUPPORTED_ENCODING">
-<code class="sig-name descname">ERR_UNSUPPORTED_ENCODING</code><em class="property"> = 32</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_UNSUPPORTED_ENCODING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_UNSUPPORTED_ENCODING">
+<span class="sig-name descname"><span class="pre">ERR_UNSUPPORTED_ENCODING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">32</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_UNSUPPORTED_ENCODING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_URI_FRAGMENT">
-<code class="sig-name descname">ERR_URI_FRAGMENT</code><em class="property"> = 92</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_URI_FRAGMENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_URI_FRAGMENT">
+<span class="sig-name descname"><span class="pre">ERR_URI_FRAGMENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">92</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_URI_FRAGMENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_URI_REQUIRED">
-<code class="sig-name descname">ERR_URI_REQUIRED</code><em class="property"> = 70</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_URI_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_URI_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_URI_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">70</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_URI_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_USER_STOP">
-<code class="sig-name descname">ERR_USER_STOP</code><em class="property"> = 111</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_USER_STOP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_USER_STOP">
+<span class="sig-name descname"><span class="pre">ERR_USER_STOP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">111</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_USER_STOP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_VALUE_REQUIRED">
-<code class="sig-name descname">ERR_VALUE_REQUIRED</code><em class="property"> = 84</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_VALUE_REQUIRED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_VALUE_REQUIRED">
+<span class="sig-name descname"><span class="pre">ERR_VALUE_REQUIRED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">84</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_VALUE_REQUIRED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_VERSION_MISMATCH">
-<code class="sig-name descname">ERR_VERSION_MISMATCH</code><em class="property"> = 109</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_VERSION_MISMATCH" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_VERSION_MISMATCH">
+<span class="sig-name descname"><span class="pre">ERR_VERSION_MISMATCH</span></span><em class="property"> <span class="pre">=</span> <span class="pre">109</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_VERSION_MISMATCH" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_VERSION_MISSING">
-<code class="sig-name descname">ERR_VERSION_MISSING</code><em class="property"> = 96</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_VERSION_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_VERSION_MISSING">
+<span class="sig-name descname"><span class="pre">ERR_VERSION_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">96</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_VERSION_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_FINISHED">
-<code class="sig-name descname">ERR_XMLDECL_NOT_FINISHED</code><em class="property"> = 57</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_FINISHED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_FINISHED">
+<span class="sig-name descname"><span class="pre">ERR_XMLDECL_NOT_FINISHED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">57</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_FINISHED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_STARTED">
-<code class="sig-name descname">ERR_XMLDECL_NOT_STARTED</code><em class="property"> = 56</em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_STARTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_STARTED">
+<span class="sig-name descname"><span class="pre">ERR_XMLDECL_NOT_STARTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">56</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_STARTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.FTP_ACCNT">
-<code class="sig-name descname">FTP_ACCNT</code><em class="property"> = 2002</em><a class="headerlink" href="#lxml.etree.ErrorTypes.FTP_ACCNT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.FTP_ACCNT">
+<span class="sig-name descname"><span class="pre">FTP_ACCNT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2002</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.FTP_ACCNT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.FTP_EPSV_ANSWER">
-<code class="sig-name descname">FTP_EPSV_ANSWER</code><em class="property"> = 2001</em><a class="headerlink" href="#lxml.etree.ErrorTypes.FTP_EPSV_ANSWER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.FTP_EPSV_ANSWER">
+<span class="sig-name descname"><span class="pre">FTP_EPSV_ANSWER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2001</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.FTP_EPSV_ANSWER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.FTP_PASV_ANSWER">
-<code class="sig-name descname">FTP_PASV_ANSWER</code><em class="property"> = 2000</em><a class="headerlink" href="#lxml.etree.ErrorTypes.FTP_PASV_ANSWER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.FTP_PASV_ANSWER">
+<span class="sig-name descname"><span class="pre">FTP_PASV_ANSWER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2000</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.FTP_PASV_ANSWER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.FTP_URL_SYNTAX">
-<code class="sig-name descname">FTP_URL_SYNTAX</code><em class="property"> = 2003</em><a class="headerlink" href="#lxml.etree.ErrorTypes.FTP_URL_SYNTAX" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.FTP_URL_SYNTAX">
+<span class="sig-name descname"><span class="pre">FTP_URL_SYNTAX</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2003</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.FTP_URL_SYNTAX" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.HTML_STRUCURE_ERROR">
-<code class="sig-name descname">HTML_STRUCURE_ERROR</code><em class="property"> = 800</em><a class="headerlink" href="#lxml.etree.ErrorTypes.HTML_STRUCURE_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.HTML_STRUCURE_ERROR">
+<span class="sig-name descname"><span class="pre">HTML_STRUCURE_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">800</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.HTML_STRUCURE_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.HTML_UNKNOWN_TAG">
-<code class="sig-name descname">HTML_UNKNOWN_TAG</code><em class="property"> = 801</em><a class="headerlink" href="#lxml.etree.ErrorTypes.HTML_UNKNOWN_TAG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.HTML_UNKNOWN_TAG">
+<span class="sig-name descname"><span class="pre">HTML_UNKNOWN_TAG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">801</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.HTML_UNKNOWN_TAG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.HTTP_UNKNOWN_HOST">
-<code class="sig-name descname">HTTP_UNKNOWN_HOST</code><em class="property"> = 2022</em><a class="headerlink" href="#lxml.etree.ErrorTypes.HTTP_UNKNOWN_HOST" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.HTTP_UNKNOWN_HOST">
+<span class="sig-name descname"><span class="pre">HTTP_UNKNOWN_HOST</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2022</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.HTTP_UNKNOWN_HOST" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.HTTP_URL_SYNTAX">
-<code class="sig-name descname">HTTP_URL_SYNTAX</code><em class="property"> = 2020</em><a class="headerlink" href="#lxml.etree.ErrorTypes.HTTP_URL_SYNTAX" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.HTTP_URL_SYNTAX">
+<span class="sig-name descname"><span class="pre">HTTP_URL_SYNTAX</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2020</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.HTTP_URL_SYNTAX" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.HTTP_USE_IP">
-<code class="sig-name descname">HTTP_USE_IP</code><em class="property"> = 2021</em><a class="headerlink" href="#lxml.etree.ErrorTypes.HTTP_USE_IP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.HTTP_USE_IP">
+<span class="sig-name descname"><span class="pre">HTTP_USE_IP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2021</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.HTTP_USE_IP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.I18N_CONV_FAILED">
-<code class="sig-name descname">I18N_CONV_FAILED</code><em class="property"> = 6003</em><a class="headerlink" href="#lxml.etree.ErrorTypes.I18N_CONV_FAILED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.I18N_CONV_FAILED">
+<span class="sig-name descname"><span class="pre">I18N_CONV_FAILED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">6003</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.I18N_CONV_FAILED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.I18N_EXCESS_HANDLER">
-<code class="sig-name descname">I18N_EXCESS_HANDLER</code><em class="property"> = 6002</em><a class="headerlink" href="#lxml.etree.ErrorTypes.I18N_EXCESS_HANDLER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.I18N_EXCESS_HANDLER">
+<span class="sig-name descname"><span class="pre">I18N_EXCESS_HANDLER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">6002</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.I18N_EXCESS_HANDLER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.I18N_NO_HANDLER">
-<code class="sig-name descname">I18N_NO_HANDLER</code><em class="property"> = 6001</em><a class="headerlink" href="#lxml.etree.ErrorTypes.I18N_NO_HANDLER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.I18N_NO_HANDLER">
+<span class="sig-name descname"><span class="pre">I18N_NO_HANDLER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">6001</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.I18N_NO_HANDLER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.I18N_NO_NAME">
-<code class="sig-name descname">I18N_NO_NAME</code><em class="property"> = 6000</em><a class="headerlink" href="#lxml.etree.ErrorTypes.I18N_NO_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.I18N_NO_NAME">
+<span class="sig-name descname"><span class="pre">I18N_NO_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">6000</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.I18N_NO_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.I18N_NO_OUTPUT">
-<code class="sig-name descname">I18N_NO_OUTPUT</code><em class="property"> = 6004</em><a class="headerlink" href="#lxml.etree.ErrorTypes.I18N_NO_OUTPUT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.I18N_NO_OUTPUT">
+<span class="sig-name descname"><span class="pre">I18N_NO_OUTPUT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">6004</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.I18N_NO_OUTPUT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_BUFFER_FULL">
-<code class="sig-name descname">IO_BUFFER_FULL</code><em class="property"> = 1548</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_BUFFER_FULL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_BUFFER_FULL">
+<span class="sig-name descname"><span class="pre">IO_BUFFER_FULL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1548</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_BUFFER_FULL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EACCES">
-<code class="sig-name descname">IO_EACCES</code><em class="property"> = 1501</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EACCES" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EACCES">
+<span class="sig-name descname"><span class="pre">IO_EACCES</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1501</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EACCES" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EADDRINUSE">
-<code class="sig-name descname">IO_EADDRINUSE</code><em class="property"> = 1554</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EADDRINUSE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EADDRINUSE">
+<span class="sig-name descname"><span class="pre">IO_EADDRINUSE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1554</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EADDRINUSE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EAFNOSUPPORT">
-<code class="sig-name descname">IO_EAFNOSUPPORT</code><em class="property"> = 1556</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EAFNOSUPPORT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EAFNOSUPPORT">
+<span class="sig-name descname"><span class="pre">IO_EAFNOSUPPORT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1556</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EAFNOSUPPORT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EAGAIN">
-<code class="sig-name descname">IO_EAGAIN</code><em class="property"> = 1502</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EAGAIN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EAGAIN">
+<span class="sig-name descname"><span class="pre">IO_EAGAIN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1502</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EAGAIN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EALREADY">
-<code class="sig-name descname">IO_EALREADY</code><em class="property"> = 1555</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EALREADY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EALREADY">
+<span class="sig-name descname"><span class="pre">IO_EALREADY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1555</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EALREADY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EBADF">
-<code class="sig-name descname">IO_EBADF</code><em class="property"> = 1503</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EBADF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EBADF">
+<span class="sig-name descname"><span class="pre">IO_EBADF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1503</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EBADF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EBADMSG">
-<code class="sig-name descname">IO_EBADMSG</code><em class="property"> = 1504</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EBADMSG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EBADMSG">
+<span class="sig-name descname"><span class="pre">IO_EBADMSG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1504</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EBADMSG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EBUSY">
-<code class="sig-name descname">IO_EBUSY</code><em class="property"> = 1505</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EBUSY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EBUSY">
+<span class="sig-name descname"><span class="pre">IO_EBUSY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1505</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EBUSY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ECANCELED">
-<code class="sig-name descname">IO_ECANCELED</code><em class="property"> = 1506</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ECANCELED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ECANCELED">
+<span class="sig-name descname"><span class="pre">IO_ECANCELED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1506</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ECANCELED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ECHILD">
-<code class="sig-name descname">IO_ECHILD</code><em class="property"> = 1507</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ECHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ECHILD">
+<span class="sig-name descname"><span class="pre">IO_ECHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1507</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ECHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ECONNREFUSED">
-<code class="sig-name descname">IO_ECONNREFUSED</code><em class="property"> = 1552</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ECONNREFUSED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ECONNREFUSED">
+<span class="sig-name descname"><span class="pre">IO_ECONNREFUSED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1552</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ECONNREFUSED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EDEADLK">
-<code class="sig-name descname">IO_EDEADLK</code><em class="property"> = 1508</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EDEADLK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EDEADLK">
+<span class="sig-name descname"><span class="pre">IO_EDEADLK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1508</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EDEADLK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EDOM">
-<code class="sig-name descname">IO_EDOM</code><em class="property"> = 1509</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EDOM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EDOM">
+<span class="sig-name descname"><span class="pre">IO_EDOM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1509</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EDOM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EEXIST">
-<code class="sig-name descname">IO_EEXIST</code><em class="property"> = 1510</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EEXIST" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EEXIST">
+<span class="sig-name descname"><span class="pre">IO_EEXIST</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1510</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EEXIST" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EFAULT">
-<code class="sig-name descname">IO_EFAULT</code><em class="property"> = 1511</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EFAULT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EFAULT">
+<span class="sig-name descname"><span class="pre">IO_EFAULT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1511</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EFAULT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EFBIG">
-<code class="sig-name descname">IO_EFBIG</code><em class="property"> = 1512</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EFBIG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EFBIG">
+<span class="sig-name descname"><span class="pre">IO_EFBIG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1512</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EFBIG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EINPROGRESS">
-<code class="sig-name descname">IO_EINPROGRESS</code><em class="property"> = 1513</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EINPROGRESS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EINPROGRESS">
+<span class="sig-name descname"><span class="pre">IO_EINPROGRESS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1513</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EINPROGRESS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EINTR">
-<code class="sig-name descname">IO_EINTR</code><em class="property"> = 1514</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EINTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EINTR">
+<span class="sig-name descname"><span class="pre">IO_EINTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1514</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EINTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EINVAL">
-<code class="sig-name descname">IO_EINVAL</code><em class="property"> = 1515</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EINVAL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EINVAL">
+<span class="sig-name descname"><span class="pre">IO_EINVAL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1515</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EINVAL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EIO">
-<code class="sig-name descname">IO_EIO</code><em class="property"> = 1516</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EIO" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EIO">
+<span class="sig-name descname"><span class="pre">IO_EIO</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1516</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EIO" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EISCONN">
-<code class="sig-name descname">IO_EISCONN</code><em class="property"> = 1551</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EISCONN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EISCONN">
+<span class="sig-name descname"><span class="pre">IO_EISCONN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1551</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EISCONN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EISDIR">
-<code class="sig-name descname">IO_EISDIR</code><em class="property"> = 1517</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EISDIR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EISDIR">
+<span class="sig-name descname"><span class="pre">IO_EISDIR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1517</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EISDIR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EMFILE">
-<code class="sig-name descname">IO_EMFILE</code><em class="property"> = 1518</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EMFILE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EMFILE">
+<span class="sig-name descname"><span class="pre">IO_EMFILE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1518</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EMFILE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EMLINK">
-<code class="sig-name descname">IO_EMLINK</code><em class="property"> = 1519</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EMLINK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EMLINK">
+<span class="sig-name descname"><span class="pre">IO_EMLINK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1519</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EMLINK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EMSGSIZE">
-<code class="sig-name descname">IO_EMSGSIZE</code><em class="property"> = 1520</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EMSGSIZE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EMSGSIZE">
+<span class="sig-name descname"><span class="pre">IO_EMSGSIZE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1520</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EMSGSIZE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENAMETOOLONG">
-<code class="sig-name descname">IO_ENAMETOOLONG</code><em class="property"> = 1521</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENAMETOOLONG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENAMETOOLONG">
+<span class="sig-name descname"><span class="pre">IO_ENAMETOOLONG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1521</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENAMETOOLONG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENCODER">
-<code class="sig-name descname">IO_ENCODER</code><em class="property"> = 1544</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENCODER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENCODER">
+<span class="sig-name descname"><span class="pre">IO_ENCODER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1544</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENCODER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENETUNREACH">
-<code class="sig-name descname">IO_ENETUNREACH</code><em class="property"> = 1553</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENETUNREACH" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENETUNREACH">
+<span class="sig-name descname"><span class="pre">IO_ENETUNREACH</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1553</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENETUNREACH" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENFILE">
-<code class="sig-name descname">IO_ENFILE</code><em class="property"> = 1522</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENFILE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENFILE">
+<span class="sig-name descname"><span class="pre">IO_ENFILE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1522</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENFILE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENODEV">
-<code class="sig-name descname">IO_ENODEV</code><em class="property"> = 1523</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENODEV" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENODEV">
+<span class="sig-name descname"><span class="pre">IO_ENODEV</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1523</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENODEV" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOENT">
-<code class="sig-name descname">IO_ENOENT</code><em class="property"> = 1524</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOENT">
+<span class="sig-name descname"><span class="pre">IO_ENOENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1524</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOEXEC">
-<code class="sig-name descname">IO_ENOEXEC</code><em class="property"> = 1525</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOEXEC" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOEXEC">
+<span class="sig-name descname"><span class="pre">IO_ENOEXEC</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1525</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOEXEC" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOLCK">
-<code class="sig-name descname">IO_ENOLCK</code><em class="property"> = 1526</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOLCK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOLCK">
+<span class="sig-name descname"><span class="pre">IO_ENOLCK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1526</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOLCK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOMEM">
-<code class="sig-name descname">IO_ENOMEM</code><em class="property"> = 1527</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOMEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOMEM">
+<span class="sig-name descname"><span class="pre">IO_ENOMEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1527</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOMEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOSPC">
-<code class="sig-name descname">IO_ENOSPC</code><em class="property"> = 1528</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOSPC" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOSPC">
+<span class="sig-name descname"><span class="pre">IO_ENOSPC</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1528</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOSPC" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOSYS">
-<code class="sig-name descname">IO_ENOSYS</code><em class="property"> = 1529</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOSYS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOSYS">
+<span class="sig-name descname"><span class="pre">IO_ENOSYS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1529</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOSYS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOTDIR">
-<code class="sig-name descname">IO_ENOTDIR</code><em class="property"> = 1530</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOTDIR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOTDIR">
+<span class="sig-name descname"><span class="pre">IO_ENOTDIR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1530</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOTDIR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOTEMPTY">
-<code class="sig-name descname">IO_ENOTEMPTY</code><em class="property"> = 1531</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOTEMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOTEMPTY">
+<span class="sig-name descname"><span class="pre">IO_ENOTEMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1531</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOTEMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOTSOCK">
-<code class="sig-name descname">IO_ENOTSOCK</code><em class="property"> = 1550</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOTSOCK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOTSOCK">
+<span class="sig-name descname"><span class="pre">IO_ENOTSOCK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1550</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOTSOCK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOTSUP">
-<code class="sig-name descname">IO_ENOTSUP</code><em class="property"> = 1532</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOTSUP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOTSUP">
+<span class="sig-name descname"><span class="pre">IO_ENOTSUP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1532</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOTSUP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENOTTY">
-<code class="sig-name descname">IO_ENOTTY</code><em class="property"> = 1533</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOTTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENOTTY">
+<span class="sig-name descname"><span class="pre">IO_ENOTTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1533</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENOTTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ENXIO">
-<code class="sig-name descname">IO_ENXIO</code><em class="property"> = 1534</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENXIO" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ENXIO">
+<span class="sig-name descname"><span class="pre">IO_ENXIO</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1534</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ENXIO" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EPERM">
-<code class="sig-name descname">IO_EPERM</code><em class="property"> = 1535</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EPERM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EPERM">
+<span class="sig-name descname"><span class="pre">IO_EPERM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1535</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EPERM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EPIPE">
-<code class="sig-name descname">IO_EPIPE</code><em class="property"> = 1536</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EPIPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EPIPE">
+<span class="sig-name descname"><span class="pre">IO_EPIPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1536</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EPIPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ERANGE">
-<code class="sig-name descname">IO_ERANGE</code><em class="property"> = 1537</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ERANGE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ERANGE">
+<span class="sig-name descname"><span class="pre">IO_ERANGE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1537</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ERANGE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EROFS">
-<code class="sig-name descname">IO_EROFS</code><em class="property"> = 1538</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EROFS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EROFS">
+<span class="sig-name descname"><span class="pre">IO_EROFS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1538</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EROFS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ESPIPE">
-<code class="sig-name descname">IO_ESPIPE</code><em class="property"> = 1539</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ESPIPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ESPIPE">
+<span class="sig-name descname"><span class="pre">IO_ESPIPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1539</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ESPIPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ESRCH">
-<code class="sig-name descname">IO_ESRCH</code><em class="property"> = 1540</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ESRCH" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ESRCH">
+<span class="sig-name descname"><span class="pre">IO_ESRCH</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1540</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ESRCH" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_ETIMEDOUT">
-<code class="sig-name descname">IO_ETIMEDOUT</code><em class="property"> = 1541</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ETIMEDOUT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_ETIMEDOUT">
+<span class="sig-name descname"><span class="pre">IO_ETIMEDOUT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1541</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_ETIMEDOUT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_EXDEV">
-<code class="sig-name descname">IO_EXDEV</code><em class="property"> = 1542</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EXDEV" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_EXDEV">
+<span class="sig-name descname"><span class="pre">IO_EXDEV</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1542</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_EXDEV" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_FLUSH">
-<code class="sig-name descname">IO_FLUSH</code><em class="property"> = 1545</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_FLUSH" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_FLUSH">
+<span class="sig-name descname"><span class="pre">IO_FLUSH</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1545</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_FLUSH" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_LOAD_ERROR">
-<code class="sig-name descname">IO_LOAD_ERROR</code><em class="property"> = 1549</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_LOAD_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_LOAD_ERROR">
+<span class="sig-name descname"><span class="pre">IO_LOAD_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1549</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_LOAD_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_NETWORK_ATTEMPT">
-<code class="sig-name descname">IO_NETWORK_ATTEMPT</code><em class="property"> = 1543</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_NETWORK_ATTEMPT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_NETWORK_ATTEMPT">
+<span class="sig-name descname"><span class="pre">IO_NETWORK_ATTEMPT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1543</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_NETWORK_ATTEMPT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_NO_INPUT">
-<code class="sig-name descname">IO_NO_INPUT</code><em class="property"> = 1547</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_NO_INPUT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_NO_INPUT">
+<span class="sig-name descname"><span class="pre">IO_NO_INPUT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1547</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_NO_INPUT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_UNKNOWN">
-<code class="sig-name descname">IO_UNKNOWN</code><em class="property"> = 1500</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_UNKNOWN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_UNKNOWN">
+<span class="sig-name descname"><span class="pre">IO_UNKNOWN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1500</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_UNKNOWN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.IO_WRITE">
-<code class="sig-name descname">IO_WRITE</code><em class="property"> = 1546</em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_WRITE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.IO_WRITE">
+<span class="sig-name descname"><span class="pre">IO_WRITE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1546</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.IO_WRITE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.MODULE_CLOSE">
-<code class="sig-name descname">MODULE_CLOSE</code><em class="property"> = 4901</em><a class="headerlink" href="#lxml.etree.ErrorTypes.MODULE_CLOSE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.MODULE_CLOSE">
+<span class="sig-name descname"><span class="pre">MODULE_CLOSE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">4901</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.MODULE_CLOSE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.MODULE_OPEN">
-<code class="sig-name descname">MODULE_OPEN</code><em class="property"> = 4900</em><a class="headerlink" href="#lxml.etree.ErrorTypes.MODULE_OPEN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.MODULE_OPEN">
+<span class="sig-name descname"><span class="pre">MODULE_OPEN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">4900</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.MODULE_OPEN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.NS_ERR_ATTRIBUTE_REDEFINED">
-<code class="sig-name descname">NS_ERR_ATTRIBUTE_REDEFINED</code><em class="property"> = 203</em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_ATTRIBUTE_REDEFINED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.NS_ERR_ATTRIBUTE_REDEFINED">
+<span class="sig-name descname"><span class="pre">NS_ERR_ATTRIBUTE_REDEFINED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">203</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_ATTRIBUTE_REDEFINED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.NS_ERR_COLON">
-<code class="sig-name descname">NS_ERR_COLON</code><em class="property"> = 205</em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_COLON" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.NS_ERR_COLON">
+<span class="sig-name descname"><span class="pre">NS_ERR_COLON</span></span><em class="property"> <span class="pre">=</span> <span class="pre">205</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_COLON" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.NS_ERR_EMPTY">
-<code class="sig-name descname">NS_ERR_EMPTY</code><em class="property"> = 204</em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.NS_ERR_EMPTY">
+<span class="sig-name descname"><span class="pre">NS_ERR_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">204</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.NS_ERR_QNAME">
-<code class="sig-name descname">NS_ERR_QNAME</code><em class="property"> = 202</em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_QNAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.NS_ERR_QNAME">
+<span class="sig-name descname"><span class="pre">NS_ERR_QNAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">202</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_QNAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.NS_ERR_UNDEFINED_NAMESPACE">
-<code class="sig-name descname">NS_ERR_UNDEFINED_NAMESPACE</code><em class="property"> = 201</em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_UNDEFINED_NAMESPACE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.NS_ERR_UNDEFINED_NAMESPACE">
+<span class="sig-name descname"><span class="pre">NS_ERR_UNDEFINED_NAMESPACE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">201</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_UNDEFINED_NAMESPACE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.NS_ERR_XML_NAMESPACE">
-<code class="sig-name descname">NS_ERR_XML_NAMESPACE</code><em class="property"> = 200</em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_XML_NAMESPACE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.NS_ERR_XML_NAMESPACE">
+<span class="sig-name descname"><span class="pre">NS_ERR_XML_NAMESPACE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">200</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.NS_ERR_XML_NAMESPACE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.REGEXP_COMPILE_ERROR">
-<code class="sig-name descname">REGEXP_COMPILE_ERROR</code><em class="property"> = 1450</em><a class="headerlink" href="#lxml.etree.ErrorTypes.REGEXP_COMPILE_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.REGEXP_COMPILE_ERROR">
+<span class="sig-name descname"><span class="pre">REGEXP_COMPILE_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1450</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.REGEXP_COMPILE_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ANYNAME_ATTR_ANCESTOR">
-<code class="sig-name descname">RNGP_ANYNAME_ATTR_ANCESTOR</code><em class="property"> = 1000</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ANYNAME_ATTR_ANCESTOR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ANYNAME_ATTR_ANCESTOR">
+<span class="sig-name descname"><span class="pre">RNGP_ANYNAME_ATTR_ANCESTOR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1000</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ANYNAME_ATTR_ANCESTOR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CHILDREN">
-<code class="sig-name descname">RNGP_ATTRIBUTE_CHILDREN</code><em class="property"> = 1002</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CHILDREN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CHILDREN">
+<span class="sig-name descname"><span class="pre">RNGP_ATTRIBUTE_CHILDREN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1002</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CHILDREN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CONTENT">
-<code class="sig-name descname">RNGP_ATTRIBUTE_CONTENT</code><em class="property"> = 1003</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_ATTRIBUTE_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1003</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_EMPTY">
-<code class="sig-name descname">RNGP_ATTRIBUTE_EMPTY</code><em class="property"> = 1004</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_ATTRIBUTE_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1004</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_NOOP">
-<code class="sig-name descname">RNGP_ATTRIBUTE_NOOP</code><em class="property"> = 1005</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_NOOP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_NOOP">
+<span class="sig-name descname"><span class="pre">RNGP_ATTRIBUTE_NOOP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1005</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_NOOP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ATTR_CONFLICT">
-<code class="sig-name descname">RNGP_ATTR_CONFLICT</code><em class="property"> = 1001</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ATTR_CONFLICT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ATTR_CONFLICT">
+<span class="sig-name descname"><span class="pre">RNGP_ATTR_CONFLICT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1001</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ATTR_CONFLICT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_CHOICE_CONTENT">
-<code class="sig-name descname">RNGP_CHOICE_CONTENT</code><em class="property"> = 1006</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_CHOICE_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_CHOICE_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_CHOICE_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1006</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_CHOICE_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_CHOICE_EMPTY">
-<code class="sig-name descname">RNGP_CHOICE_EMPTY</code><em class="property"> = 1007</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_CHOICE_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_CHOICE_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_CHOICE_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1007</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_CHOICE_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_CREATE_FAILURE">
-<code class="sig-name descname">RNGP_CREATE_FAILURE</code><em class="property"> = 1008</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_CREATE_FAILURE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_CREATE_FAILURE">
+<span class="sig-name descname"><span class="pre">RNGP_CREATE_FAILURE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1008</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_CREATE_FAILURE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_DATA_CONTENT">
-<code class="sig-name descname">RNGP_DATA_CONTENT</code><em class="property"> = 1009</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DATA_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_DATA_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_DATA_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1009</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DATA_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_DEFINE_CREATE_FAILED">
-<code class="sig-name descname">RNGP_DEFINE_CREATE_FAILED</code><em class="property"> = 1011</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DEFINE_CREATE_FAILED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_DEFINE_CREATE_FAILED">
+<span class="sig-name descname"><span class="pre">RNGP_DEFINE_CREATE_FAILED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1011</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DEFINE_CREATE_FAILED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_DEFINE_EMPTY">
-<code class="sig-name descname">RNGP_DEFINE_EMPTY</code><em class="property"> = 1012</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DEFINE_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_DEFINE_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_DEFINE_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1012</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DEFINE_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_DEFINE_MISSING">
-<code class="sig-name descname">RNGP_DEFINE_MISSING</code><em class="property"> = 1013</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DEFINE_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_DEFINE_MISSING">
+<span class="sig-name descname"><span class="pre">RNGP_DEFINE_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1013</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DEFINE_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_DEFINE_NAME_MISSING">
-<code class="sig-name descname">RNGP_DEFINE_NAME_MISSING</code><em class="property"> = 1014</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DEFINE_NAME_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_DEFINE_NAME_MISSING">
+<span class="sig-name descname"><span class="pre">RNGP_DEFINE_NAME_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1014</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DEFINE_NAME_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_DEF_CHOICE_AND_INTERLEAVE">
-<code class="sig-name descname">RNGP_DEF_CHOICE_AND_INTERLEAVE</code><em class="property"> = 1010</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DEF_CHOICE_AND_INTERLEAVE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_DEF_CHOICE_AND_INTERLEAVE">
+<span class="sig-name descname"><span class="pre">RNGP_DEF_CHOICE_AND_INTERLEAVE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1010</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_DEF_CHOICE_AND_INTERLEAVE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ELEMENT_CONTENT">
-<code class="sig-name descname">RNGP_ELEMENT_CONTENT</code><em class="property"> = 1018</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEMENT_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ELEMENT_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_ELEMENT_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1018</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEMENT_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ELEMENT_EMPTY">
-<code class="sig-name descname">RNGP_ELEMENT_EMPTY</code><em class="property"> = 1017</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEMENT_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ELEMENT_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_ELEMENT_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1017</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEMENT_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ELEMENT_NAME">
-<code class="sig-name descname">RNGP_ELEMENT_NAME</code><em class="property"> = 1019</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEMENT_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ELEMENT_NAME">
+<span class="sig-name descname"><span class="pre">RNGP_ELEMENT_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1019</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEMENT_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ELEMENT_NO_CONTENT">
-<code class="sig-name descname">RNGP_ELEMENT_NO_CONTENT</code><em class="property"> = 1020</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEMENT_NO_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ELEMENT_NO_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_ELEMENT_NO_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1020</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEMENT_NO_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_EMPTY">
-<code class="sig-name descname">RNGP_ELEM_CONTENT_EMPTY</code><em class="property"> = 1015</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_ELEM_CONTENT_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1015</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_ERROR">
-<code class="sig-name descname">RNGP_ELEM_CONTENT_ERROR</code><em class="property"> = 1016</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_ERROR">
+<span class="sig-name descname"><span class="pre">RNGP_ELEM_CONTENT_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1016</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ELEM_TEXT_CONFLICT">
-<code class="sig-name descname">RNGP_ELEM_TEXT_CONFLICT</code><em class="property"> = 1021</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEM_TEXT_CONFLICT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ELEM_TEXT_CONFLICT">
+<span class="sig-name descname"><span class="pre">RNGP_ELEM_TEXT_CONFLICT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1021</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ELEM_TEXT_CONFLICT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EMPTY">
-<code class="sig-name descname">RNGP_EMPTY</code><em class="property"> = 1022</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1022</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EMPTY_CONSTRUCT">
-<code class="sig-name descname">RNGP_EMPTY_CONSTRUCT</code><em class="property"> = 1023</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EMPTY_CONSTRUCT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EMPTY_CONSTRUCT">
+<span class="sig-name descname"><span class="pre">RNGP_EMPTY_CONSTRUCT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1023</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EMPTY_CONSTRUCT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EMPTY_CONTENT">
-<code class="sig-name descname">RNGP_EMPTY_CONTENT</code><em class="property"> = 1024</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EMPTY_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EMPTY_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_EMPTY_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1024</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EMPTY_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EMPTY_NOT_EMPTY">
-<code class="sig-name descname">RNGP_EMPTY_NOT_EMPTY</code><em class="property"> = 1025</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EMPTY_NOT_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EMPTY_NOT_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_EMPTY_NOT_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1025</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EMPTY_NOT_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_ERROR_TYPE_LIB">
-<code class="sig-name descname">RNGP_ERROR_TYPE_LIB</code><em class="property"> = 1026</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ERROR_TYPE_LIB" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_ERROR_TYPE_LIB">
+<span class="sig-name descname"><span class="pre">RNGP_ERROR_TYPE_LIB</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1026</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_ERROR_TYPE_LIB" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EXCEPT_EMPTY">
-<code class="sig-name descname">RNGP_EXCEPT_EMPTY</code><em class="property"> = 1027</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXCEPT_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EXCEPT_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_EXCEPT_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1027</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXCEPT_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EXCEPT_MISSING">
-<code class="sig-name descname">RNGP_EXCEPT_MISSING</code><em class="property"> = 1028</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXCEPT_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EXCEPT_MISSING">
+<span class="sig-name descname"><span class="pre">RNGP_EXCEPT_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1028</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXCEPT_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EXCEPT_MULTIPLE">
-<code class="sig-name descname">RNGP_EXCEPT_MULTIPLE</code><em class="property"> = 1029</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXCEPT_MULTIPLE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EXCEPT_MULTIPLE">
+<span class="sig-name descname"><span class="pre">RNGP_EXCEPT_MULTIPLE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1029</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXCEPT_MULTIPLE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EXCEPT_NO_CONTENT">
-<code class="sig-name descname">RNGP_EXCEPT_NO_CONTENT</code><em class="property"> = 1030</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXCEPT_NO_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EXCEPT_NO_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_EXCEPT_NO_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1030</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXCEPT_NO_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EXTERNALREF_EMTPY">
-<code class="sig-name descname">RNGP_EXTERNALREF_EMTPY</code><em class="property"> = 1031</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXTERNALREF_EMTPY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EXTERNALREF_EMTPY">
+<span class="sig-name descname"><span class="pre">RNGP_EXTERNALREF_EMTPY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1031</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXTERNALREF_EMTPY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EXTERNALREF_RECURSE">
-<code class="sig-name descname">RNGP_EXTERNALREF_RECURSE</code><em class="property"> = 1033</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXTERNALREF_RECURSE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EXTERNALREF_RECURSE">
+<span class="sig-name descname"><span class="pre">RNGP_EXTERNALREF_RECURSE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1033</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXTERNALREF_RECURSE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_EXTERNAL_REF_FAILURE">
-<code class="sig-name descname">RNGP_EXTERNAL_REF_FAILURE</code><em class="property"> = 1032</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXTERNAL_REF_FAILURE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_EXTERNAL_REF_FAILURE">
+<span class="sig-name descname"><span class="pre">RNGP_EXTERNAL_REF_FAILURE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1032</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_EXTERNAL_REF_FAILURE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_FORBIDDEN_ATTRIBUTE">
-<code class="sig-name descname">RNGP_FORBIDDEN_ATTRIBUTE</code><em class="property"> = 1034</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_FORBIDDEN_ATTRIBUTE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_FORBIDDEN_ATTRIBUTE">
+<span class="sig-name descname"><span class="pre">RNGP_FORBIDDEN_ATTRIBUTE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1034</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_FORBIDDEN_ATTRIBUTE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_FOREIGN_ELEMENT">
-<code class="sig-name descname">RNGP_FOREIGN_ELEMENT</code><em class="property"> = 1035</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_FOREIGN_ELEMENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_FOREIGN_ELEMENT">
+<span class="sig-name descname"><span class="pre">RNGP_FOREIGN_ELEMENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1035</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_FOREIGN_ELEMENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_GRAMMAR_CONTENT">
-<code class="sig-name descname">RNGP_GRAMMAR_CONTENT</code><em class="property"> = 1036</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_GRAMMAR_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_GRAMMAR_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_GRAMMAR_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1036</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_GRAMMAR_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_GRAMMAR_EMPTY">
-<code class="sig-name descname">RNGP_GRAMMAR_EMPTY</code><em class="property"> = 1037</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_GRAMMAR_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_GRAMMAR_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_GRAMMAR_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1037</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_GRAMMAR_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_GRAMMAR_MISSING">
-<code class="sig-name descname">RNGP_GRAMMAR_MISSING</code><em class="property"> = 1038</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_GRAMMAR_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_GRAMMAR_MISSING">
+<span class="sig-name descname"><span class="pre">RNGP_GRAMMAR_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1038</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_GRAMMAR_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_GRAMMAR_NO_START">
-<code class="sig-name descname">RNGP_GRAMMAR_NO_START</code><em class="property"> = 1039</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_GRAMMAR_NO_START" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_GRAMMAR_NO_START">
+<span class="sig-name descname"><span class="pre">RNGP_GRAMMAR_NO_START</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1039</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_GRAMMAR_NO_START" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_GROUP_ATTR_CONFLICT">
-<code class="sig-name descname">RNGP_GROUP_ATTR_CONFLICT</code><em class="property"> = 1040</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_GROUP_ATTR_CONFLICT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_GROUP_ATTR_CONFLICT">
+<span class="sig-name descname"><span class="pre">RNGP_GROUP_ATTR_CONFLICT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1040</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_GROUP_ATTR_CONFLICT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_HREF_ERROR">
-<code class="sig-name descname">RNGP_HREF_ERROR</code><em class="property"> = 1041</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_HREF_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_HREF_ERROR">
+<span class="sig-name descname"><span class="pre">RNGP_HREF_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1041</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_HREF_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_INCLUDE_EMPTY">
-<code class="sig-name descname">RNGP_INCLUDE_EMPTY</code><em class="property"> = 1042</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INCLUDE_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_INCLUDE_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_INCLUDE_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1042</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INCLUDE_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_INCLUDE_FAILURE">
-<code class="sig-name descname">RNGP_INCLUDE_FAILURE</code><em class="property"> = 1043</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INCLUDE_FAILURE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_INCLUDE_FAILURE">
+<span class="sig-name descname"><span class="pre">RNGP_INCLUDE_FAILURE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1043</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INCLUDE_FAILURE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_INCLUDE_RECURSE">
-<code class="sig-name descname">RNGP_INCLUDE_RECURSE</code><em class="property"> = 1044</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INCLUDE_RECURSE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_INCLUDE_RECURSE">
+<span class="sig-name descname"><span class="pre">RNGP_INCLUDE_RECURSE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1044</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INCLUDE_RECURSE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_INTERLEAVE_ADD">
-<code class="sig-name descname">RNGP_INTERLEAVE_ADD</code><em class="property"> = 1045</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INTERLEAVE_ADD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_INTERLEAVE_ADD">
+<span class="sig-name descname"><span class="pre">RNGP_INTERLEAVE_ADD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1045</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INTERLEAVE_ADD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_INTERLEAVE_CREATE_FAILED">
-<code class="sig-name descname">RNGP_INTERLEAVE_CREATE_FAILED</code><em class="property"> = 1046</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INTERLEAVE_CREATE_FAILED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_INTERLEAVE_CREATE_FAILED">
+<span class="sig-name descname"><span class="pre">RNGP_INTERLEAVE_CREATE_FAILED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1046</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INTERLEAVE_CREATE_FAILED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_INTERLEAVE_EMPTY">
-<code class="sig-name descname">RNGP_INTERLEAVE_EMPTY</code><em class="property"> = 1047</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INTERLEAVE_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_INTERLEAVE_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_INTERLEAVE_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1047</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INTERLEAVE_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_INTERLEAVE_NO_CONTENT">
-<code class="sig-name descname">RNGP_INTERLEAVE_NO_CONTENT</code><em class="property"> = 1048</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INTERLEAVE_NO_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_INTERLEAVE_NO_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_INTERLEAVE_NO_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1048</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INTERLEAVE_NO_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_INVALID_DEFINE_NAME">
-<code class="sig-name descname">RNGP_INVALID_DEFINE_NAME</code><em class="property"> = 1049</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INVALID_DEFINE_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_INVALID_DEFINE_NAME">
+<span class="sig-name descname"><span class="pre">RNGP_INVALID_DEFINE_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1049</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INVALID_DEFINE_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_INVALID_URI">
-<code class="sig-name descname">RNGP_INVALID_URI</code><em class="property"> = 1050</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INVALID_URI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_INVALID_URI">
+<span class="sig-name descname"><span class="pre">RNGP_INVALID_URI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1050</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INVALID_URI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_INVALID_VALUE">
-<code class="sig-name descname">RNGP_INVALID_VALUE</code><em class="property"> = 1051</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INVALID_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_INVALID_VALUE">
+<span class="sig-name descname"><span class="pre">RNGP_INVALID_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1051</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_INVALID_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_MISSING_HREF">
-<code class="sig-name descname">RNGP_MISSING_HREF</code><em class="property"> = 1052</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_MISSING_HREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_MISSING_HREF">
+<span class="sig-name descname"><span class="pre">RNGP_MISSING_HREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1052</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_MISSING_HREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_NAME_MISSING">
-<code class="sig-name descname">RNGP_NAME_MISSING</code><em class="property"> = 1053</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_NAME_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_NAME_MISSING">
+<span class="sig-name descname"><span class="pre">RNGP_NAME_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1053</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_NAME_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_NEED_COMBINE">
-<code class="sig-name descname">RNGP_NEED_COMBINE</code><em class="property"> = 1054</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_NEED_COMBINE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_NEED_COMBINE">
+<span class="sig-name descname"><span class="pre">RNGP_NEED_COMBINE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1054</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_NEED_COMBINE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_NOTALLOWED_NOT_EMPTY">
-<code class="sig-name descname">RNGP_NOTALLOWED_NOT_EMPTY</code><em class="property"> = 1055</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_NOTALLOWED_NOT_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_NOTALLOWED_NOT_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_NOTALLOWED_NOT_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1055</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_NOTALLOWED_NOT_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_NSNAME_ATTR_ANCESTOR">
-<code class="sig-name descname">RNGP_NSNAME_ATTR_ANCESTOR</code><em class="property"> = 1056</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_NSNAME_ATTR_ANCESTOR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_NSNAME_ATTR_ANCESTOR">
+<span class="sig-name descname"><span class="pre">RNGP_NSNAME_ATTR_ANCESTOR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1056</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_NSNAME_ATTR_ANCESTOR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_NSNAME_NO_NS">
-<code class="sig-name descname">RNGP_NSNAME_NO_NS</code><em class="property"> = 1057</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_NSNAME_NO_NS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_NSNAME_NO_NS">
+<span class="sig-name descname"><span class="pre">RNGP_NSNAME_NO_NS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1057</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_NSNAME_NO_NS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PARAM_FORBIDDEN">
-<code class="sig-name descname">RNGP_PARAM_FORBIDDEN</code><em class="property"> = 1058</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARAM_FORBIDDEN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PARAM_FORBIDDEN">
+<span class="sig-name descname"><span class="pre">RNGP_PARAM_FORBIDDEN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1058</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARAM_FORBIDDEN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PARAM_NAME_MISSING">
-<code class="sig-name descname">RNGP_PARAM_NAME_MISSING</code><em class="property"> = 1059</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARAM_NAME_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PARAM_NAME_MISSING">
+<span class="sig-name descname"><span class="pre">RNGP_PARAM_NAME_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1059</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARAM_NAME_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PARENTREF_CREATE_FAILED">
-<code class="sig-name descname">RNGP_PARENTREF_CREATE_FAILED</code><em class="property"> = 1060</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARENTREF_CREATE_FAILED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PARENTREF_CREATE_FAILED">
+<span class="sig-name descname"><span class="pre">RNGP_PARENTREF_CREATE_FAILED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1060</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARENTREF_CREATE_FAILED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PARENTREF_NAME_INVALID">
-<code class="sig-name descname">RNGP_PARENTREF_NAME_INVALID</code><em class="property"> = 1061</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARENTREF_NAME_INVALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PARENTREF_NAME_INVALID">
+<span class="sig-name descname"><span class="pre">RNGP_PARENTREF_NAME_INVALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1061</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARENTREF_NAME_INVALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PARENTREF_NOT_EMPTY">
-<code class="sig-name descname">RNGP_PARENTREF_NOT_EMPTY</code><em class="property"> = 1064</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARENTREF_NOT_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PARENTREF_NOT_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_PARENTREF_NOT_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1064</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARENTREF_NOT_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_NAME">
-<code class="sig-name descname">RNGP_PARENTREF_NO_NAME</code><em class="property"> = 1062</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_NAME">
+<span class="sig-name descname"><span class="pre">RNGP_PARENTREF_NO_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1062</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_PARENT">
-<code class="sig-name descname">RNGP_PARENTREF_NO_PARENT</code><em class="property"> = 1063</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_PARENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_PARENT">
+<span class="sig-name descname"><span class="pre">RNGP_PARENTREF_NO_PARENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1063</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_PARENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PARSE_ERROR">
-<code class="sig-name descname">RNGP_PARSE_ERROR</code><em class="property"> = 1065</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARSE_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PARSE_ERROR">
+<span class="sig-name descname"><span class="pre">RNGP_PARSE_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1065</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PARSE_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_ANYNAME_EXCEPT_ANYNAME">
-<code class="sig-name descname">RNGP_PAT_ANYNAME_EXCEPT_ANYNAME</code><em class="property"> = 1066</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_ANYNAME_EXCEPT_ANYNAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_ANYNAME_EXCEPT_ANYNAME">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_ANYNAME_EXCEPT_ANYNAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1066</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_ANYNAME_EXCEPT_ANYNAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ATTR">
-<code class="sig-name descname">RNGP_PAT_ATTR_ATTR</code><em class="property"> = 1067</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ATTR">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_ATTR_ATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1067</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ELEM">
-<code class="sig-name descname">RNGP_PAT_ATTR_ELEM</code><em class="property"> = 1068</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ELEM">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_ATTR_ELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1068</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ATTR">
-<code class="sig-name descname">RNGP_PAT_DATA_EXCEPT_ATTR</code><em class="property"> = 1069</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ATTR">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_DATA_EXCEPT_ATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1069</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ELEM">
-<code class="sig-name descname">RNGP_PAT_DATA_EXCEPT_ELEM</code><em class="property"> = 1070</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ELEM">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_DATA_EXCEPT_ELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1070</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_EMPTY">
-<code class="sig-name descname">RNGP_PAT_DATA_EXCEPT_EMPTY</code><em class="property"> = 1071</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_DATA_EXCEPT_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1071</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_GROUP">
-<code class="sig-name descname">RNGP_PAT_DATA_EXCEPT_GROUP</code><em class="property"> = 1072</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_GROUP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_GROUP">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_DATA_EXCEPT_GROUP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1072</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_GROUP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_INTERLEAVE">
-<code class="sig-name descname">RNGP_PAT_DATA_EXCEPT_INTERLEAVE</code><em class="property"> = 1073</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_INTERLEAVE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_INTERLEAVE">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_DATA_EXCEPT_INTERLEAVE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1073</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_INTERLEAVE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_LIST">
-<code class="sig-name descname">RNGP_PAT_DATA_EXCEPT_LIST</code><em class="property"> = 1074</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_LIST" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_LIST">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_DATA_EXCEPT_LIST</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1074</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_LIST" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ONEMORE">
-<code class="sig-name descname">RNGP_PAT_DATA_EXCEPT_ONEMORE</code><em class="property"> = 1075</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ONEMORE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ONEMORE">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_DATA_EXCEPT_ONEMORE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1075</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ONEMORE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_REF">
-<code class="sig-name descname">RNGP_PAT_DATA_EXCEPT_REF</code><em class="property"> = 1076</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_REF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_REF">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_DATA_EXCEPT_REF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1076</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_REF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_TEXT">
-<code class="sig-name descname">RNGP_PAT_DATA_EXCEPT_TEXT</code><em class="property"> = 1077</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_TEXT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_TEXT">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_DATA_EXCEPT_TEXT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1077</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_TEXT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_ATTR">
-<code class="sig-name descname">RNGP_PAT_LIST_ATTR</code><em class="property"> = 1078</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_ATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_ATTR">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_LIST_ATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1078</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_ATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_ELEM">
-<code class="sig-name descname">RNGP_PAT_LIST_ELEM</code><em class="property"> = 1079</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_ELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_ELEM">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_LIST_ELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1079</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_ELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_INTERLEAVE">
-<code class="sig-name descname">RNGP_PAT_LIST_INTERLEAVE</code><em class="property"> = 1080</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_INTERLEAVE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_INTERLEAVE">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_LIST_INTERLEAVE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1080</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_INTERLEAVE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_LIST">
-<code class="sig-name descname">RNGP_PAT_LIST_LIST</code><em class="property"> = 1081</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_LIST" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_LIST">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_LIST_LIST</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1081</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_LIST" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_REF">
-<code class="sig-name descname">RNGP_PAT_LIST_REF</code><em class="property"> = 1082</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_REF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_REF">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_LIST_REF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1082</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_REF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_TEXT">
-<code class="sig-name descname">RNGP_PAT_LIST_TEXT</code><em class="property"> = 1083</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_TEXT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_LIST_TEXT">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_LIST_TEXT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1083</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_LIST_TEXT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_ANYNAME">
-<code class="sig-name descname">RNGP_PAT_NSNAME_EXCEPT_ANYNAME</code><em class="property"> = 1084</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_ANYNAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_ANYNAME">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_NSNAME_EXCEPT_ANYNAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1084</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_ANYNAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_NSNAME">
-<code class="sig-name descname">RNGP_PAT_NSNAME_EXCEPT_NSNAME</code><em class="property"> = 1085</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_NSNAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_NSNAME">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_NSNAME_EXCEPT_NSNAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1085</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_NSNAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_GROUP_ATTR">
-<code class="sig-name descname">RNGP_PAT_ONEMORE_GROUP_ATTR</code><em class="property"> = 1086</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_GROUP_ATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_GROUP_ATTR">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_ONEMORE_GROUP_ATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1086</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_GROUP_ATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_INTERLEAVE_ATTR">
-<code class="sig-name descname">RNGP_PAT_ONEMORE_INTERLEAVE_ATTR</code><em class="property"> = 1087</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_INTERLEAVE_ATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_INTERLEAVE_ATTR">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_ONEMORE_INTERLEAVE_ATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1087</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_INTERLEAVE_ATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_START_ATTR">
-<code class="sig-name descname">RNGP_PAT_START_ATTR</code><em class="property"> = 1088</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_ATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_START_ATTR">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_START_ATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1088</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_ATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_START_DATA">
-<code class="sig-name descname">RNGP_PAT_START_DATA</code><em class="property"> = 1089</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_DATA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_START_DATA">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_START_DATA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1089</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_DATA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_START_EMPTY">
-<code class="sig-name descname">RNGP_PAT_START_EMPTY</code><em class="property"> = 1090</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_START_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_START_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1090</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_START_GROUP">
-<code class="sig-name descname">RNGP_PAT_START_GROUP</code><em class="property"> = 1091</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_GROUP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_START_GROUP">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_START_GROUP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1091</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_GROUP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_START_INTERLEAVE">
-<code class="sig-name descname">RNGP_PAT_START_INTERLEAVE</code><em class="property"> = 1092</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_INTERLEAVE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_START_INTERLEAVE">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_START_INTERLEAVE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1092</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_INTERLEAVE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_START_LIST">
-<code class="sig-name descname">RNGP_PAT_START_LIST</code><em class="property"> = 1093</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_LIST" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_START_LIST">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_START_LIST</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1093</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_LIST" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_START_ONEMORE">
-<code class="sig-name descname">RNGP_PAT_START_ONEMORE</code><em class="property"> = 1094</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_ONEMORE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_START_ONEMORE">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_START_ONEMORE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1094</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_ONEMORE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_START_TEXT">
-<code class="sig-name descname">RNGP_PAT_START_TEXT</code><em class="property"> = 1095</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_TEXT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_START_TEXT">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_START_TEXT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1095</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_TEXT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PAT_START_VALUE">
-<code class="sig-name descname">RNGP_PAT_START_VALUE</code><em class="property"> = 1096</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PAT_START_VALUE">
+<span class="sig-name descname"><span class="pre">RNGP_PAT_START_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1096</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PAT_START_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_PREFIX_UNDEFINED">
-<code class="sig-name descname">RNGP_PREFIX_UNDEFINED</code><em class="property"> = 1097</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PREFIX_UNDEFINED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_PREFIX_UNDEFINED">
+<span class="sig-name descname"><span class="pre">RNGP_PREFIX_UNDEFINED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1097</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_PREFIX_UNDEFINED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_REF_CREATE_FAILED">
-<code class="sig-name descname">RNGP_REF_CREATE_FAILED</code><em class="property"> = 1098</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_CREATE_FAILED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_REF_CREATE_FAILED">
+<span class="sig-name descname"><span class="pre">RNGP_REF_CREATE_FAILED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1098</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_CREATE_FAILED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_REF_CYCLE">
-<code class="sig-name descname">RNGP_REF_CYCLE</code><em class="property"> = 1099</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_CYCLE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_REF_CYCLE">
+<span class="sig-name descname"><span class="pre">RNGP_REF_CYCLE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1099</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_CYCLE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_REF_NAME_INVALID">
-<code class="sig-name descname">RNGP_REF_NAME_INVALID</code><em class="property"> = 1100</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_NAME_INVALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_REF_NAME_INVALID">
+<span class="sig-name descname"><span class="pre">RNGP_REF_NAME_INVALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1100</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_NAME_INVALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_REF_NOT_EMPTY">
-<code class="sig-name descname">RNGP_REF_NOT_EMPTY</code><em class="property"> = 1103</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_NOT_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_REF_NOT_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_REF_NOT_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1103</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_NOT_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_REF_NO_DEF">
-<code class="sig-name descname">RNGP_REF_NO_DEF</code><em class="property"> = 1101</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_NO_DEF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_REF_NO_DEF">
+<span class="sig-name descname"><span class="pre">RNGP_REF_NO_DEF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1101</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_NO_DEF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_REF_NO_NAME">
-<code class="sig-name descname">RNGP_REF_NO_NAME</code><em class="property"> = 1102</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_NO_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_REF_NO_NAME">
+<span class="sig-name descname"><span class="pre">RNGP_REF_NO_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1102</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_REF_NO_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_START_CHOICE_AND_INTERLEAVE">
-<code class="sig-name descname">RNGP_START_CHOICE_AND_INTERLEAVE</code><em class="property"> = 1104</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_START_CHOICE_AND_INTERLEAVE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_START_CHOICE_AND_INTERLEAVE">
+<span class="sig-name descname"><span class="pre">RNGP_START_CHOICE_AND_INTERLEAVE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1104</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_START_CHOICE_AND_INTERLEAVE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_START_CONTENT">
-<code class="sig-name descname">RNGP_START_CONTENT</code><em class="property"> = 1105</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_START_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_START_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_START_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1105</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_START_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_START_EMPTY">
-<code class="sig-name descname">RNGP_START_EMPTY</code><em class="property"> = 1106</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_START_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_START_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_START_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1106</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_START_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_START_MISSING">
-<code class="sig-name descname">RNGP_START_MISSING</code><em class="property"> = 1107</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_START_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_START_MISSING">
+<span class="sig-name descname"><span class="pre">RNGP_START_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1107</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_START_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_TEXT_EXPECTED">
-<code class="sig-name descname">RNGP_TEXT_EXPECTED</code><em class="property"> = 1108</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_TEXT_EXPECTED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_TEXT_EXPECTED">
+<span class="sig-name descname"><span class="pre">RNGP_TEXT_EXPECTED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1108</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_TEXT_EXPECTED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_TEXT_HAS_CHILD">
-<code class="sig-name descname">RNGP_TEXT_HAS_CHILD</code><em class="property"> = 1109</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_TEXT_HAS_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_TEXT_HAS_CHILD">
+<span class="sig-name descname"><span class="pre">RNGP_TEXT_HAS_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1109</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_TEXT_HAS_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_TYPE_MISSING">
-<code class="sig-name descname">RNGP_TYPE_MISSING</code><em class="property"> = 1110</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_TYPE_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_TYPE_MISSING">
+<span class="sig-name descname"><span class="pre">RNGP_TYPE_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1110</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_TYPE_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_TYPE_NOT_FOUND">
-<code class="sig-name descname">RNGP_TYPE_NOT_FOUND</code><em class="property"> = 1111</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_TYPE_NOT_FOUND" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_TYPE_NOT_FOUND">
+<span class="sig-name descname"><span class="pre">RNGP_TYPE_NOT_FOUND</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1111</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_TYPE_NOT_FOUND" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_TYPE_VALUE">
-<code class="sig-name descname">RNGP_TYPE_VALUE</code><em class="property"> = 1112</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_TYPE_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_TYPE_VALUE">
+<span class="sig-name descname"><span class="pre">RNGP_TYPE_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1112</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_TYPE_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_UNKNOWN_ATTRIBUTE">
-<code class="sig-name descname">RNGP_UNKNOWN_ATTRIBUTE</code><em class="property"> = 1113</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_UNKNOWN_ATTRIBUTE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_UNKNOWN_ATTRIBUTE">
+<span class="sig-name descname"><span class="pre">RNGP_UNKNOWN_ATTRIBUTE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1113</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_UNKNOWN_ATTRIBUTE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_UNKNOWN_COMBINE">
-<code class="sig-name descname">RNGP_UNKNOWN_COMBINE</code><em class="property"> = 1114</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_UNKNOWN_COMBINE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_UNKNOWN_COMBINE">
+<span class="sig-name descname"><span class="pre">RNGP_UNKNOWN_COMBINE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1114</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_UNKNOWN_COMBINE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_UNKNOWN_CONSTRUCT">
-<code class="sig-name descname">RNGP_UNKNOWN_CONSTRUCT</code><em class="property"> = 1115</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_UNKNOWN_CONSTRUCT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_UNKNOWN_CONSTRUCT">
+<span class="sig-name descname"><span class="pre">RNGP_UNKNOWN_CONSTRUCT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1115</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_UNKNOWN_CONSTRUCT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_UNKNOWN_TYPE_LIB">
-<code class="sig-name descname">RNGP_UNKNOWN_TYPE_LIB</code><em class="property"> = 1116</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_UNKNOWN_TYPE_LIB" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_UNKNOWN_TYPE_LIB">
+<span class="sig-name descname"><span class="pre">RNGP_UNKNOWN_TYPE_LIB</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1116</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_UNKNOWN_TYPE_LIB" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_URI_FRAGMENT">
-<code class="sig-name descname">RNGP_URI_FRAGMENT</code><em class="property"> = 1117</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_URI_FRAGMENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_URI_FRAGMENT">
+<span class="sig-name descname"><span class="pre">RNGP_URI_FRAGMENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1117</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_URI_FRAGMENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_URI_NOT_ABSOLUTE">
-<code class="sig-name descname">RNGP_URI_NOT_ABSOLUTE</code><em class="property"> = 1118</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_URI_NOT_ABSOLUTE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_URI_NOT_ABSOLUTE">
+<span class="sig-name descname"><span class="pre">RNGP_URI_NOT_ABSOLUTE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1118</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_URI_NOT_ABSOLUTE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_VALUE_EMPTY">
-<code class="sig-name descname">RNGP_VALUE_EMPTY</code><em class="property"> = 1119</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_VALUE_EMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_VALUE_EMPTY">
+<span class="sig-name descname"><span class="pre">RNGP_VALUE_EMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1119</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_VALUE_EMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_VALUE_NO_CONTENT">
-<code class="sig-name descname">RNGP_VALUE_NO_CONTENT</code><em class="property"> = 1120</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_VALUE_NO_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_VALUE_NO_CONTENT">
+<span class="sig-name descname"><span class="pre">RNGP_VALUE_NO_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1120</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_VALUE_NO_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_XMLNS_NAME">
-<code class="sig-name descname">RNGP_XMLNS_NAME</code><em class="property"> = 1121</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_XMLNS_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_XMLNS_NAME">
+<span class="sig-name descname"><span class="pre">RNGP_XMLNS_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1121</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_XMLNS_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.RNGP_XML_NS">
-<code class="sig-name descname">RNGP_XML_NS</code><em class="property"> = 1122</em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_XML_NS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.RNGP_XML_NS">
+<span class="sig-name descname"><span class="pre">RNGP_XML_NS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1122</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.RNGP_XML_NS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SAVE_CHAR_INVALID">
-<code class="sig-name descname">SAVE_CHAR_INVALID</code><em class="property"> = 1401</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SAVE_CHAR_INVALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SAVE_CHAR_INVALID">
+<span class="sig-name descname"><span class="pre">SAVE_CHAR_INVALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1401</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SAVE_CHAR_INVALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SAVE_NOT_UTF8">
-<code class="sig-name descname">SAVE_NOT_UTF8</code><em class="property"> = 1400</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SAVE_NOT_UTF8" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SAVE_NOT_UTF8">
+<span class="sig-name descname"><span class="pre">SAVE_NOT_UTF8</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1400</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SAVE_NOT_UTF8" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SAVE_NO_DOCTYPE">
-<code class="sig-name descname">SAVE_NO_DOCTYPE</code><em class="property"> = 1402</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SAVE_NO_DOCTYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SAVE_NO_DOCTYPE">
+<span class="sig-name descname"><span class="pre">SAVE_NO_DOCTYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1402</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SAVE_NO_DOCTYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SAVE_UNKNOWN_ENCODING">
-<code class="sig-name descname">SAVE_UNKNOWN_ENCODING</code><em class="property"> = 1403</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SAVE_UNKNOWN_ENCODING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SAVE_UNKNOWN_ENCODING">
+<span class="sig-name descname"><span class="pre">SAVE_UNKNOWN_ENCODING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1403</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SAVE_UNKNOWN_ENCODING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_AG_PROPS_CORRECT">
-<code class="sig-name descname">SCHEMAP_AG_PROPS_CORRECT</code><em class="property"> = 3087</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_AG_PROPS_CORRECT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_AG_PROPS_CORRECT">
+<span class="sig-name descname"><span class="pre">SCHEMAP_AG_PROPS_CORRECT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3087</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_AG_PROPS_CORRECT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_ATTRFORMDEFAULT_VALUE">
-<code class="sig-name descname">SCHEMAP_ATTRFORMDEFAULT_VALUE</code><em class="property"> = 1701</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ATTRFORMDEFAULT_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_ATTRFORMDEFAULT_VALUE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_ATTRFORMDEFAULT_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1701</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ATTRFORMDEFAULT_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_ATTRGRP_NONAME_NOREF">
-<code class="sig-name descname">SCHEMAP_ATTRGRP_NONAME_NOREF</code><em class="property"> = 1702</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ATTRGRP_NONAME_NOREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_ATTRGRP_NONAME_NOREF">
+<span class="sig-name descname"><span class="pre">SCHEMAP_ATTRGRP_NONAME_NOREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1702</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ATTRGRP_NONAME_NOREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_ATTR_NONAME_NOREF">
-<code class="sig-name descname">SCHEMAP_ATTR_NONAME_NOREF</code><em class="property"> = 1703</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ATTR_NONAME_NOREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_ATTR_NONAME_NOREF">
+<span class="sig-name descname"><span class="pre">SCHEMAP_ATTR_NONAME_NOREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1703</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ATTR_NONAME_NOREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT">
-<code class="sig-name descname">SCHEMAP_AU_PROPS_CORRECT</code><em class="property"> = 3089</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT">
+<span class="sig-name descname"><span class="pre">SCHEMAP_AU_PROPS_CORRECT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3089</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT_2">
-<code class="sig-name descname">SCHEMAP_AU_PROPS_CORRECT_2</code><em class="property"> = 3078</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_AU_PROPS_CORRECT_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3078</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_2">
-<code class="sig-name descname">SCHEMAP_A_PROPS_CORRECT_2</code><em class="property"> = 3079</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_A_PROPS_CORRECT_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3079</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_3">
-<code class="sig-name descname">SCHEMAP_A_PROPS_CORRECT_3</code><em class="property"> = 3090</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_A_PROPS_CORRECT_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3090</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COMPLEXTYPE_NONAME_NOREF">
-<code class="sig-name descname">SCHEMAP_COMPLEXTYPE_NONAME_NOREF</code><em class="property"> = 1704</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COMPLEXTYPE_NONAME_NOREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COMPLEXTYPE_NONAME_NOREF">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COMPLEXTYPE_NONAME_NOREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1704</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COMPLEXTYPE_NONAME_NOREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ALL_LIMITED">
-<code class="sig-name descname">SCHEMAP_COS_ALL_LIMITED</code><em class="property"> = 3091</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ALL_LIMITED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ALL_LIMITED">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ALL_LIMITED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3091</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ALL_LIMITED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_1">
-<code class="sig-name descname">SCHEMAP_COS_CT_EXTENDS_1_1</code><em class="property"> = 3063</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_CT_EXTENDS_1_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3063</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_2">
-<code class="sig-name descname">SCHEMAP_COS_CT_EXTENDS_1_2</code><em class="property"> = 3088</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_CT_EXTENDS_1_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3088</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_3">
-<code class="sig-name descname">SCHEMAP_COS_CT_EXTENDS_1_3</code><em class="property"> = 1800</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_CT_EXTENDS_1_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1800</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_1">
-<code class="sig-name descname">SCHEMAP_COS_ST_DERIVED_OK_2_1</code><em class="property"> = 3031</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_DERIVED_OK_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3031</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_2">
-<code class="sig-name descname">SCHEMAP_COS_ST_DERIVED_OK_2_2</code><em class="property"> = 3032</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_DERIVED_OK_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3032</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_1">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_1_1</code><em class="property"> = 3011</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_1_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3011</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_2">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_1_2</code><em class="property"> = 3012</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_1_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3012</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_1">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_1_3_1</code><em class="property"> = 3013</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_1_3_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3013</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_2">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_1_3_2</code><em class="property"> = 3014</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_1_3_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3014</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_1">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_2_1</code><em class="property"> = 3015</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3015</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_1">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_2_3_1_1</code><em class="property"> = 3016</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_2_3_1_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3016</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_2">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_2_3_1_2</code><em class="property"> = 3017</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_2_3_1_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3017</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_1">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_2_3_2_1</code><em class="property"> = 3018</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_2_3_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3018</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_2">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_2_3_2_2</code><em class="property"> = 3019</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_2_3_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3019</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_3">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_2_3_2_3</code><em class="property"> = 3020</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_2_3_2_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3020</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_4">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_2_3_2_4</code><em class="property"> = 3021</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_4" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_4">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_2_3_2_4</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3021</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_4" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_5">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_2_3_2_5</code><em class="property"> = 3022</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_5" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_5">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_2_3_2_5</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3022</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_5" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_1">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_3_1</code><em class="property"> = 3023</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_3_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3023</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_3_3_1</code><em class="property"> = 3024</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_3_3_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3024</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1_2">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_3_3_1_2</code><em class="property"> = 3025</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_3_3_1_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3025</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_1">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_3_3_2_1</code><em class="property"> = 3027</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_3_3_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3027</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_2">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_3_3_2_2</code><em class="property"> = 3026</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_3_3_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3026</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_3">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_3_3_2_3</code><em class="property"> = 3028</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_3_3_2_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3028</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_4">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_3_3_2_4</code><em class="property"> = 3029</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_4" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_4">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_3_3_2_4</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3029</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_4" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_5">
-<code class="sig-name descname">SCHEMAP_COS_ST_RESTRICTS_3_3_2_5</code><em class="property"> = 3030</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_5" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_5">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_ST_RESTRICTS_3_3_2_5</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3030</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_5" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_1">
-<code class="sig-name descname">SCHEMAP_COS_VALID_DEFAULT_1</code><em class="property"> = 3058</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_VALID_DEFAULT_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3058</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_1">
-<code class="sig-name descname">SCHEMAP_COS_VALID_DEFAULT_2_1</code><em class="property"> = 3059</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_VALID_DEFAULT_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3059</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_1">
-<code class="sig-name descname">SCHEMAP_COS_VALID_DEFAULT_2_2_1</code><em class="property"> = 3060</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_VALID_DEFAULT_2_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3060</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_2">
-<code class="sig-name descname">SCHEMAP_COS_VALID_DEFAULT_2_2_2</code><em class="property"> = 3061</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_COS_VALID_DEFAULT_2_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3061</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_1">
-<code class="sig-name descname">SCHEMAP_CT_PROPS_CORRECT_1</code><em class="property"> = 1782</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_CT_PROPS_CORRECT_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1782</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_2">
-<code class="sig-name descname">SCHEMAP_CT_PROPS_CORRECT_2</code><em class="property"> = 1783</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_CT_PROPS_CORRECT_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1783</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_3">
-<code class="sig-name descname">SCHEMAP_CT_PROPS_CORRECT_3</code><em class="property"> = 1784</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_CT_PROPS_CORRECT_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1784</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_4">
-<code class="sig-name descname">SCHEMAP_CT_PROPS_CORRECT_4</code><em class="property"> = 1785</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_4" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_4">
+<span class="sig-name descname"><span class="pre">SCHEMAP_CT_PROPS_CORRECT_4</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1785</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_4" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_5">
-<code class="sig-name descname">SCHEMAP_CT_PROPS_CORRECT_5</code><em class="property"> = 1786</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_5" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_5">
+<span class="sig-name descname"><span class="pre">SCHEMAP_CT_PROPS_CORRECT_5</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1786</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_5" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_CVC_SIMPLE_TYPE">
-<code class="sig-name descname">SCHEMAP_CVC_SIMPLE_TYPE</code><em class="property"> = 3062</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CVC_SIMPLE_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_CVC_SIMPLE_TYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_CVC_SIMPLE_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3062</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_CVC_SIMPLE_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_C_PROPS_CORRECT">
-<code class="sig-name descname">SCHEMAP_C_PROPS_CORRECT</code><em class="property"> = 3080</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_C_PROPS_CORRECT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_C_PROPS_CORRECT">
+<span class="sig-name descname"><span class="pre">SCHEMAP_C_PROPS_CORRECT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3080</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_C_PROPS_CORRECT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_DEF_AND_PREFIX">
-<code class="sig-name descname">SCHEMAP_DEF_AND_PREFIX</code><em class="property"> = 1768</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DEF_AND_PREFIX" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_DEF_AND_PREFIX">
+<span class="sig-name descname"><span class="pre">SCHEMAP_DEF_AND_PREFIX</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1768</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DEF_AND_PREFIX" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_1">
-<code class="sig-name descname">SCHEMAP_DERIVATION_OK_RESTRICTION_1</code><em class="property"> = 1787</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_DERIVATION_OK_RESTRICTION_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1787</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1">
-<code class="sig-name descname">SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1</code><em class="property"> = 1788</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1788</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2">
-<code class="sig-name descname">SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2</code><em class="property"> = 1789</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1789</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3">
-<code class="sig-name descname">SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3</code><em class="property"> = 3077</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3077</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_2">
-<code class="sig-name descname">SCHEMAP_DERIVATION_OK_RESTRICTION_2_2</code><em class="property"> = 1790</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_DERIVATION_OK_RESTRICTION_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1790</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_3">
-<code class="sig-name descname">SCHEMAP_DERIVATION_OK_RESTRICTION_3</code><em class="property"> = 1791</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_DERIVATION_OK_RESTRICTION_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1791</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_1">
-<code class="sig-name descname">SCHEMAP_DERIVATION_OK_RESTRICTION_4_1</code><em class="property"> = 1797</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_DERIVATION_OK_RESTRICTION_4_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1797</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_2">
-<code class="sig-name descname">SCHEMAP_DERIVATION_OK_RESTRICTION_4_2</code><em class="property"> = 1798</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_DERIVATION_OK_RESTRICTION_4_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1798</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_3">
-<code class="sig-name descname">SCHEMAP_DERIVATION_OK_RESTRICTION_4_3</code><em class="property"> = 1799</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_DERIVATION_OK_RESTRICTION_4_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1799</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_ELEMFORMDEFAULT_VALUE">
-<code class="sig-name descname">SCHEMAP_ELEMFORMDEFAULT_VALUE</code><em class="property"> = 1705</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ELEMFORMDEFAULT_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_ELEMFORMDEFAULT_VALUE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_ELEMFORMDEFAULT_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1705</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ELEMFORMDEFAULT_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_ELEM_DEFAULT_FIXED">
-<code class="sig-name descname">SCHEMAP_ELEM_DEFAULT_FIXED</code><em class="property"> = 1755</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ELEM_DEFAULT_FIXED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_ELEM_DEFAULT_FIXED">
+<span class="sig-name descname"><span class="pre">SCHEMAP_ELEM_DEFAULT_FIXED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1755</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ELEM_DEFAULT_FIXED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_ELEM_NONAME_NOREF">
-<code class="sig-name descname">SCHEMAP_ELEM_NONAME_NOREF</code><em class="property"> = 1706</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ELEM_NONAME_NOREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_ELEM_NONAME_NOREF">
+<span class="sig-name descname"><span class="pre">SCHEMAP_ELEM_NONAME_NOREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1706</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ELEM_NONAME_NOREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_EXTENSION_NO_BASE">
-<code class="sig-name descname">SCHEMAP_EXTENSION_NO_BASE</code><em class="property"> = 1707</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_EXTENSION_NO_BASE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_EXTENSION_NO_BASE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_EXTENSION_NO_BASE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1707</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_EXTENSION_NO_BASE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_2">
-<code class="sig-name descname">SCHEMAP_E_PROPS_CORRECT_2</code><em class="property"> = 3045</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_E_PROPS_CORRECT_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3045</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_3">
-<code class="sig-name descname">SCHEMAP_E_PROPS_CORRECT_3</code><em class="property"> = 3046</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_E_PROPS_CORRECT_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3046</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_4">
-<code class="sig-name descname">SCHEMAP_E_PROPS_CORRECT_4</code><em class="property"> = 3047</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_4" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_4">
+<span class="sig-name descname"><span class="pre">SCHEMAP_E_PROPS_CORRECT_4</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3047</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_4" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_5">
-<code class="sig-name descname">SCHEMAP_E_PROPS_CORRECT_5</code><em class="property"> = 3048</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_5" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_5">
+<span class="sig-name descname"><span class="pre">SCHEMAP_E_PROPS_CORRECT_5</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3048</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_5" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_6">
-<code class="sig-name descname">SCHEMAP_E_PROPS_CORRECT_6</code><em class="property"> = 3049</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_6" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_6">
+<span class="sig-name descname"><span class="pre">SCHEMAP_E_PROPS_CORRECT_6</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3049</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_6" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_FACET_NO_VALUE">
-<code class="sig-name descname">SCHEMAP_FACET_NO_VALUE</code><em class="property"> = 1708</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_FACET_NO_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_FACET_NO_VALUE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_FACET_NO_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1708</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_FACET_NO_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_FAILED_BUILD_IMPORT">
-<code class="sig-name descname">SCHEMAP_FAILED_BUILD_IMPORT</code><em class="property"> = 1709</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_FAILED_BUILD_IMPORT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_FAILED_BUILD_IMPORT">
+<span class="sig-name descname"><span class="pre">SCHEMAP_FAILED_BUILD_IMPORT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1709</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_FAILED_BUILD_IMPORT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_FAILED_LOAD">
-<code class="sig-name descname">SCHEMAP_FAILED_LOAD</code><em class="property"> = 1757</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_FAILED_LOAD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_FAILED_LOAD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_FAILED_LOAD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1757</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_FAILED_LOAD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_FAILED_PARSE">
-<code class="sig-name descname">SCHEMAP_FAILED_PARSE</code><em class="property"> = 1766</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_FAILED_PARSE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_FAILED_PARSE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_FAILED_PARSE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1766</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_FAILED_PARSE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_GROUP_NONAME_NOREF">
-<code class="sig-name descname">SCHEMAP_GROUP_NONAME_NOREF</code><em class="property"> = 1710</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_GROUP_NONAME_NOREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_GROUP_NONAME_NOREF">
+<span class="sig-name descname"><span class="pre">SCHEMAP_GROUP_NONAME_NOREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1710</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_GROUP_NONAME_NOREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_IMPORT_NAMESPACE_NOT_URI">
-<code class="sig-name descname">SCHEMAP_IMPORT_NAMESPACE_NOT_URI</code><em class="property"> = 1711</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_IMPORT_NAMESPACE_NOT_URI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_IMPORT_NAMESPACE_NOT_URI">
+<span class="sig-name descname"><span class="pre">SCHEMAP_IMPORT_NAMESPACE_NOT_URI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1711</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_IMPORT_NAMESPACE_NOT_URI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_IMPORT_REDEFINE_NSNAME">
-<code class="sig-name descname">SCHEMAP_IMPORT_REDEFINE_NSNAME</code><em class="property"> = 1712</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_IMPORT_REDEFINE_NSNAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_IMPORT_REDEFINE_NSNAME">
+<span class="sig-name descname"><span class="pre">SCHEMAP_IMPORT_REDEFINE_NSNAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1712</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_IMPORT_REDEFINE_NSNAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_IMPORT_SCHEMA_NOT_URI">
-<code class="sig-name descname">SCHEMAP_IMPORT_SCHEMA_NOT_URI</code><em class="property"> = 1713</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_IMPORT_SCHEMA_NOT_URI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_IMPORT_SCHEMA_NOT_URI">
+<span class="sig-name descname"><span class="pre">SCHEMAP_IMPORT_SCHEMA_NOT_URI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1713</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_IMPORT_SCHEMA_NOT_URI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NOT_URI">
-<code class="sig-name descname">SCHEMAP_INCLUDE_SCHEMA_NOT_URI</code><em class="property"> = 1770</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NOT_URI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NOT_URI">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INCLUDE_SCHEMA_NOT_URI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1770</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NOT_URI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NO_URI">
-<code class="sig-name descname">SCHEMAP_INCLUDE_SCHEMA_NO_URI</code><em class="property"> = 1771</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NO_URI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NO_URI">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INCLUDE_SCHEMA_NO_URI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1771</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NO_URI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INTERNAL">
-<code class="sig-name descname">SCHEMAP_INTERNAL</code><em class="property"> = 3069</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INTERNAL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INTERNAL">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INTERNAL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3069</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INTERNAL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE">
-<code class="sig-name descname">SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE</code><em class="property"> = 1793</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1793</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_COMBINATION">
-<code class="sig-name descname">SCHEMAP_INVALID_ATTR_COMBINATION</code><em class="property"> = 1777</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_COMBINATION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_COMBINATION">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_ATTR_COMBINATION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1777</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_COMBINATION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_INLINE_COMBINATION">
-<code class="sig-name descname">SCHEMAP_INVALID_ATTR_INLINE_COMBINATION</code><em class="property"> = 1778</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_INLINE_COMBINATION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_INLINE_COMBINATION">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_ATTR_INLINE_COMBINATION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1778</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_INLINE_COMBINATION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_NAME">
-<code class="sig-name descname">SCHEMAP_INVALID_ATTR_NAME</code><em class="property"> = 1780</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_NAME">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_ATTR_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1780</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_USE">
-<code class="sig-name descname">SCHEMAP_INVALID_ATTR_USE</code><em class="property"> = 1774</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_USE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_USE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_ATTR_USE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1774</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_USE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_BOOLEAN">
-<code class="sig-name descname">SCHEMAP_INVALID_BOOLEAN</code><em class="property"> = 1714</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_BOOLEAN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_BOOLEAN">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_BOOLEAN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1714</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_BOOLEAN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_ENUM">
-<code class="sig-name descname">SCHEMAP_INVALID_ENUM</code><em class="property"> = 1715</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_ENUM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_ENUM">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_ENUM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1715</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_ENUM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET">
-<code class="sig-name descname">SCHEMAP_INVALID_FACET</code><em class="property"> = 1716</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_FACET</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1716</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET_VALUE">
-<code class="sig-name descname">SCHEMAP_INVALID_FACET_VALUE</code><em class="property"> = 1717</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET_VALUE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_FACET_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1717</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_MAXOCCURS">
-<code class="sig-name descname">SCHEMAP_INVALID_MAXOCCURS</code><em class="property"> = 1718</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_MAXOCCURS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_MAXOCCURS">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_MAXOCCURS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1718</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_MAXOCCURS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_MINOCCURS">
-<code class="sig-name descname">SCHEMAP_INVALID_MINOCCURS</code><em class="property"> = 1719</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_MINOCCURS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_MINOCCURS">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_MINOCCURS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1719</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_MINOCCURS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_REF_AND_SUBTYPE">
-<code class="sig-name descname">SCHEMAP_INVALID_REF_AND_SUBTYPE</code><em class="property"> = 1720</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_REF_AND_SUBTYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_REF_AND_SUBTYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_REF_AND_SUBTYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1720</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_REF_AND_SUBTYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_WHITE_SPACE">
-<code class="sig-name descname">SCHEMAP_INVALID_WHITE_SPACE</code><em class="property"> = 1721</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_WHITE_SPACE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_INVALID_WHITE_SPACE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_INVALID_WHITE_SPACE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1721</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_INVALID_WHITE_SPACE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_1">
-<code class="sig-name descname">SCHEMAP_MG_PROPS_CORRECT_1</code><em class="property"> = 3074</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_MG_PROPS_CORRECT_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3074</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_2">
-<code class="sig-name descname">SCHEMAP_MG_PROPS_CORRECT_2</code><em class="property"> = 3075</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_MG_PROPS_CORRECT_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3075</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_MISSING_SIMPLETYPE_CHILD">
-<code class="sig-name descname">SCHEMAP_MISSING_SIMPLETYPE_CHILD</code><em class="property"> = 1779</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_MISSING_SIMPLETYPE_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_MISSING_SIMPLETYPE_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_MISSING_SIMPLETYPE_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1779</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_MISSING_SIMPLETYPE_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_NOATTR_NOREF">
-<code class="sig-name descname">SCHEMAP_NOATTR_NOREF</code><em class="property"> = 1722</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOATTR_NOREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_NOATTR_NOREF">
+<span class="sig-name descname"><span class="pre">SCHEMAP_NOATTR_NOREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1722</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOATTR_NOREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_NOROOT">
-<code class="sig-name descname">SCHEMAP_NOROOT</code><em class="property"> = 1759</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOROOT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_NOROOT">
+<span class="sig-name descname"><span class="pre">SCHEMAP_NOROOT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1759</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOROOT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_NOTATION_NO_NAME">
-<code class="sig-name descname">SCHEMAP_NOTATION_NO_NAME</code><em class="property"> = 1723</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOTATION_NO_NAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_NOTATION_NO_NAME">
+<span class="sig-name descname"><span class="pre">SCHEMAP_NOTATION_NO_NAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1723</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOTATION_NO_NAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_NOTHING_TO_PARSE">
-<code class="sig-name descname">SCHEMAP_NOTHING_TO_PARSE</code><em class="property"> = 1758</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOTHING_TO_PARSE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_NOTHING_TO_PARSE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_NOTHING_TO_PARSE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1758</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOTHING_TO_PARSE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_NOTYPE_NOREF">
-<code class="sig-name descname">SCHEMAP_NOTYPE_NOREF</code><em class="property"> = 1724</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOTYPE_NOREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_NOTYPE_NOREF">
+<span class="sig-name descname"><span class="pre">SCHEMAP_NOTYPE_NOREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1724</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOTYPE_NOREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_NOT_DETERMINISTIC">
-<code class="sig-name descname">SCHEMAP_NOT_DETERMINISTIC</code><em class="property"> = 3070</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOT_DETERMINISTIC" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_NOT_DETERMINISTIC">
+<span class="sig-name descname"><span class="pre">SCHEMAP_NOT_DETERMINISTIC</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3070</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOT_DETERMINISTIC" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_NOT_SCHEMA">
-<code class="sig-name descname">SCHEMAP_NOT_SCHEMA</code><em class="property"> = 1772</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOT_SCHEMA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_NOT_SCHEMA">
+<span class="sig-name descname"><span class="pre">SCHEMAP_NOT_SCHEMA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1772</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NOT_SCHEMA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_NO_XMLNS">
-<code class="sig-name descname">SCHEMAP_NO_XMLNS</code><em class="property"> = 3056</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NO_XMLNS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_NO_XMLNS">
+<span class="sig-name descname"><span class="pre">SCHEMAP_NO_XMLNS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3056</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NO_XMLNS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_NO_XSI">
-<code class="sig-name descname">SCHEMAP_NO_XSI</code><em class="property"> = 3057</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NO_XSI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_NO_XSI">
+<span class="sig-name descname"><span class="pre">SCHEMAP_NO_XSI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3057</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_NO_XSI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_PREFIX_UNDEFINED">
-<code class="sig-name descname">SCHEMAP_PREFIX_UNDEFINED</code><em class="property"> = 1700</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_PREFIX_UNDEFINED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_PREFIX_UNDEFINED">
+<span class="sig-name descname"><span class="pre">SCHEMAP_PREFIX_UNDEFINED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1700</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_PREFIX_UNDEFINED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_1">
-<code class="sig-name descname">SCHEMAP_P_PROPS_CORRECT_1</code><em class="property"> = 3042</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_P_PROPS_CORRECT_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3042</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_1">
-<code class="sig-name descname">SCHEMAP_P_PROPS_CORRECT_2_1</code><em class="property"> = 3043</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_P_PROPS_CORRECT_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3043</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_2">
-<code class="sig-name descname">SCHEMAP_P_PROPS_CORRECT_2_2</code><em class="property"> = 3044</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_P_PROPS_CORRECT_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3044</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_RECURSIVE">
-<code class="sig-name descname">SCHEMAP_RECURSIVE</code><em class="property"> = 1775</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_RECURSIVE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_RECURSIVE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_RECURSIVE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1775</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_RECURSIVE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTR">
-<code class="sig-name descname">SCHEMAP_REDEFINED_ATTR</code><em class="property"> = 1764</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTR">
+<span class="sig-name descname"><span class="pre">SCHEMAP_REDEFINED_ATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1764</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTRGROUP">
-<code class="sig-name descname">SCHEMAP_REDEFINED_ATTRGROUP</code><em class="property"> = 1763</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTRGROUP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTRGROUP">
+<span class="sig-name descname"><span class="pre">SCHEMAP_REDEFINED_ATTRGROUP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1763</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTRGROUP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ELEMENT">
-<code class="sig-name descname">SCHEMAP_REDEFINED_ELEMENT</code><em class="property"> = 1762</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ELEMENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ELEMENT">
+<span class="sig-name descname"><span class="pre">SCHEMAP_REDEFINED_ELEMENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1762</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ELEMENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_GROUP">
-<code class="sig-name descname">SCHEMAP_REDEFINED_GROUP</code><em class="property"> = 1760</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_GROUP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_GROUP">
+<span class="sig-name descname"><span class="pre">SCHEMAP_REDEFINED_GROUP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1760</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_GROUP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_NOTATION">
-<code class="sig-name descname">SCHEMAP_REDEFINED_NOTATION</code><em class="property"> = 1765</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_NOTATION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_NOTATION">
+<span class="sig-name descname"><span class="pre">SCHEMAP_REDEFINED_NOTATION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1765</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_NOTATION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_TYPE">
-<code class="sig-name descname">SCHEMAP_REDEFINED_TYPE</code><em class="property"> = 1761</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_TYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_REDEFINED_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1761</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_REF_AND_CONTENT">
-<code class="sig-name descname">SCHEMAP_REF_AND_CONTENT</code><em class="property"> = 1781</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REF_AND_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_REF_AND_CONTENT">
+<span class="sig-name descname"><span class="pre">SCHEMAP_REF_AND_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1781</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REF_AND_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_REF_AND_SUBTYPE">
-<code class="sig-name descname">SCHEMAP_REF_AND_SUBTYPE</code><em class="property"> = 1725</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REF_AND_SUBTYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_REF_AND_SUBTYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_REF_AND_SUBTYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1725</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REF_AND_SUBTYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_REGEXP_INVALID">
-<code class="sig-name descname">SCHEMAP_REGEXP_INVALID</code><em class="property"> = 1756</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REGEXP_INVALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_REGEXP_INVALID">
+<span class="sig-name descname"><span class="pre">SCHEMAP_REGEXP_INVALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1756</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_REGEXP_INVALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_RESTRICTION_NONAME_NOREF">
-<code class="sig-name descname">SCHEMAP_RESTRICTION_NONAME_NOREF</code><em class="property"> = 1726</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_RESTRICTION_NONAME_NOREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_RESTRICTION_NONAME_NOREF">
+<span class="sig-name descname"><span class="pre">SCHEMAP_RESTRICTION_NONAME_NOREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1726</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_RESTRICTION_NONAME_NOREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_INVALID_VALUE">
-<code class="sig-name descname">SCHEMAP_S4S_ATTR_INVALID_VALUE</code><em class="property"> = 3037</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_INVALID_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_INVALID_VALUE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_S4S_ATTR_INVALID_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3037</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_INVALID_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_MISSING">
-<code class="sig-name descname">SCHEMAP_S4S_ATTR_MISSING</code><em class="property"> = 3036</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_MISSING">
+<span class="sig-name descname"><span class="pre">SCHEMAP_S4S_ATTR_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3036</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_NOT_ALLOWED">
-<code class="sig-name descname">SCHEMAP_S4S_ATTR_NOT_ALLOWED</code><em class="property"> = 3035</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_NOT_ALLOWED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_NOT_ALLOWED">
+<span class="sig-name descname"><span class="pre">SCHEMAP_S4S_ATTR_NOT_ALLOWED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3035</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_NOT_ALLOWED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_MISSING">
-<code class="sig-name descname">SCHEMAP_S4S_ELEM_MISSING</code><em class="property"> = 3034</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_MISSING">
+<span class="sig-name descname"><span class="pre">SCHEMAP_S4S_ELEM_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3034</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_NOT_ALLOWED">
-<code class="sig-name descname">SCHEMAP_S4S_ELEM_NOT_ALLOWED</code><em class="property"> = 3033</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_NOT_ALLOWED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_NOT_ALLOWED">
+<span class="sig-name descname"><span class="pre">SCHEMAP_S4S_ELEM_NOT_ALLOWED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3033</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_NOT_ALLOWED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SIMPLETYPE_NONAME">
-<code class="sig-name descname">SCHEMAP_SIMPLETYPE_NONAME</code><em class="property"> = 1727</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SIMPLETYPE_NONAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SIMPLETYPE_NONAME">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SIMPLETYPE_NONAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1727</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SIMPLETYPE_NONAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_1">
-<code class="sig-name descname">SCHEMAP_SRC_ATTRIBUTE_1</code><em class="property"> = 3051</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ATTRIBUTE_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3051</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_2">
-<code class="sig-name descname">SCHEMAP_SRC_ATTRIBUTE_2</code><em class="property"> = 3052</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ATTRIBUTE_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3052</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_1">
-<code class="sig-name descname">SCHEMAP_SRC_ATTRIBUTE_3_1</code><em class="property"> = 3053</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ATTRIBUTE_3_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3053</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_2">
-<code class="sig-name descname">SCHEMAP_SRC_ATTRIBUTE_3_2</code><em class="property"> = 3054</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ATTRIBUTE_3_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3054</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_4">
-<code class="sig-name descname">SCHEMAP_SRC_ATTRIBUTE_4</code><em class="property"> = 3055</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_4" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_4">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ATTRIBUTE_4</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3055</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_4" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_1">
-<code class="sig-name descname">SCHEMAP_SRC_ATTRIBUTE_GROUP_1</code><em class="property"> = 3071</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ATTRIBUTE_GROUP_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3071</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_2">
-<code class="sig-name descname">SCHEMAP_SRC_ATTRIBUTE_GROUP_2</code><em class="property"> = 3072</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ATTRIBUTE_GROUP_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3072</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_3">
-<code class="sig-name descname">SCHEMAP_SRC_ATTRIBUTE_GROUP_3</code><em class="property"> = 3073</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ATTRIBUTE_GROUP_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3073</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_CT_1">
-<code class="sig-name descname">SCHEMAP_SRC_CT_1</code><em class="property"> = 3076</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_CT_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_CT_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_CT_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3076</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_CT_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_1">
-<code class="sig-name descname">SCHEMAP_SRC_ELEMENT_1</code><em class="property"> = 3038</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ELEMENT_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3038</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_1">
-<code class="sig-name descname">SCHEMAP_SRC_ELEMENT_2_1</code><em class="property"> = 3039</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ELEMENT_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3039</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_2">
-<code class="sig-name descname">SCHEMAP_SRC_ELEMENT_2_2</code><em class="property"> = 3040</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ELEMENT_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3040</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_3">
-<code class="sig-name descname">SCHEMAP_SRC_ELEMENT_3</code><em class="property"> = 3041</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_ELEMENT_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3041</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT">
-<code class="sig-name descname">SCHEMAP_SRC_IMPORT</code><em class="property"> = 3082</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_IMPORT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3082</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_1">
-<code class="sig-name descname">SCHEMAP_SRC_IMPORT_1_1</code><em class="property"> = 3064</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_IMPORT_1_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3064</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_2">
-<code class="sig-name descname">SCHEMAP_SRC_IMPORT_1_2</code><em class="property"> = 3065</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_IMPORT_1_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3065</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2">
-<code class="sig-name descname">SCHEMAP_SRC_IMPORT_2</code><em class="property"> = 3066</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_IMPORT_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3066</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_1">
-<code class="sig-name descname">SCHEMAP_SRC_IMPORT_2_1</code><em class="property"> = 3067</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_IMPORT_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3067</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_2">
-<code class="sig-name descname">SCHEMAP_SRC_IMPORT_2_2</code><em class="property"> = 3068</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_IMPORT_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3068</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_1">
-<code class="sig-name descname">SCHEMAP_SRC_IMPORT_3_1</code><em class="property"> = 1795</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_IMPORT_3_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1795</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_2">
-<code class="sig-name descname">SCHEMAP_SRC_IMPORT_3_2</code><em class="property"> = 1796</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_IMPORT_3_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1796</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_INCLUDE">
-<code class="sig-name descname">SCHEMAP_SRC_INCLUDE</code><em class="property"> = 3050</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_INCLUDE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_INCLUDE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_INCLUDE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3050</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_INCLUDE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE">
-<code class="sig-name descname">SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE</code><em class="property"> = 3006</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3006</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_REDEFINE">
-<code class="sig-name descname">SCHEMAP_SRC_REDEFINE</code><em class="property"> = 3081</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_REDEFINE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_REDEFINE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_REDEFINE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3081</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_REDEFINE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_RESOLVE">
-<code class="sig-name descname">SCHEMAP_SRC_RESOLVE</code><em class="property"> = 3004</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_RESOLVE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_RESOLVE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_RESOLVE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3004</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_RESOLVE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE">
-<code class="sig-name descname">SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE</code><em class="property"> = 3005</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3005</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_1">
-<code class="sig-name descname">SCHEMAP_SRC_SIMPLE_TYPE_1</code><em class="property"> = 3000</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_SIMPLE_TYPE_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3000</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_2">
-<code class="sig-name descname">SCHEMAP_SRC_SIMPLE_TYPE_2</code><em class="property"> = 3001</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_SIMPLE_TYPE_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3001</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_3">
-<code class="sig-name descname">SCHEMAP_SRC_SIMPLE_TYPE_3</code><em class="property"> = 3002</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_SIMPLE_TYPE_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3002</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_4">
-<code class="sig-name descname">SCHEMAP_SRC_SIMPLE_TYPE_4</code><em class="property"> = 3003</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_4" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_4">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_SIMPLE_TYPE_4</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3003</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_4" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES">
-<code class="sig-name descname">SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES</code><em class="property"> = 3007</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3007</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_1">
-<code class="sig-name descname">SCHEMAP_ST_PROPS_CORRECT_1</code><em class="property"> = 3008</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_1">
+<span class="sig-name descname"><span class="pre">SCHEMAP_ST_PROPS_CORRECT_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3008</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_2">
-<code class="sig-name descname">SCHEMAP_ST_PROPS_CORRECT_2</code><em class="property"> = 3009</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_2">
+<span class="sig-name descname"><span class="pre">SCHEMAP_ST_PROPS_CORRECT_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3009</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_3">
-<code class="sig-name descname">SCHEMAP_ST_PROPS_CORRECT_3</code><em class="property"> = 3010</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_3">
+<span class="sig-name descname"><span class="pre">SCHEMAP_ST_PROPS_CORRECT_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3010</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE">
-<code class="sig-name descname">SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE</code><em class="property"> = 1776</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1776</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_TYPE_AND_SUBTYPE">
-<code class="sig-name descname">SCHEMAP_TYPE_AND_SUBTYPE</code><em class="property"> = 1728</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_TYPE_AND_SUBTYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_TYPE_AND_SUBTYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_TYPE_AND_SUBTYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1728</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_TYPE_AND_SUBTYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNION_NOT_EXPRESSIBLE">
-<code class="sig-name descname">SCHEMAP_UNION_NOT_EXPRESSIBLE</code><em class="property"> = 1794</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNION_NOT_EXPRESSIBLE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNION_NOT_EXPRESSIBLE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNION_NOT_EXPRESSIBLE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1794</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNION_NOT_EXPRESSIBLE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ALL_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_ALL_CHILD</code><em class="property"> = 1729</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ALL_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ALL_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_ALL_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1729</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ALL_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD</code><em class="property"> = 1730</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1730</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRGRP_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_ATTRGRP_CHILD</code><em class="property"> = 1732</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRGRP_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRGRP_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_ATTRGRP_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1732</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRGRP_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP</code><em class="property"> = 1733</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1733</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTR_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_ATTR_CHILD</code><em class="property"> = 1731</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTR_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTR_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_ATTR_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1731</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTR_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_BASE_TYPE">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_BASE_TYPE</code><em class="property"> = 1734</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_BASE_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_BASE_TYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_BASE_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1734</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_BASE_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_CHOICE_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_CHOICE_CHILD</code><em class="property"> = 1735</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_CHOICE_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_CHOICE_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_CHOICE_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1735</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_CHOICE_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD</code><em class="property"> = 1736</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1736</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD</code><em class="property"> = 1737</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1737</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ELEM_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_ELEM_CHILD</code><em class="property"> = 1738</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ELEM_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ELEM_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_ELEM_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1738</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ELEM_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_EXTENSION_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_EXTENSION_CHILD</code><em class="property"> = 1739</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_EXTENSION_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_EXTENSION_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_EXTENSION_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1739</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_EXTENSION_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_FACET_CHILD</code><em class="property"> = 1740</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_FACET_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1740</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_TYPE">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_FACET_TYPE</code><em class="property"> = 1741</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_TYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_FACET_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1741</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_GROUP_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_GROUP_CHILD</code><em class="property"> = 1742</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_GROUP_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_GROUP_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_GROUP_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1742</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_GROUP_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_IMPORT_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_IMPORT_CHILD</code><em class="property"> = 1743</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_IMPORT_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_IMPORT_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_IMPORT_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1743</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_IMPORT_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_INCLUDE_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_INCLUDE_CHILD</code><em class="property"> = 1769</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_INCLUDE_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_INCLUDE_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_INCLUDE_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1769</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_INCLUDE_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_LIST_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_LIST_CHILD</code><em class="property"> = 1744</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_LIST_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_LIST_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_LIST_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1744</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_LIST_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_MEMBER_TYPE">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_MEMBER_TYPE</code><em class="property"> = 1773</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_MEMBER_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_MEMBER_TYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_MEMBER_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1773</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_MEMBER_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_NOTATION_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_NOTATION_CHILD</code><em class="property"> = 1745</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_NOTATION_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_NOTATION_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_NOTATION_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1745</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_NOTATION_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PREFIX">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_PREFIX</code><em class="property"> = 1767</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PREFIX" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PREFIX">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_PREFIX</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1767</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PREFIX" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD</code><em class="property"> = 1746</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1746</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_REF">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_REF</code><em class="property"> = 1747</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_REF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_REF">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_REF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1747</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_REF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_RESTRICTION_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_RESTRICTION_CHILD</code><em class="property"> = 1748</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_RESTRICTION_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_RESTRICTION_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_RESTRICTION_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1748</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_RESTRICTION_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SCHEMAS_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_SCHEMAS_CHILD</code><em class="property"> = 1749</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SCHEMAS_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SCHEMAS_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_SCHEMAS_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1749</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SCHEMAS_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SEQUENCE_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_SEQUENCE_CHILD</code><em class="property"> = 1750</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SEQUENCE_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SEQUENCE_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_SEQUENCE_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1750</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SEQUENCE_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD</code><em class="property"> = 1751</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1751</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD</code><em class="property"> = 1752</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1752</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_TYPE">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_TYPE</code><em class="property"> = 1753</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_TYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1753</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_UNION_CHILD">
-<code class="sig-name descname">SCHEMAP_UNKNOWN_UNION_CHILD</code><em class="property"> = 1754</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_UNION_CHILD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_UNION_CHILD">
+<span class="sig-name descname"><span class="pre">SCHEMAP_UNKNOWN_UNION_CHILD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1754</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_UNION_CHILD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_POINTLESS_PROH">
-<code class="sig-name descname">SCHEMAP_WARN_ATTR_POINTLESS_PROH</code><em class="property"> = 3086</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_POINTLESS_PROH" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_POINTLESS_PROH">
+<span class="sig-name descname"><span class="pre">SCHEMAP_WARN_ATTR_POINTLESS_PROH</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3086</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_POINTLESS_PROH" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_REDECL_PROH">
-<code class="sig-name descname">SCHEMAP_WARN_ATTR_REDECL_PROH</code><em class="property"> = 3085</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_REDECL_PROH" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_REDECL_PROH">
+<span class="sig-name descname"><span class="pre">SCHEMAP_WARN_ATTR_REDECL_PROH</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3085</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_REDECL_PROH" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_WARN_SKIP_SCHEMA">
-<code class="sig-name descname">SCHEMAP_WARN_SKIP_SCHEMA</code><em class="property"> = 3083</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_WARN_SKIP_SCHEMA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_WARN_SKIP_SCHEMA">
+<span class="sig-name descname"><span class="pre">SCHEMAP_WARN_SKIP_SCHEMA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3083</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_WARN_SKIP_SCHEMA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_WARN_UNLOCATED_SCHEMA">
-<code class="sig-name descname">SCHEMAP_WARN_UNLOCATED_SCHEMA</code><em class="property"> = 3084</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_WARN_UNLOCATED_SCHEMA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_WARN_UNLOCATED_SCHEMA">
+<span class="sig-name descname"><span class="pre">SCHEMAP_WARN_UNLOCATED_SCHEMA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3084</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_WARN_UNLOCATED_SCHEMA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAP_WILDCARD_INVALID_NS_MEMBER">
-<code class="sig-name descname">SCHEMAP_WILDCARD_INVALID_NS_MEMBER</code><em class="property"> = 1792</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_WILDCARD_INVALID_NS_MEMBER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAP_WILDCARD_INVALID_NS_MEMBER">
+<span class="sig-name descname"><span class="pre">SCHEMAP_WILDCARD_INVALID_NS_MEMBER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1792</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAP_WILDCARD_INVALID_NS_MEMBER" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMATRONV_ASSERT">
-<code class="sig-name descname">SCHEMATRONV_ASSERT</code><em class="property"> = 4000</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMATRONV_ASSERT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMATRONV_ASSERT">
+<span class="sig-name descname"><span class="pre">SCHEMATRONV_ASSERT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">4000</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMATRONV_ASSERT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMATRONV_REPORT">
-<code class="sig-name descname">SCHEMATRONV_REPORT</code><em class="property"> = 4001</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMATRONV_REPORT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMATRONV_REPORT">
+<span class="sig-name descname"><span class="pre">SCHEMATRONV_REPORT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">4001</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMATRONV_REPORT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_ATTRINVALID">
-<code class="sig-name descname">SCHEMAV_ATTRINVALID</code><em class="property"> = 1821</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_ATTRINVALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_ATTRINVALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_ATTRINVALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1821</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_ATTRINVALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_ATTRUNKNOWN">
-<code class="sig-name descname">SCHEMAV_ATTRUNKNOWN</code><em class="property"> = 1820</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_ATTRUNKNOWN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_ATTRUNKNOWN">
+<span class="sig-name descname"><span class="pre">SCHEMAV_ATTRUNKNOWN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1820</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_ATTRUNKNOWN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CONSTRUCT">
-<code class="sig-name descname">SCHEMAV_CONSTRUCT</code><em class="property"> = 1817</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CONSTRUCT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CONSTRUCT">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CONSTRUCT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1817</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CONSTRUCT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_1">
-<code class="sig-name descname">SCHEMAV_CVC_ATTRIBUTE_1</code><em class="property"> = 1861</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ATTRIBUTE_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1861</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_2">
-<code class="sig-name descname">SCHEMAV_CVC_ATTRIBUTE_2</code><em class="property"> = 1862</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ATTRIBUTE_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1862</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_3">
-<code class="sig-name descname">SCHEMAV_CVC_ATTRIBUTE_3</code><em class="property"> = 1863</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_3">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ATTRIBUTE_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1863</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_4">
-<code class="sig-name descname">SCHEMAV_CVC_ATTRIBUTE_4</code><em class="property"> = 1864</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_4" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_4">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ATTRIBUTE_4</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1864</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_4" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_AU">
-<code class="sig-name descname">SCHEMAV_CVC_AU</code><em class="property"> = 1874</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_AU" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_AU">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_AU</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1874</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_AU" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_1">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_1</code><em class="property"> = 1873</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1873</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_1">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_2_1</code><em class="property"> = 1841</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1841</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_2">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_2_2</code><em class="property"> = 1842</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1842</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_3">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_2_3</code><em class="property"> = 1843</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_3">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_2_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1843</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_4">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_2_4</code><em class="property"> = 1844</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_4" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_4">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_2_4</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1844</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_4" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_1">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_3_1</code><em class="property"> = 1865</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_3_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1865</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_1">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_3_2_1</code><em class="property"> = 1866</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_3_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1866</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_2">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_3_2_2</code><em class="property"> = 1867</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_3_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1867</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_4">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_4</code><em class="property"> = 1868</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_4" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_4">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_4</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1868</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_4" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_1">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_5_1</code><em class="property"> = 1869</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_5_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1869</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_2">
-<code class="sig-name descname">SCHEMAV_CVC_COMPLEX_TYPE_5_2</code><em class="property"> = 1870</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_COMPLEX_TYPE_5_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1870</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_1">
-<code class="sig-name descname">SCHEMAV_CVC_DATATYPE_VALID_1_2_1</code><em class="property"> = 1824</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_DATATYPE_VALID_1_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1824</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_2">
-<code class="sig-name descname">SCHEMAV_CVC_DATATYPE_VALID_1_2_2</code><em class="property"> = 1825</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_DATATYPE_VALID_1_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1825</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_3">
-<code class="sig-name descname">SCHEMAV_CVC_DATATYPE_VALID_1_2_3</code><em class="property"> = 1826</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_3">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_DATATYPE_VALID_1_2_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1826</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_1">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_1</code><em class="property"> = 1845</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1845</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_2">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_2</code><em class="property"> = 1846</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1846</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_1">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_3_1</code><em class="property"> = 1847</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_3_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1847</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_1">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_3_2_1</code><em class="property"> = 1848</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_3_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1848</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_2">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_3_2_2</code><em class="property"> = 1849</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_3_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1849</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_1">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_4_1</code><em class="property"> = 1850</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_4_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1850</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_2">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_4_2</code><em class="property"> = 1851</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_4_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1851</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_3">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_4_3</code><em class="property"> = 1852</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_3">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_4_3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1852</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_1">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_5_1_1</code><em class="property"> = 1853</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_5_1_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1853</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_2">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_5_1_2</code><em class="property"> = 1854</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_5_1_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1854</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_1">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_5_2_1</code><em class="property"> = 1855</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_5_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1855</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_1">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_5_2_2_1</code><em class="property"> = 1856</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_5_2_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1856</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_1">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_5_2_2_2_1</code><em class="property"> = 1857</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_5_2_2_2_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1857</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_2">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_5_2_2_2_2</code><em class="property"> = 1858</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_5_2_2_2_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1858</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_6">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_6</code><em class="property"> = 1859</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_6" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_6">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_6</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1859</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_6" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_7">
-<code class="sig-name descname">SCHEMAV_CVC_ELT_7</code><em class="property"> = 1860</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_7" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_7">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ELT_7</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1860</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_7" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ENUMERATION_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_ENUMERATION_VALID</code><em class="property"> = 1840</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ENUMERATION_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_ENUMERATION_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_ENUMERATION_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1840</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_ENUMERATION_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_FACET_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_FACET_VALID</code><em class="property"> = 1829</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_FACET_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_FACET_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_FACET_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1829</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_FACET_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_FRACTIONDIGITS_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_FRACTIONDIGITS_VALID</code><em class="property"> = 1838</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_FRACTIONDIGITS_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_FRACTIONDIGITS_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_FRACTIONDIGITS_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1838</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_FRACTIONDIGITS_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_IDC">
-<code class="sig-name descname">SCHEMAV_CVC_IDC</code><em class="property"> = 1877</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_IDC" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_IDC">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_IDC</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1877</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_IDC" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_LENGTH_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_LENGTH_VALID</code><em class="property"> = 1830</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_LENGTH_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_LENGTH_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_LENGTH_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1830</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_LENGTH_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXEXCLUSIVE_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_MAXEXCLUSIVE_VALID</code><em class="property"> = 1836</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXEXCLUSIVE_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXEXCLUSIVE_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_MAXEXCLUSIVE_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1836</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXEXCLUSIVE_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXINCLUSIVE_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_MAXINCLUSIVE_VALID</code><em class="property"> = 1834</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXINCLUSIVE_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXINCLUSIVE_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_MAXINCLUSIVE_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1834</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXINCLUSIVE_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXLENGTH_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_MAXLENGTH_VALID</code><em class="property"> = 1832</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXLENGTH_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXLENGTH_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_MAXLENGTH_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1832</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXLENGTH_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MINEXCLUSIVE_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_MINEXCLUSIVE_VALID</code><em class="property"> = 1835</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MINEXCLUSIVE_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MINEXCLUSIVE_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_MINEXCLUSIVE_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1835</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MINEXCLUSIVE_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MININCLUSIVE_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_MININCLUSIVE_VALID</code><em class="property"> = 1833</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MININCLUSIVE_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MININCLUSIVE_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_MININCLUSIVE_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1833</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MININCLUSIVE_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MINLENGTH_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_MINLENGTH_VALID</code><em class="property"> = 1831</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MINLENGTH_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_MINLENGTH_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_MINLENGTH_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1831</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_MINLENGTH_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_PATTERN_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_PATTERN_VALID</code><em class="property"> = 1839</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_PATTERN_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_PATTERN_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_PATTERN_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1839</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_PATTERN_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_TOTALDIGITS_VALID">
-<code class="sig-name descname">SCHEMAV_CVC_TOTALDIGITS_VALID</code><em class="property"> = 1837</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_TOTALDIGITS_VALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_TOTALDIGITS_VALID">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_TOTALDIGITS_VALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1837</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_TOTALDIGITS_VALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_1">
-<code class="sig-name descname">SCHEMAV_CVC_TYPE_1</code><em class="property"> = 1875</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_TYPE_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1875</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_2">
-<code class="sig-name descname">SCHEMAV_CVC_TYPE_2</code><em class="property"> = 1876</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_TYPE_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1876</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_1">
-<code class="sig-name descname">SCHEMAV_CVC_TYPE_3_1_1</code><em class="property"> = 1827</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_1">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_TYPE_3_1_1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1827</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_1" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_2">
-<code class="sig-name descname">SCHEMAV_CVC_TYPE_3_1_2</code><em class="property"> = 1828</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_2">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_TYPE_3_1_2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1828</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_2" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_CVC_WILDCARD">
-<code class="sig-name descname">SCHEMAV_CVC_WILDCARD</code><em class="property"> = 1878</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_WILDCARD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_CVC_WILDCARD">
+<span class="sig-name descname"><span class="pre">SCHEMAV_CVC_WILDCARD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1878</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_CVC_WILDCARD" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_DOCUMENT_ELEMENT_MISSING">
-<code class="sig-name descname">SCHEMAV_DOCUMENT_ELEMENT_MISSING</code><em class="property"> = 1872</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_DOCUMENT_ELEMENT_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_DOCUMENT_ELEMENT_MISSING">
+<span class="sig-name descname"><span class="pre">SCHEMAV_DOCUMENT_ELEMENT_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1872</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_DOCUMENT_ELEMENT_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_ELEMCONT">
-<code class="sig-name descname">SCHEMAV_ELEMCONT</code><em class="property"> = 1810</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_ELEMCONT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_ELEMCONT">
+<span class="sig-name descname"><span class="pre">SCHEMAV_ELEMCONT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1810</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_ELEMCONT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_ELEMENT_CONTENT">
-<code class="sig-name descname">SCHEMAV_ELEMENT_CONTENT</code><em class="property"> = 1871</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_ELEMENT_CONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_ELEMENT_CONTENT">
+<span class="sig-name descname"><span class="pre">SCHEMAV_ELEMENT_CONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1871</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_ELEMENT_CONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_EXTRACONTENT">
-<code class="sig-name descname">SCHEMAV_EXTRACONTENT</code><em class="property"> = 1813</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_EXTRACONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_EXTRACONTENT">
+<span class="sig-name descname"><span class="pre">SCHEMAV_EXTRACONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1813</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_EXTRACONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_FACET">
-<code class="sig-name descname">SCHEMAV_FACET</code><em class="property"> = 1823</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_FACET" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_FACET">
+<span class="sig-name descname"><span class="pre">SCHEMAV_FACET</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1823</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_FACET" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_HAVEDEFAULT">
-<code class="sig-name descname">SCHEMAV_HAVEDEFAULT</code><em class="property"> = 1811</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_HAVEDEFAULT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_HAVEDEFAULT">
+<span class="sig-name descname"><span class="pre">SCHEMAV_HAVEDEFAULT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1811</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_HAVEDEFAULT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_INTERNAL">
-<code class="sig-name descname">SCHEMAV_INTERNAL</code><em class="property"> = 1818</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_INTERNAL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_INTERNAL">
+<span class="sig-name descname"><span class="pre">SCHEMAV_INTERNAL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1818</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_INTERNAL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_INVALIDATTR">
-<code class="sig-name descname">SCHEMAV_INVALIDATTR</code><em class="property"> = 1814</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_INVALIDATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_INVALIDATTR">
+<span class="sig-name descname"><span class="pre">SCHEMAV_INVALIDATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1814</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_INVALIDATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_INVALIDELEM">
-<code class="sig-name descname">SCHEMAV_INVALIDELEM</code><em class="property"> = 1815</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_INVALIDELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_INVALIDELEM">
+<span class="sig-name descname"><span class="pre">SCHEMAV_INVALIDELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1815</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_INVALIDELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_ISABSTRACT">
-<code class="sig-name descname">SCHEMAV_ISABSTRACT</code><em class="property"> = 1808</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_ISABSTRACT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_ISABSTRACT">
+<span class="sig-name descname"><span class="pre">SCHEMAV_ISABSTRACT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1808</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_ISABSTRACT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_MISC">
-<code class="sig-name descname">SCHEMAV_MISC</code><em class="property"> = 1879</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_MISC" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_MISC">
+<span class="sig-name descname"><span class="pre">SCHEMAV_MISC</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1879</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_MISC" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_MISSING">
-<code class="sig-name descname">SCHEMAV_MISSING</code><em class="property"> = 1804</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_MISSING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_MISSING">
+<span class="sig-name descname"><span class="pre">SCHEMAV_MISSING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1804</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_MISSING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_NOROLLBACK">
-<code class="sig-name descname">SCHEMAV_NOROLLBACK</code><em class="property"> = 1807</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOROLLBACK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_NOROLLBACK">
+<span class="sig-name descname"><span class="pre">SCHEMAV_NOROLLBACK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1807</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOROLLBACK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_NOROOT">
-<code class="sig-name descname">SCHEMAV_NOROOT</code><em class="property"> = 1801</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOROOT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_NOROOT">
+<span class="sig-name descname"><span class="pre">SCHEMAV_NOROOT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1801</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOROOT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_NOTDETERMINIST">
-<code class="sig-name descname">SCHEMAV_NOTDETERMINIST</code><em class="property"> = 1816</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTDETERMINIST" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_NOTDETERMINIST">
+<span class="sig-name descname"><span class="pre">SCHEMAV_NOTDETERMINIST</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1816</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTDETERMINIST" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_NOTEMPTY">
-<code class="sig-name descname">SCHEMAV_NOTEMPTY</code><em class="property"> = 1809</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTEMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_NOTEMPTY">
+<span class="sig-name descname"><span class="pre">SCHEMAV_NOTEMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1809</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTEMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_NOTNILLABLE">
-<code class="sig-name descname">SCHEMAV_NOTNILLABLE</code><em class="property"> = 1812</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTNILLABLE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_NOTNILLABLE">
+<span class="sig-name descname"><span class="pre">SCHEMAV_NOTNILLABLE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1812</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTNILLABLE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_NOTSIMPLE">
-<code class="sig-name descname">SCHEMAV_NOTSIMPLE</code><em class="property"> = 1819</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTSIMPLE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_NOTSIMPLE">
+<span class="sig-name descname"><span class="pre">SCHEMAV_NOTSIMPLE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1819</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTSIMPLE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_NOTTOPLEVEL">
-<code class="sig-name descname">SCHEMAV_NOTTOPLEVEL</code><em class="property"> = 1803</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTTOPLEVEL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_NOTTOPLEVEL">
+<span class="sig-name descname"><span class="pre">SCHEMAV_NOTTOPLEVEL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1803</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTTOPLEVEL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_NOTYPE">
-<code class="sig-name descname">SCHEMAV_NOTYPE</code><em class="property"> = 1806</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_NOTYPE">
+<span class="sig-name descname"><span class="pre">SCHEMAV_NOTYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1806</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_NOTYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_UNDECLAREDELEM">
-<code class="sig-name descname">SCHEMAV_UNDECLAREDELEM</code><em class="property"> = 1802</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_UNDECLAREDELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_UNDECLAREDELEM">
+<span class="sig-name descname"><span class="pre">SCHEMAV_UNDECLAREDELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1802</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_UNDECLAREDELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_VALUE">
-<code class="sig-name descname">SCHEMAV_VALUE</code><em class="property"> = 1822</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_VALUE">
+<span class="sig-name descname"><span class="pre">SCHEMAV_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1822</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.SCHEMAV_WRONGELEM">
-<code class="sig-name descname">SCHEMAV_WRONGELEM</code><em class="property"> = 1805</em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_WRONGELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.SCHEMAV_WRONGELEM">
+<span class="sig-name descname"><span class="pre">SCHEMAV_WRONGELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1805</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.SCHEMAV_WRONGELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.TREE_INVALID_DEC">
-<code class="sig-name descname">TREE_INVALID_DEC</code><em class="property"> = 1301</em><a class="headerlink" href="#lxml.etree.ErrorTypes.TREE_INVALID_DEC" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.TREE_INVALID_DEC">
+<span class="sig-name descname"><span class="pre">TREE_INVALID_DEC</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1301</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.TREE_INVALID_DEC" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.TREE_INVALID_HEX">
-<code class="sig-name descname">TREE_INVALID_HEX</code><em class="property"> = 1300</em><a class="headerlink" href="#lxml.etree.ErrorTypes.TREE_INVALID_HEX" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.TREE_INVALID_HEX">
+<span class="sig-name descname"><span class="pre">TREE_INVALID_HEX</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1300</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.TREE_INVALID_HEX" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.TREE_NOT_UTF8">
-<code class="sig-name descname">TREE_NOT_UTF8</code><em class="property"> = 1303</em><a class="headerlink" href="#lxml.etree.ErrorTypes.TREE_NOT_UTF8" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.TREE_NOT_UTF8">
+<span class="sig-name descname"><span class="pre">TREE_NOT_UTF8</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1303</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.TREE_NOT_UTF8" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.TREE_UNTERMINATED_ENTITY">
-<code class="sig-name descname">TREE_UNTERMINATED_ENTITY</code><em class="property"> = 1302</em><a class="headerlink" href="#lxml.etree.ErrorTypes.TREE_UNTERMINATED_ENTITY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.TREE_UNTERMINATED_ENTITY">
+<span class="sig-name descname"><span class="pre">TREE_UNTERMINATED_ENTITY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1302</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.TREE_UNTERMINATED_ENTITY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.WAR_CATALOG_PI">
-<code class="sig-name descname">WAR_CATALOG_PI</code><em class="property"> = 93</em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_CATALOG_PI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.WAR_CATALOG_PI">
+<span class="sig-name descname"><span class="pre">WAR_CATALOG_PI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">93</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_CATALOG_PI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.WAR_ENTITY_REDEFINED">
-<code class="sig-name descname">WAR_ENTITY_REDEFINED</code><em class="property"> = 107</em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_ENTITY_REDEFINED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.WAR_ENTITY_REDEFINED">
+<span class="sig-name descname"><span class="pre">WAR_ENTITY_REDEFINED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">107</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_ENTITY_REDEFINED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.WAR_LANG_VALUE">
-<code class="sig-name descname">WAR_LANG_VALUE</code><em class="property"> = 98</em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_LANG_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.WAR_LANG_VALUE">
+<span class="sig-name descname"><span class="pre">WAR_LANG_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">98</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_LANG_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.WAR_NS_COLUMN">
-<code class="sig-name descname">WAR_NS_COLUMN</code><em class="property"> = 106</em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_NS_COLUMN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.WAR_NS_COLUMN">
+<span class="sig-name descname"><span class="pre">WAR_NS_COLUMN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">106</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_NS_COLUMN" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.WAR_NS_URI">
-<code class="sig-name descname">WAR_NS_URI</code><em class="property"> = 99</em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_NS_URI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.WAR_NS_URI">
+<span class="sig-name descname"><span class="pre">WAR_NS_URI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">99</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_NS_URI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.WAR_NS_URI_RELATIVE">
-<code class="sig-name descname">WAR_NS_URI_RELATIVE</code><em class="property"> = 100</em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_NS_URI_RELATIVE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.WAR_NS_URI_RELATIVE">
+<span class="sig-name descname"><span class="pre">WAR_NS_URI_RELATIVE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">100</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_NS_URI_RELATIVE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.WAR_SPACE_VALUE">
-<code class="sig-name descname">WAR_SPACE_VALUE</code><em class="property"> = 102</em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_SPACE_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.WAR_SPACE_VALUE">
+<span class="sig-name descname"><span class="pre">WAR_SPACE_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">102</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_SPACE_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.WAR_UNDECLARED_ENTITY">
-<code class="sig-name descname">WAR_UNDECLARED_ENTITY</code><em class="property"> = 27</em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_UNDECLARED_ENTITY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.WAR_UNDECLARED_ENTITY">
+<span class="sig-name descname"><span class="pre">WAR_UNDECLARED_ENTITY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">27</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_UNDECLARED_ENTITY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.WAR_UNKNOWN_VERSION">
-<code class="sig-name descname">WAR_UNKNOWN_VERSION</code><em class="property"> = 97</em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_UNKNOWN_VERSION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.WAR_UNKNOWN_VERSION">
+<span class="sig-name descname"><span class="pre">WAR_UNKNOWN_VERSION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">97</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.WAR_UNKNOWN_VERSION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_BUILD_FAILED">
-<code class="sig-name descname">XINCLUDE_BUILD_FAILED</code><em class="property"> = 1609</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_BUILD_FAILED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_BUILD_FAILED">
+<span class="sig-name descname"><span class="pre">XINCLUDE_BUILD_FAILED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1609</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_BUILD_FAILED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_DEPRECATED_NS">
-<code class="sig-name descname">XINCLUDE_DEPRECATED_NS</code><em class="property"> = 1617</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_DEPRECATED_NS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_DEPRECATED_NS">
+<span class="sig-name descname"><span class="pre">XINCLUDE_DEPRECATED_NS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1617</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_DEPRECATED_NS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_ENTITY_DEF_MISMATCH">
-<code class="sig-name descname">XINCLUDE_ENTITY_DEF_MISMATCH</code><em class="property"> = 1602</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_ENTITY_DEF_MISMATCH" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_ENTITY_DEF_MISMATCH">
+<span class="sig-name descname"><span class="pre">XINCLUDE_ENTITY_DEF_MISMATCH</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1602</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_ENTITY_DEF_MISMATCH" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_FALLBACKS_IN_INCLUDE">
-<code class="sig-name descname">XINCLUDE_FALLBACKS_IN_INCLUDE</code><em class="property"> = 1615</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_FALLBACKS_IN_INCLUDE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_FALLBACKS_IN_INCLUDE">
+<span class="sig-name descname"><span class="pre">XINCLUDE_FALLBACKS_IN_INCLUDE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1615</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_FALLBACKS_IN_INCLUDE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_FALLBACK_NOT_IN_INCLUDE">
-<code class="sig-name descname">XINCLUDE_FALLBACK_NOT_IN_INCLUDE</code><em class="property"> = 1616</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_FALLBACK_NOT_IN_INCLUDE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_FALLBACK_NOT_IN_INCLUDE">
+<span class="sig-name descname"><span class="pre">XINCLUDE_FALLBACK_NOT_IN_INCLUDE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1616</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_FALLBACK_NOT_IN_INCLUDE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_FRAGMENT_ID">
-<code class="sig-name descname">XINCLUDE_FRAGMENT_ID</code><em class="property"> = 1618</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_FRAGMENT_ID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_FRAGMENT_ID">
+<span class="sig-name descname"><span class="pre">XINCLUDE_FRAGMENT_ID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1618</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_FRAGMENT_ID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_HREF_URI">
-<code class="sig-name descname">XINCLUDE_HREF_URI</code><em class="property"> = 1605</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_HREF_URI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_HREF_URI">
+<span class="sig-name descname"><span class="pre">XINCLUDE_HREF_URI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1605</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_HREF_URI" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_INCLUDE_IN_INCLUDE">
-<code class="sig-name descname">XINCLUDE_INCLUDE_IN_INCLUDE</code><em class="property"> = 1614</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_INCLUDE_IN_INCLUDE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_INCLUDE_IN_INCLUDE">
+<span class="sig-name descname"><span class="pre">XINCLUDE_INCLUDE_IN_INCLUDE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1614</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_INCLUDE_IN_INCLUDE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_INVALID_CHAR">
-<code class="sig-name descname">XINCLUDE_INVALID_CHAR</code><em class="property"> = 1608</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_INVALID_CHAR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_INVALID_CHAR">
+<span class="sig-name descname"><span class="pre">XINCLUDE_INVALID_CHAR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1608</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_INVALID_CHAR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_MULTIPLE_ROOT">
-<code class="sig-name descname">XINCLUDE_MULTIPLE_ROOT</code><em class="property"> = 1611</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_MULTIPLE_ROOT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_MULTIPLE_ROOT">
+<span class="sig-name descname"><span class="pre">XINCLUDE_MULTIPLE_ROOT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1611</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_MULTIPLE_ROOT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_NO_FALLBACK">
-<code class="sig-name descname">XINCLUDE_NO_FALLBACK</code><em class="property"> = 1604</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_NO_FALLBACK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_NO_FALLBACK">
+<span class="sig-name descname"><span class="pre">XINCLUDE_NO_FALLBACK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1604</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_NO_FALLBACK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_NO_HREF">
-<code class="sig-name descname">XINCLUDE_NO_HREF</code><em class="property"> = 1603</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_NO_HREF" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_NO_HREF">
+<span class="sig-name descname"><span class="pre">XINCLUDE_NO_HREF</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1603</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_NO_HREF" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_PARSE_VALUE">
-<code class="sig-name descname">XINCLUDE_PARSE_VALUE</code><em class="property"> = 1601</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_PARSE_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_PARSE_VALUE">
+<span class="sig-name descname"><span class="pre">XINCLUDE_PARSE_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1601</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_PARSE_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_RECURSION">
-<code class="sig-name descname">XINCLUDE_RECURSION</code><em class="property"> = 1600</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_RECURSION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_RECURSION">
+<span class="sig-name descname"><span class="pre">XINCLUDE_RECURSION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1600</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_RECURSION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_TEXT_DOCUMENT">
-<code class="sig-name descname">XINCLUDE_TEXT_DOCUMENT</code><em class="property"> = 1607</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_TEXT_DOCUMENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_TEXT_DOCUMENT">
+<span class="sig-name descname"><span class="pre">XINCLUDE_TEXT_DOCUMENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1607</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_TEXT_DOCUMENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_TEXT_FRAGMENT">
-<code class="sig-name descname">XINCLUDE_TEXT_FRAGMENT</code><em class="property"> = 1606</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_TEXT_FRAGMENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_TEXT_FRAGMENT">
+<span class="sig-name descname"><span class="pre">XINCLUDE_TEXT_FRAGMENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1606</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_TEXT_FRAGMENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_UNKNOWN_ENCODING">
-<code class="sig-name descname">XINCLUDE_UNKNOWN_ENCODING</code><em class="property"> = 1610</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_UNKNOWN_ENCODING" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_UNKNOWN_ENCODING">
+<span class="sig-name descname"><span class="pre">XINCLUDE_UNKNOWN_ENCODING</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1610</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_UNKNOWN_ENCODING" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_XPTR_FAILED">
-<code class="sig-name descname">XINCLUDE_XPTR_FAILED</code><em class="property"> = 1612</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_XPTR_FAILED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_XPTR_FAILED">
+<span class="sig-name descname"><span class="pre">XINCLUDE_XPTR_FAILED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1612</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_XPTR_FAILED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XINCLUDE_XPTR_RESULT">
-<code class="sig-name descname">XINCLUDE_XPTR_RESULT</code><em class="property"> = 1613</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_XPTR_RESULT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XINCLUDE_XPTR_RESULT">
+<span class="sig-name descname"><span class="pre">XINCLUDE_XPTR_RESULT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1613</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XINCLUDE_XPTR_RESULT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_ENCODING_ERROR">
-<code class="sig-name descname">XPATH_ENCODING_ERROR</code><em class="property"> = 1220</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_ENCODING_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_ENCODING_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_ENCODING_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1220</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_ENCODING_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_EXPRESSION_OK">
-<code class="sig-name descname">XPATH_EXPRESSION_OK</code><em class="property"> = 1200</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_EXPRESSION_OK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_EXPRESSION_OK">
+<span class="sig-name descname"><span class="pre">XPATH_EXPRESSION_OK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1200</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_EXPRESSION_OK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_EXPR_ERROR">
-<code class="sig-name descname">XPATH_EXPR_ERROR</code><em class="property"> = 1207</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_EXPR_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_EXPR_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_EXPR_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1207</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_EXPR_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_INVALID_ARITY">
-<code class="sig-name descname">XPATH_INVALID_ARITY</code><em class="property"> = 1212</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_ARITY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_INVALID_ARITY">
+<span class="sig-name descname"><span class="pre">XPATH_INVALID_ARITY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1212</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_ARITY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_INVALID_CHAR_ERROR">
-<code class="sig-name descname">XPATH_INVALID_CHAR_ERROR</code><em class="property"> = 1221</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_CHAR_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_INVALID_CHAR_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_INVALID_CHAR_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1221</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_CHAR_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_POSITION">
-<code class="sig-name descname">XPATH_INVALID_CTXT_POSITION</code><em class="property"> = 1214</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_POSITION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_POSITION">
+<span class="sig-name descname"><span class="pre">XPATH_INVALID_CTXT_POSITION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1214</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_POSITION" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_SIZE">
-<code class="sig-name descname">XPATH_INVALID_CTXT_SIZE</code><em class="property"> = 1213</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_SIZE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_SIZE">
+<span class="sig-name descname"><span class="pre">XPATH_INVALID_CTXT_SIZE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1213</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_SIZE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_INVALID_OPERAND">
-<code class="sig-name descname">XPATH_INVALID_OPERAND</code><em class="property"> = 1210</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_OPERAND" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_INVALID_OPERAND">
+<span class="sig-name descname"><span class="pre">XPATH_INVALID_OPERAND</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1210</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_OPERAND" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_INVALID_PREDICATE_ERROR">
-<code class="sig-name descname">XPATH_INVALID_PREDICATE_ERROR</code><em class="property"> = 1206</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_PREDICATE_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_INVALID_PREDICATE_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_INVALID_PREDICATE_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1206</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_PREDICATE_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_INVALID_TYPE">
-<code class="sig-name descname">XPATH_INVALID_TYPE</code><em class="property"> = 1211</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_INVALID_TYPE">
+<span class="sig-name descname"><span class="pre">XPATH_INVALID_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1211</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_INVALID_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_MEMORY_ERROR">
-<code class="sig-name descname">XPATH_MEMORY_ERROR</code><em class="property"> = 1215</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_MEMORY_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_MEMORY_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_MEMORY_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1215</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_MEMORY_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_NUMBER_ERROR">
-<code class="sig-name descname">XPATH_NUMBER_ERROR</code><em class="property"> = 1201</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_NUMBER_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_NUMBER_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_NUMBER_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1201</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_NUMBER_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_START_LITERAL_ERROR">
-<code class="sig-name descname">XPATH_START_LITERAL_ERROR</code><em class="property"> = 1203</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_START_LITERAL_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_START_LITERAL_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_START_LITERAL_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1203</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_START_LITERAL_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_UNCLOSED_ERROR">
-<code class="sig-name descname">XPATH_UNCLOSED_ERROR</code><em class="property"> = 1208</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_UNCLOSED_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_UNCLOSED_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_UNCLOSED_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1208</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_UNCLOSED_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_UNDEF_PREFIX_ERROR">
-<code class="sig-name descname">XPATH_UNDEF_PREFIX_ERROR</code><em class="property"> = 1219</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_UNDEF_PREFIX_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_UNDEF_PREFIX_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_UNDEF_PREFIX_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1219</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_UNDEF_PREFIX_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_UNDEF_VARIABLE_ERROR">
-<code class="sig-name descname">XPATH_UNDEF_VARIABLE_ERROR</code><em class="property"> = 1205</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_UNDEF_VARIABLE_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_UNDEF_VARIABLE_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_UNDEF_VARIABLE_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1205</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_UNDEF_VARIABLE_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_UNFINISHED_LITERAL_ERROR">
-<code class="sig-name descname">XPATH_UNFINISHED_LITERAL_ERROR</code><em class="property"> = 1202</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_UNFINISHED_LITERAL_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_UNFINISHED_LITERAL_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_UNFINISHED_LITERAL_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1202</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_UNFINISHED_LITERAL_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_UNKNOWN_FUNC_ERROR">
-<code class="sig-name descname">XPATH_UNKNOWN_FUNC_ERROR</code><em class="property"> = 1209</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_UNKNOWN_FUNC_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_UNKNOWN_FUNC_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_UNKNOWN_FUNC_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1209</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_UNKNOWN_FUNC_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPATH_VARIABLE_REF_ERROR">
-<code class="sig-name descname">XPATH_VARIABLE_REF_ERROR</code><em class="property"> = 1204</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_VARIABLE_REF_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPATH_VARIABLE_REF_ERROR">
+<span class="sig-name descname"><span class="pre">XPATH_VARIABLE_REF_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1204</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPATH_VARIABLE_REF_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPTR_CHILDSEQ_START">
-<code class="sig-name descname">XPTR_CHILDSEQ_START</code><em class="property"> = 1901</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_CHILDSEQ_START" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPTR_CHILDSEQ_START">
+<span class="sig-name descname"><span class="pre">XPTR_CHILDSEQ_START</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1901</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_CHILDSEQ_START" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPTR_EVAL_FAILED">
-<code class="sig-name descname">XPTR_EVAL_FAILED</code><em class="property"> = 1902</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_EVAL_FAILED" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPTR_EVAL_FAILED">
+<span class="sig-name descname"><span class="pre">XPTR_EVAL_FAILED</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1902</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_EVAL_FAILED" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPTR_EXTRA_OBJECTS">
-<code class="sig-name descname">XPTR_EXTRA_OBJECTS</code><em class="property"> = 1903</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_EXTRA_OBJECTS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPTR_EXTRA_OBJECTS">
+<span class="sig-name descname"><span class="pre">XPTR_EXTRA_OBJECTS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1903</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_EXTRA_OBJECTS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPTR_RESOURCE_ERROR">
-<code class="sig-name descname">XPTR_RESOURCE_ERROR</code><em class="property"> = 1217</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_RESOURCE_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPTR_RESOURCE_ERROR">
+<span class="sig-name descname"><span class="pre">XPTR_RESOURCE_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1217</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_RESOURCE_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPTR_SUB_RESOURCE_ERROR">
-<code class="sig-name descname">XPTR_SUB_RESOURCE_ERROR</code><em class="property"> = 1218</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_SUB_RESOURCE_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPTR_SUB_RESOURCE_ERROR">
+<span class="sig-name descname"><span class="pre">XPTR_SUB_RESOURCE_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1218</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_SUB_RESOURCE_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPTR_SYNTAX_ERROR">
-<code class="sig-name descname">XPTR_SYNTAX_ERROR</code><em class="property"> = 1216</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_SYNTAX_ERROR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPTR_SYNTAX_ERROR">
+<span class="sig-name descname"><span class="pre">XPTR_SYNTAX_ERROR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1216</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_SYNTAX_ERROR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes.XPTR_UNKNOWN_SCHEME">
-<code class="sig-name descname">XPTR_UNKNOWN_SCHEME</code><em class="property"> = 1900</em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_UNKNOWN_SCHEME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes.XPTR_UNKNOWN_SCHEME">
+<span class="sig-name descname"><span class="pre">XPTR_UNKNOWN_SCHEME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1900</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes.XPTR_UNKNOWN_SCHEME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.ErrorTypes._names">
-<code class="sig-name descname">_names</code><em class="property"> = {0: 'ERR_OK', 1: 'ERR_INTERNAL_ERROR', 2: 'ERR_NO_MEMORY', 3: 'ERR_DOCUMENT_START', 4: 'ERR_DOCUMENT_EMPTY', 5: 'ERR_DOCUMENT_END', 6: 'ERR_INVALID_HEX_CHARREF', 7: 'ERR_INVALID_DEC_CHARREF', 8: 'ERR_INVALID_CHARREF', 9: 'ERR_INVALID_CHAR', 10: 'ERR_CHARREF_AT_EOF', 11: 'ERR_CHARREF_IN_PROLOG', 12: 'ERR_CHARREF_IN_EPILOG', 13: 'ERR_CHARREF_IN_DTD', 14: 'ERR_ENTITYREF_AT_EOF', 15: 'ERR_ENTITYREF_IN_PROLOG', 16: 'ERR_ENTITYREF_IN_EPILOG', 17: 'ERR_ENTITYREF_IN_DTD', 18: 'ERR_PEREF_AT_EOF', 19: 'ERR_PEREF_IN_PROLOG', 20: 'ERR_PEREF_IN_EPILOG', 21: 'ERR_PEREF_IN_INT_SUBSET', 22: 'ERR_ENTITYREF_NO_NAME', 23: 'ERR_ENTITYREF_SEMICOL_MISSING', 24: 'ERR_PEREF_NO_NAME', 25: 'ERR_PEREF_SEMICOL_MISSING', 26: 'ERR_UNDECLARED_ENTITY', 27: 'WAR_UNDECLARED_ENTITY', 28: 'ERR_UNPARSED_ENTITY', 29: 'ERR_ENTITY_IS_EXTERNAL', 30: 'ERR_ENTITY_IS_PARAMETER', 31: 'ERR_UNKNOWN_ENCODING', 32: 'ERR_UNSUPPORTED_ENCODING', 33: 'ERR_STRING_NOT_STARTED', 34: 'ERR_STRING_NOT_CLOSED', 35: 'ERR_NS_DECL_ERROR', 36: 'ERR_ENTITY_NOT_STARTED', 37: 'ERR_ENTITY_NOT_FINISHED', 38: 'ERR_LT_IN_ATTRIBUTE', 39: 'ERR_ATTRIBUTE_NOT_STARTED', 40: 'ERR_ATTRIBUTE_NOT_FINISHED', 41: 'ERR_ATTRIBUTE_WITHOUT_VALUE', 42: 'ERR_ATTRIBUTE_REDEFINED', 43: 'ERR_LITERAL_NOT_STARTED', 44: 'ERR_LITERAL_NOT_FINISHED', 45: 'ERR_COMMENT_NOT_FINISHED', 46: 'ERR_PI_NOT_STARTED', 47: 'ERR_PI_NOT_FINISHED', 48: 'ERR_NOTATION_NOT_STARTED', 49: 'ERR_NOTATION_NOT_FINISHED', 50: 'ERR_ATTLIST_NOT_STARTED', 51: 'ERR_ATTLIST_NOT_FINISHED', 52: 'ERR_MIXED_NOT_STARTED', 53: 'ERR_MIXED_NOT_FINISHED', 54: 'ERR_ELEMCONTENT_NOT_STARTED', 55: 'ERR_ELEMCONTENT_NOT_FINISHED', 56: 'ERR_XMLDECL_NOT_STARTED', 57: 'ERR_XMLDECL_NOT_FINISHED', 58: 'ERR_CONDSEC_NOT_STARTED', 59: 'ERR_CONDSEC_NOT_FINISHED', 60: 'ERR_EXT_SUBSET_NOT_FINISHED', 61: 'ERR_DOCTYPE_NOT_FINISHED', 62: 'ERR_MISPLACED_CDATA_END', 63: 'ERR_CDATA_NOT_FINISHED', 64: 'ERR_RESERVED_XML_NAME', 65: 'ERR_SPACE_REQUIRED', 66: 'ERR_SEPARATOR_REQUIRED', 67: 'ERR_NMTOKEN_REQUIRED', 68: 'ERR_NAME_REQUIRED', 69: 'ERR_PCDATA_REQUIRED', 70: 'ERR_URI_REQUIRED', 71: 'ERR_PUBID_REQUIRED', 72: 'ERR_LT_REQUIRED', 73: 'ERR_GT_REQUIRED', 74: 'ERR_LTSLASH_REQUIRED', 75: 'ERR_EQUAL_REQUIRED', 76: 'ERR_TAG_NAME_MISMATCH', 77: 'ERR_TAG_NOT_FINISHED', 78: 'ERR_STANDALONE_VALUE', 79: 'ERR_ENCODING_NAME', 80: 'ERR_HYPHEN_IN_COMMENT', 81: 'ERR_INVALID_ENCODING', 82: 'ERR_EXT_ENTITY_STANDALONE', 83: 'ERR_CONDSEC_INVALID', 84: 'ERR_VALUE_REQUIRED', 85: 'ERR_NOT_WELL_BALANCED', 86: 'ERR_EXTRA_CONTENT', 87: 'ERR_ENTITY_CHAR_ERROR', 88: 'ERR_ENTITY_PE_INTERNAL', 89: 'ERR_ENTITY_LOOP', 90: 'ERR_ENTITY_BOUNDARY', 91: 'ERR_INVALID_URI', 92: 'ERR_URI_FRAGMENT', 93: 'WAR_CATALOG_PI', 94: 'ERR_NO_DTD', 95: 'ERR_CONDSEC_INVALID_KEYWORD', 96: 'ERR_VERSION_MISSING', 97: 'WAR_UNKNOWN_VERSION', 98: 'WAR_LANG_VALUE', 99: 'WAR_NS_URI', 100: 'WAR_NS_URI_RELATIVE', 101: 'ERR_MISSING_ENCODING', 102: 'WAR_SPACE_VALUE', 103: 'ERR_NOT_STANDALONE', 104: 'ERR_ENTITY_PROCESSING', 105: 'ERR_NOTATION_PROCESSING', 106: 'WAR_NS_COLUMN', 107: 'WAR_ENTITY_REDEFINED', 108: 'ERR_UNKNOWN_VERSION', 109: 'ERR_VERSION_MISMATCH', 110: 'ERR_NAME_TOO_LONG', 111: 'ERR_USER_STOP', 200: 'NS_ERR_XML_NAMESPACE', 201: 'NS_ERR_UNDEFINED_NAMESPACE', 202: 'NS_ERR_QNAME', 203: 'NS_ERR_ATTRIBUTE_REDEFINED', 204: 'NS_ERR_EMPTY', 205: 'NS_ERR_COLON', 500: 'DTD_ATTRIBUTE_DEFAULT', 501: 'DTD_ATTRIBUTE_REDEFINED', 502: 'DTD_ATTRIBUTE_VALUE', 503: 'DTD_CONTENT_ERROR', 504: 'DTD_CONTENT_MODEL', 505: 'DTD_CONTENT_NOT_DETERMINIST', 506: 'DTD_DIFFERENT_PREFIX', 507: 'DTD_ELEM_DEFAULT_NAMESPACE', 508: 'DTD_ELEM_NAMESPACE', 509: 'DTD_ELEM_REDEFINED', 510: 'DTD_EMPTY_NOTATION', 511: 'DTD_ENTITY_TYPE', 512: 'DTD_ID_FIXED', 513: 'DTD_ID_REDEFINED', 514: 'DTD_ID_SUBSET', 515: 'DTD_INVALID_CHILD', 516: 'DTD_INVALID_DEFAULT', 517: 'DTD_LOAD_ERROR', 518: 'DTD_MISSING_ATTRIBUTE', 519: 'DTD_MIXED_CORRUPT', 520: 'DTD_MULTIPLE_ID', 521: 'DTD_NO_DOC', 522: 'DTD_NO_DTD', 523: 'DTD_NO_ELEM_NAME', 524: 'DTD_NO_PREFIX', 525: 'DTD_NO_ROOT', 526: 'DTD_NOTATION_REDEFINED', 527: 'DTD_NOTATION_VALUE', 528: 'DTD_NOT_EMPTY', 529: 'DTD_NOT_PCDATA', 530: 'DTD_NOT_STANDALONE', 531: 'DTD_ROOT_NAME', 532: 'DTD_STANDALONE_WHITE_SPACE', 533: 'DTD_UNKNOWN_ATTRIBUTE', 534: 'DTD_UNKNOWN_ELEM', 535: 'DTD_UNKNOWN_ENTITY', 536: 'DTD_UNKNOWN_ID', 537: 'DTD_UNKNOWN_NOTATION', 538: 'DTD_STANDALONE_DEFAULTED', 539: 'DTD_XMLID_VALUE', 540: 'DTD_XMLID_TYPE', 541: 'DTD_DUP_TOKEN', 800: 'HTML_STRUCURE_ERROR', 801: 'HTML_UNKNOWN_TAG', 1000: 'RNGP_ANYNAME_ATTR_ANCESTOR', 1001: 'RNGP_ATTR_CONFLICT', 1002: 'RNGP_ATTRIBUTE_CHILDREN', 1003: 'RNGP_ATTRIBUTE_CONTENT', 1004: 'RNGP_ATTRIBUTE_EMPTY', 1005: 'RNGP_ATTRIBUTE_NOOP', 1006: 'RNGP_CHOICE_CONTENT', 1007: 'RNGP_CHOICE_EMPTY', 1008: 'RNGP_CREATE_FAILURE', 1009: 'RNGP_DATA_CONTENT', 1010: 'RNGP_DEF_CHOICE_AND_INTERLEAVE', 1011: 'RNGP_DEFINE_CREATE_FAILED', 1012: 'RNGP_DEFINE_EMPTY', 1013: 'RNGP_DEFINE_MISSING', 1014: 'RNGP_DEFINE_NAME_MISSING', 1015: 'RNGP_ELEM_CONTENT_EMPTY', 1016: 'RNGP_ELEM_CONTENT_ERROR', 1017: 'RNGP_ELEMENT_EMPTY', 1018: 'RNGP_ELEMENT_CONTENT', 1019: 'RNGP_ELEMENT_NAME', 1020: 'RNGP_ELEMENT_NO_CONTENT', 1021: 'RNGP_ELEM_TEXT_CONFLICT', 1022: 'RNGP_EMPTY', 1023: 'RNGP_EMPTY_CONSTRUCT', 1024: 'RNGP_EMPTY_CONTENT', 1025: 'RNGP_EMPTY_NOT_EMPTY', 1026: 'RNGP_ERROR_TYPE_LIB', 1027: 'RNGP_EXCEPT_EMPTY', 1028: 'RNGP_EXCEPT_MISSING', 1029: 'RNGP_EXCEPT_MULTIPLE', 1030: 'RNGP_EXCEPT_NO_CONTENT', 1031: 'RNGP_EXTERNALREF_EMTPY', 1032: 'RNGP_EXTERNAL_REF_FAILURE', 1033: 'RNGP_EXTERNALREF_RECURSE', 1034: 'RNGP_FORBIDDEN_ATTRIBUTE', 1035: 'RNGP_FOREIGN_ELEMENT', 1036: 'RNGP_GRAMMAR_CONTENT', 1037: 'RNGP_GRAMMAR_EMPTY', 1038: 'RNGP_GRAMMAR_MISSING', 1039: 'RNGP_GRAMMAR_NO_START', 1040: 'RNGP_GROUP_ATTR_CONFLICT', 1041: 'RNGP_HREF_ERROR', 1042: 'RNGP_INCLUDE_EMPTY', 1043: 'RNGP_INCLUDE_FAILURE', 1044: 'RNGP_INCLUDE_RECURSE', 1045: 'RNGP_INTERLEAVE_ADD', 1046: 'RNGP_INTERLEAVE_CREATE_FAILED', 1047: 'RNGP_INTERLEAVE_EMPTY', 1048: 'RNGP_INTERLEAVE_NO_CONTENT', 1049: 'RNGP_INVALID_DEFINE_NAME', 1050: 'RNGP_INVALID_URI', 1051: 'RNGP_INVALID_VALUE', 1052: 'RNGP_MISSING_HREF', 1053: 'RNGP_NAME_MISSING', 1054: 'RNGP_NEED_COMBINE', 1055: 'RNGP_NOTALLOWED_NOT_EMPTY', 1056: 'RNGP_NSNAME_ATTR_ANCESTOR', 1057: 'RNGP_NSNAME_NO_NS', 1058: 'RNGP_PARAM_FORBIDDEN', 1059: 'RNGP_PARAM_NAME_MISSING', 1060: 'RNGP_PARENTREF_CREATE_FAILED', 1061: 'RNGP_PARENTREF_NAME_INVALID', 1062: 'RNGP_PARENTREF_NO_NAME', 1063: 'RNGP_PARENTREF_NO_PARENT', 1064: 'RNGP_PARENTREF_NOT_EMPTY', 1065: 'RNGP_PARSE_ERROR', 1066: 'RNGP_PAT_ANYNAME_EXCEPT_ANYNAME', 1067: 'RNGP_PAT_ATTR_ATTR', 1068: 'RNGP_PAT_ATTR_ELEM', 1069: 'RNGP_PAT_DATA_EXCEPT_ATTR', 1070: 'RNGP_PAT_DATA_EXCEPT_ELEM', 1071: 'RNGP_PAT_DATA_EXCEPT_EMPTY', 1072: 'RNGP_PAT_DATA_EXCEPT_GROUP', 1073: 'RNGP_PAT_DATA_EXCEPT_INTERLEAVE', 1074: 'RNGP_PAT_DATA_EXCEPT_LIST', 1075: 'RNGP_PAT_DATA_EXCEPT_ONEMORE', 1076: 'RNGP_PAT_DATA_EXCEPT_REF', 1077: 'RNGP_PAT_DATA_EXCEPT_TEXT', 1078: 'RNGP_PAT_LIST_ATTR', 1079: 'RNGP_PAT_LIST_ELEM', 1080: 'RNGP_PAT_LIST_INTERLEAVE', 1081: 'RNGP_PAT_LIST_LIST', 1082: 'RNGP_PAT_LIST_REF', 1083: 'RNGP_PAT_LIST_TEXT', 1084: 'RNGP_PAT_NSNAME_EXCEPT_ANYNAME', 1085: 'RNGP_PAT_NSNAME_EXCEPT_NSNAME', 1086: 'RNGP_PAT_ONEMORE_GROUP_ATTR', 1087: 'RNGP_PAT_ONEMORE_INTERLEAVE_ATTR', 1088: 'RNGP_PAT_START_ATTR', 1089: 'RNGP_PAT_START_DATA', 1090: 'RNGP_PAT_START_EMPTY', 1091: 'RNGP_PAT_START_GROUP', 1092: 'RNGP_PAT_START_INTERLEAVE', 1093: 'RNGP_PAT_START_LIST', 1094: 'RNGP_PAT_START_ONEMORE', 1095: 'RNGP_PAT_START_TEXT', 1096: 'RNGP_PAT_START_VALUE', 1097: 'RNGP_PREFIX_UNDEFINED', 1098: 'RNGP_REF_CREATE_FAILED', 1099: 'RNGP_REF_CYCLE', 1100: 'RNGP_REF_NAME_INVALID', 1101: 'RNGP_REF_NO_DEF', 1102: 'RNGP_REF_NO_NAME', 1103: 'RNGP_REF_NOT_EMPTY', 1104: 'RNGP_START_CHOICE_AND_INTERLEAVE', 1105: 'RNGP_START_CONTENT', 1106: 'RNGP_START_EMPTY', 1107: 'RNGP_START_MISSING', 1108: 'RNGP_TEXT_EXPECTED', 1109: 'RNGP_TEXT_HAS_CHILD', 1110: 'RNGP_TYPE_MISSING', 1111: 'RNGP_TYPE_NOT_FOUND', 1112: 'RNGP_TYPE_VALUE', 1113: 'RNGP_UNKNOWN_ATTRIBUTE', 1114: 'RNGP_UNKNOWN_COMBINE', 1115: 'RNGP_UNKNOWN_CONSTRUCT', 1116: 'RNGP_UNKNOWN_TYPE_LIB', 1117: 'RNGP_URI_FRAGMENT', 1118: 'RNGP_URI_NOT_ABSOLUTE', 1119: 'RNGP_VALUE_EMPTY', 1120: 'RNGP_VALUE_NO_CONTENT', 1121: 'RNGP_XMLNS_NAME', 1122: 'RNGP_XML_NS', 1200: 'XPATH_EXPRESSION_OK', 1201: 'XPATH_NUMBER_ERROR', 1202: 'XPATH_UNFINISHED_LITERAL_ERROR', 1203: 'XPATH_START_LITERAL_ERROR', 1204: 'XPATH_VARIABLE_REF_ERROR', 1205: 'XPATH_UNDEF_VARIABLE_ERROR', 1206: 'XPATH_INVALID_PREDICATE_ERROR', 1207: 'XPATH_EXPR_ERROR', 1208: 'XPATH_UNCLOSED_ERROR', 1209: 'XPATH_UNKNOWN_FUNC_ERROR', 1210: 'XPATH_INVALID_OPERAND', 1211: 'XPATH_INVALID_TYPE', 1212: 'XPATH_INVALID_ARITY', 1213: 'XPATH_INVALID_CTXT_SIZE', 1214: 'XPATH_INVALID_CTXT_POSITION', 1215: 'XPATH_MEMORY_ERROR', 1216: 'XPTR_SYNTAX_ERROR', 1217: 'XPTR_RESOURCE_ERROR', 1218: 'XPTR_SUB_RESOURCE_ERROR', 1219: 'XPATH_UNDEF_PREFIX_ERROR', 1220: 'XPATH_ENCODING_ERROR', 1221: 'XPATH_INVALID_CHAR_ERROR', 1300: 'TREE_INVALID_HEX', 1301: 'TREE_INVALID_DEC', 1302: 'TREE_UNTERMINATED_ENTITY', 1303: 'TREE_NOT_UTF8', 1400: 'SAVE_NOT_UTF8', 1401: 'SAVE_CHAR_INVALID', 1402: 'SAVE_NO_DOCTYPE', 1403: 'SAVE_UNKNOWN_ENCODING', 1450: 'REGEXP_COMPILE_ERROR', 1500: 'IO_UNKNOWN', 1501: 'IO_EACCES', 1502: 'IO_EAGAIN', 1503: 'IO_EBADF', 1504: 'IO_EBADMSG', 1505: 'IO_EBUSY', 1506: 'IO_ECANCELED', 1507: 'IO_ECHILD', 1508: 'IO_EDEADLK', 1509: 'IO_EDOM', 1510: 'IO_EEXIST', 1511: 'IO_EFAULT', 1512: 'IO_EFBIG', 1513: 'IO_EINPROGRESS', 1514: 'IO_EINTR', 1515: 'IO_EINVAL', 1516: 'IO_EIO', 1517: 'IO_EISDIR', 1518: 'IO_EMFILE', 1519: 'IO_EMLINK', 1520: 'IO_EMSGSIZE', 1521: 'IO_ENAMETOOLONG', 1522: 'IO_ENFILE', 1523: 'IO_ENODEV', 1524: 'IO_ENOENT', 1525: 'IO_ENOEXEC', 1526: 'IO_ENOLCK', 1527: 'IO_ENOMEM', 1528: 'IO_ENOSPC', 1529: 'IO_ENOSYS', 1530: 'IO_ENOTDIR', 1531: 'IO_ENOTEMPTY', 1532: 'IO_ENOTSUP', 1533: 'IO_ENOTTY', 1534: 'IO_ENXIO', 1535: 'IO_EPERM', 1536: 'IO_EPIPE', 1537: 'IO_ERANGE', 1538: 'IO_EROFS', 1539: 'IO_ESPIPE', 1540: 'IO_ESRCH', 1541: 'IO_ETIMEDOUT', 1542: 'IO_EXDEV', 1543: 'IO_NETWORK_ATTEMPT', 1544: 'IO_ENCODER', 1545: 'IO_FLUSH', 1546: 'IO_WRITE', 1547: 'IO_NO_INPUT', 1548: 'IO_BUFFER_FULL', 1549: 'IO_LOAD_ERROR', 1550: 'IO_ENOTSOCK', 1551: 'IO_EISCONN', 1552: 'IO_ECONNREFUSED', 1553: 'IO_ENETUNREACH', 1554: 'IO_EADDRINUSE', 1555: 'IO_EALREADY', 1556: 'IO_EAFNOSUPPORT', 1600: 'XINCLUDE_RECURSION', 1601: 'XINCLUDE_PARSE_VALUE', 1602: 'XINCLUDE_ENTITY_DEF_MISMATCH', 1603: 'XINCLUDE_NO_HREF', 1604: 'XINCLUDE_NO_FALLBACK', 1605: 'XINCLUDE_HREF_URI', 1606: 'XINCLUDE_TEXT_FRAGMENT', 1607: 'XINCLUDE_TEXT_DOCUMENT', 1608: 'XINCLUDE_INVALID_CHAR', 1609: 'XINCLUDE_BUILD_FAILED', 1610: 'XINCLUDE_UNKNOWN_ENCODING', 1611: 'XINCLUDE_MULTIPLE_ROOT', 1612: 'XINCLUDE_XPTR_FAILED', 1613: 'XINCLUDE_XPTR_RESULT', 1614: 'XINCLUDE_INCLUDE_IN_INCLUDE', 1615: 'XINCLUDE_FALLBACKS_IN_INCLUDE', 1616: 'XINCLUDE_FALLBACK_NOT_IN_INCLUDE', 1617: 'XINCLUDE_DEPRECATED_NS', 1618: 'XINCLUDE_FRAGMENT_ID', 1650: 'CATALOG_MISSING_ATTR', 1651: 'CATALOG_ENTRY_BROKEN', 1652: 'CATALOG_PREFER_VALUE', 1653: 'CATALOG_NOT_CATALOG', 1654: 'CATALOG_RECURSION', 1700: 'SCHEMAP_PREFIX_UNDEFINED', 1701: 'SCHEMAP_ATTRFORMDEFAULT_VALUE', 1702: 'SCHEMAP_ATTRGRP_NONAME_NOREF', 1703: 'SCHEMAP_ATTR_NONAME_NOREF', 1704: 'SCHEMAP_COMPLEXTYPE_NONAME_NOREF', 1705: 'SCHEMAP_ELEMFORMDEFAULT_VALUE', 1706: 'SCHEMAP_ELEM_NONAME_NOREF', 1707: 'SCHEMAP_EXTENSION_NO_BASE', 1708: 'SCHEMAP_FACET_NO_VALUE', 1709: 'SCHEMAP_FAILED_BUILD_IMPORT', 1710: 'SCHEMAP_GROUP_NONAME_NOREF', 1711: 'SCHEMAP_IMPORT_NAMESPACE_NOT_URI', 1712: 'SCHEMAP_IMPORT_REDEFINE_NSNAME', 1713: 'SCHEMAP_IMPORT_SCHEMA_NOT_URI', 1714: 'SCHEMAP_INVALID_BOOLEAN', 1715: 'SCHEMAP_INVALID_ENUM', 1716: 'SCHEMAP_INVALID_FACET', 1717: 'SCHEMAP_INVALID_FACET_VALUE', 1718: 'SCHEMAP_INVALID_MAXOCCURS', 1719: 'SCHEMAP_INVALID_MINOCCURS', 1720: 'SCHEMAP_INVALID_REF_AND_SUBTYPE', 1721: 'SCHEMAP_INVALID_WHITE_SPACE', 1722: 'SCHEMAP_NOATTR_NOREF', 1723: 'SCHEMAP_NOTATION_NO_NAME', 1724: 'SCHEMAP_NOTYPE_NOREF', 1725: 'SCHEMAP_REF_AND_SUBTYPE', 1726: 'SCHEMAP_RESTRICTION_NONAME_NOREF', 1727: 'SCHEMAP_SIMPLETYPE_NONAME', 1728: 'SCHEMAP_TYPE_AND_SUBTYPE', 1729: 'SCHEMAP_UNKNOWN_ALL_CHILD', 1730: 'SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD', 1731: 'SCHEMAP_UNKNOWN_ATTR_CHILD', 1732: 'SCHEMAP_UNKNOWN_ATTRGRP_CHILD', 1733: 'SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP', 1734: 'SCHEMAP_UNKNOWN_BASE_TYPE', 1735: 'SCHEMAP_UNKNOWN_CHOICE_CHILD', 1736: 'SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD', 1737: 'SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD', 1738: 'SCHEMAP_UNKNOWN_ELEM_CHILD', 1739: 'SCHEMAP_UNKNOWN_EXTENSION_CHILD', 1740: 'SCHEMAP_UNKNOWN_FACET_CHILD', 1741: 'SCHEMAP_UNKNOWN_FACET_TYPE', 1742: 'SCHEMAP_UNKNOWN_GROUP_CHILD', 1743: 'SCHEMAP_UNKNOWN_IMPORT_CHILD', 1744: 'SCHEMAP_UNKNOWN_LIST_CHILD', 1745: 'SCHEMAP_UNKNOWN_NOTATION_CHILD', 1746: 'SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD', 1747: 'SCHEMAP_UNKNOWN_REF', 1748: 'SCHEMAP_UNKNOWN_RESTRICTION_CHILD', 1749: 'SCHEMAP_UNKNOWN_SCHEMAS_CHILD', 1750: 'SCHEMAP_UNKNOWN_SEQUENCE_CHILD', 1751: 'SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD', 1752: 'SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD', 1753: 'SCHEMAP_UNKNOWN_TYPE', 1754: 'SCHEMAP_UNKNOWN_UNION_CHILD', 1755: 'SCHEMAP_ELEM_DEFAULT_FIXED', 1756: 'SCHEMAP_REGEXP_INVALID', 1757: 'SCHEMAP_FAILED_LOAD', 1758: 'SCHEMAP_NOTHING_TO_PARSE', 1759: 'SCHEMAP_NOROOT', 1760: 'SCHEMAP_REDEFINED_GROUP', 1761: 'SCHEMAP_REDEFINED_TYPE', 1762: 'SCHEMAP_REDEFINED_ELEMENT', 1763: 'SCHEMAP_REDEFINED_ATTRGROUP', 1764: 'SCHEMAP_REDEFINED_ATTR', 1765: 'SCHEMAP_REDEFINED_NOTATION', 1766: 'SCHEMAP_FAILED_PARSE', 1767: 'SCHEMAP_UNKNOWN_PREFIX', 1768: 'SCHEMAP_DEF_AND_PREFIX', 1769: 'SCHEMAP_UNKNOWN_INCLUDE_CHILD', 1770: 'SCHEMAP_INCLUDE_SCHEMA_NOT_URI', 1771: 'SCHEMAP_INCLUDE_SCHEMA_NO_URI', 1772: 'SCHEMAP_NOT_SCHEMA', 1773: 'SCHEMAP_UNKNOWN_MEMBER_TYPE', 1774: 'SCHEMAP_INVALID_ATTR_USE', 1775: 'SCHEMAP_RECURSIVE', 1776: 'SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE', 1777: 'SCHEMAP_INVALID_ATTR_COMBINATION', 1778: 'SCHEMAP_INVALID_ATTR_INLINE_COMBINATION', 1779: 'SCHEMAP_MISSING_SIMPLETYPE_CHILD', 1780: 'SCHEMAP_INVALID_ATTR_NAME', 1781: 'SCHEMAP_REF_AND_CONTENT', 1782: 'SCHEMAP_CT_PROPS_CORRECT_1', 1783: 'SCHEMAP_CT_PROPS_CORRECT_2', 1784: 'SCHEMAP_CT_PROPS_CORRECT_3', 1785: 'SCHEMAP_CT_PROPS_CORRECT_4', 1786: 'SCHEMAP_CT_PROPS_CORRECT_5', 1787: 'SCHEMAP_DERIVATION_OK_RESTRICTION_1', 1788: 'SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1', 1789: 'SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2', 1790: 'SCHEMAP_DERIVATION_OK_RESTRICTION_2_2', 1791: 'SCHEMAP_DERIVATION_OK_RESTRICTION_3', 1792: 'SCHEMAP_WILDCARD_INVALID_NS_MEMBER', 1793: 'SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE', 1794: 'SCHEMAP_UNION_NOT_EXPRESSIBLE', 1795: 'SCHEMAP_SRC_IMPORT_3_1', 1796: 'SCHEMAP_SRC_IMPORT_3_2', 1797: 'SCHEMAP_DERIVATION_OK_RESTRICTION_4_1', 1798: 'SCHEMAP_DERIVATION_OK_RESTRICTION_4_2', 1799: 'SCHEMAP_DERIVATION_OK_RESTRICTION_4_3', 1800: 'SCHEMAP_COS_CT_EXTENDS_1_3', 1801: 'SCHEMAV_NOROOT', 1802: 'SCHEMAV_UNDECLAREDELEM', 1803: 'SCHEMAV_NOTTOPLEVEL', 1804: 'SCHEMAV_MISSING', 1805: 'SCHEMAV_WRONGELEM', 1806: 'SCHEMAV_NOTYPE', 1807: 'SCHEMAV_NOROLLBACK', 1808: 'SCHEMAV_ISABSTRACT', 1809: 'SCHEMAV_NOTEMPTY', 1810: 'SCHEMAV_ELEMCONT', 1811: 'SCHEMAV_HAVEDEFAULT', 1812: 'SCHEMAV_NOTNILLABLE', 1813: 'SCHEMAV_EXTRACONTENT', 1814: 'SCHEMAV_INVALIDATTR', 1815: 'SCHEMAV_INVALIDELEM', 1816: 'SCHEMAV_NOTDETERMINIST', 1817: 'SCHEMAV_CONSTRUCT', 1818: 'SCHEMAV_INTERNAL', 1819: 'SCHEMAV_NOTSIMPLE', 1820: 'SCHEMAV_ATTRUNKNOWN', 1821: 'SCHEMAV_ATTRINVALID', 1822: 'SCHEMAV_VALUE', 1823: 'SCHEMAV_FACET', 1824: 'SCHEMAV_CVC_DATATYPE_VALID_1_2_1', 1825: 'SCHEMAV_CVC_DATATYPE_VALID_1_2_2', 1826: 'SCHEMAV_CVC_DATATYPE_VALID_1_2_3', 1827: 'SCHEMAV_CVC_TYPE_3_1_1', 1828: 'SCHEMAV_CVC_TYPE_3_1_2', 1829: 'SCHEMAV_CVC_FACET_VALID', 1830: 'SCHEMAV_CVC_LENGTH_VALID', 1831: 'SCHEMAV_CVC_MINLENGTH_VALID', 1832: 'SCHEMAV_CVC_MAXLENGTH_VALID', 1833: 'SCHEMAV_CVC_MININCLUSIVE_VALID', 1834: 'SCHEMAV_CVC_MAXINCLUSIVE_VALID', 1835: 'SCHEMAV_CVC_MINEXCLUSIVE_VALID', 1836: 'SCHEMAV_CVC_MAXEXCLUSIVE_VALID', 1837: 'SCHEMAV_CVC_TOTALDIGITS_VALID', 1838: 'SCHEMAV_CVC_FRACTIONDIGITS_VALID', 1839: 'SCHEMAV_CVC_PATTERN_VALID', 1840: 'SCHEMAV_CVC_ENUMERATION_VALID', 1841: 'SCHEMAV_CVC_COMPLEX_TYPE_2_1', 1842: 'SCHEMAV_CVC_COMPLEX_TYPE_2_2', 1843: 'SCHEMAV_CVC_COMPLEX_TYPE_2_3', 1844: 'SCHEMAV_CVC_COMPLEX_TYPE_2_4', 1845: 'SCHEMAV_CVC_ELT_1', 1846: 'SCHEMAV_CVC_ELT_2', 1847: 'SCHEMAV_CVC_ELT_3_1', 1848: 'SCHEMAV_CVC_ELT_3_2_1', 1849: 'SCHEMAV_CVC_ELT_3_2_2', 1850: 'SCHEMAV_CVC_ELT_4_1', 1851: 'SCHEMAV_CVC_ELT_4_2', 1852: 'SCHEMAV_CVC_ELT_4_3', 1853: 'SCHEMAV_CVC_ELT_5_1_1', 1854: 'SCHEMAV_CVC_ELT_5_1_2', 1855: 'SCHEMAV_CVC_ELT_5_2_1', 1856: 'SCHEMAV_CVC_ELT_5_2_2_1', 1857: 'SCHEMAV_CVC_ELT_5_2_2_2_1', 1858: 'SCHEMAV_CVC_ELT_5_2_2_2_2', 1859: 'SCHEMAV_CVC_ELT_6', 1860: 'SCHEMAV_CVC_ELT_7', 1861: 'SCHEMAV_CVC_ATTRIBUTE_1', 1862: 'SCHEMAV_CVC_ATTRIBUTE_2', 1863: 'SCHEMAV_CVC_ATTRIBUTE_3', 1864: 'SCHEMAV_CVC_ATTRIBUTE_4', 1865: 'SCHEMAV_CVC_COMPLEX_TYPE_3_1', 1866: 'SCHEMAV_CVC_COMPLEX_TYPE_3_2_1', 1867: 'SCHEMAV_CVC_COMPLEX_TYPE_3_2_2', 1868: 'SCHEMAV_CVC_COMPLEX_TYPE_4', 1869: 'SCHEMAV_CVC_COMPLEX_TYPE_5_1', 1870: 'SCHEMAV_CVC_COMPLEX_TYPE_5_2', 1871: 'SCHEMAV_ELEMENT_CONTENT', 1872: 'SCHEMAV_DOCUMENT_ELEMENT_MISSING', 1873: 'SCHEMAV_CVC_COMPLEX_TYPE_1', 1874: 'SCHEMAV_CVC_AU', 1875: 'SCHEMAV_CVC_TYPE_1', 1876: 'SCHEMAV_CVC_TYPE_2', 1877: 'SCHEMAV_CVC_IDC', 1878: 'SCHEMAV_CVC_WILDCARD', 1879: 'SCHEMAV_MISC', 1900: 'XPTR_UNKNOWN_SCHEME', 1901: 'XPTR_CHILDSEQ_START', 1902: 'XPTR_EVAL_FAILED', 1903: 'XPTR_EXTRA_OBJECTS', 1950: 'C14N_CREATE_CTXT', 1951: 'C14N_REQUIRES_UTF8', 1952: 'C14N_CREATE_STACK', 1953: 'C14N_INVALID_NODE', 1954: 'C14N_UNKNOW_NODE', 1955: 'C14N_RELATIVE_NAMESPACE', 2000: 'FTP_PASV_ANSWER', 2001: 'FTP_EPSV_ANSWER', 2002: 'FTP_ACCNT', 2003: 'FTP_URL_SYNTAX', 2020: 'HTTP_URL_SYNTAX', 2021: 'HTTP_USE_IP', 2022: 'HTTP_UNKNOWN_HOST', 3000: 'SCHEMAP_SRC_SIMPLE_TYPE_1', 3001: 'SCHEMAP_SRC_SIMPLE_TYPE_2', 3002: 'SCHEMAP_SRC_SIMPLE_TYPE_3', 3003: 'SCHEMAP_SRC_SIMPLE_TYPE_4', 3004: 'SCHEMAP_SRC_RESOLVE', 3005: 'SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE', 3006: 'SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE', 3007: 'SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES', 3008: 'SCHEMAP_ST_PROPS_CORRECT_1', 3009: 'SCHEMAP_ST_PROPS_CORRECT_2', 3010: 'SCHEMAP_ST_PROPS_CORRECT_3', 3011: 'SCHEMAP_COS_ST_RESTRICTS_1_1', 3012: 'SCHEMAP_COS_ST_RESTRICTS_1_2', 3013: 'SCHEMAP_COS_ST_RESTRICTS_1_3_1', 3014: 'SCHEMAP_COS_ST_RESTRICTS_1_3_2', 3015: 'SCHEMAP_COS_ST_RESTRICTS_2_1', 3016: 'SCHEMAP_COS_ST_RESTRICTS_2_3_1_1', 3017: 'SCHEMAP_COS_ST_RESTRICTS_2_3_1_2', 3018: 'SCHEMAP_COS_ST_RESTRICTS_2_3_2_1', 3019: 'SCHEMAP_COS_ST_RESTRICTS_2_3_2_2', 3020: 'SCHEMAP_COS_ST_RESTRICTS_2_3_2_3', 3021: 'SCHEMAP_COS_ST_RESTRICTS_2_3_2_4', 3022: 'SCHEMAP_COS_ST_RESTRICTS_2_3_2_5', 3023: 'SCHEMAP_COS_ST_RESTRICTS_3_1', 3024: 'SCHEMAP_COS_ST_RESTRICTS_3_3_1', 3025: 'SCHEMAP_COS_ST_RESTRICTS_3_3_1_2', 3026: 'SCHEMAP_COS_ST_RESTRICTS_3_3_2_2', 3027: 'SCHEMAP_COS_ST_RESTRICTS_3_3_2_1', 3028: 'SCHEMAP_COS_ST_RESTRICTS_3_3_2_3', 3029: 'SCHEMAP_COS_ST_RESTRICTS_3_3_2_4', 3030: 'SCHEMAP_COS_ST_RESTRICTS_3_3_2_5', 3031: 'SCHEMAP_COS_ST_DERIVED_OK_2_1', 3032: 'SCHEMAP_COS_ST_DERIVED_OK_2_2', 3033: 'SCHEMAP_S4S_ELEM_NOT_ALLOWED', 3034: 'SCHEMAP_S4S_ELEM_MISSING', 3035: 'SCHEMAP_S4S_ATTR_NOT_ALLOWED', 3036: 'SCHEMAP_S4S_ATTR_MISSING', 3037: 'SCHEMAP_S4S_ATTR_INVALID_VALUE', 3038: 'SCHEMAP_SRC_ELEMENT_1', 3039: 'SCHEMAP_SRC_ELEMENT_2_1', 3040: 'SCHEMAP_SRC_ELEMENT_2_2', 3041: 'SCHEMAP_SRC_ELEMENT_3', 3042: 'SCHEMAP_P_PROPS_CORRECT_1', 3043: 'SCHEMAP_P_PROPS_CORRECT_2_1', 3044: 'SCHEMAP_P_PROPS_CORRECT_2_2', 3045: 'SCHEMAP_E_PROPS_CORRECT_2', 3046: 'SCHEMAP_E_PROPS_CORRECT_3', 3047: 'SCHEMAP_E_PROPS_CORRECT_4', 3048: 'SCHEMAP_E_PROPS_CORRECT_5', 3049: 'SCHEMAP_E_PROPS_CORRECT_6', 3050: 'SCHEMAP_SRC_INCLUDE', 3051: 'SCHEMAP_SRC_ATTRIBUTE_1', 3052: 'SCHEMAP_SRC_ATTRIBUTE_2', 3053: 'SCHEMAP_SRC_ATTRIBUTE_3_1', 3054: 'SCHEMAP_SRC_ATTRIBUTE_3_2', 3055: 'SCHEMAP_SRC_ATTRIBUTE_4', 3056: 'SCHEMAP_NO_XMLNS', 3057: 'SCHEMAP_NO_XSI', 3058: 'SCHEMAP_COS_VALID_DEFAULT_1', 3059: 'SCHEMAP_COS_VALID_DEFAULT_2_1', 3060: 'SCHEMAP_COS_VALID_DEFAULT_2_2_1', 3061: 'SCHEMAP_COS_VALID_DEFAULT_2_2_2', 3062: 'SCHEMAP_CVC_SIMPLE_TYPE', 3063: 'SCHEMAP_COS_CT_EXTENDS_1_1', 3064: 'SCHEMAP_SRC_IMPORT_1_1', 3065: 'SCHEMAP_SRC_IMPORT_1_2', 3066: 'SCHEMAP_SRC_IMPORT_2', 3067: 'SCHEMAP_SRC_IMPORT_2_1', 3068: 'SCHEMAP_SRC_IMPORT_2_2', 3069: 'SCHEMAP_INTERNAL', 3070: 'SCHEMAP_NOT_DETERMINISTIC', 3071: 'SCHEMAP_SRC_ATTRIBUTE_GROUP_1', 3072: 'SCHEMAP_SRC_ATTRIBUTE_GROUP_2', 3073: 'SCHEMAP_SRC_ATTRIBUTE_GROUP_3', 3074: 'SCHEMAP_MG_PROPS_CORRECT_1', 3075: 'SCHEMAP_MG_PROPS_CORRECT_2', 3076: 'SCHEMAP_SRC_CT_1', 3077: 'SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3', 3078: 'SCHEMAP_AU_PROPS_CORRECT_2', 3079: 'SCHEMAP_A_PROPS_CORRECT_2', 3080: 'SCHEMAP_C_PROPS_CORRECT', 3081: 'SCHEMAP_SRC_REDEFINE', 3082: 'SCHEMAP_SRC_IMPORT', 3083: 'SCHEMAP_WARN_SKIP_SCHEMA', 3084: 'SCHEMAP_WARN_UNLOCATED_SCHEMA', 3085: 'SCHEMAP_WARN_ATTR_REDECL_PROH', 3086: 'SCHEMAP_WARN_ATTR_POINTLESS_PROH', 3087: 'SCHEMAP_AG_PROPS_CORRECT', 3088: 'SCHEMAP_COS_CT_EXTENDS_1_2', 3089: 'SCHEMAP_AU_PROPS_CORRECT', 3090: 'SCHEMAP_A_PROPS_CORRECT_3', 3091: 'SCHEMAP_COS_ALL_LIMITED', 4000: 'SCHEMATRONV_ASSERT', 4001: 'SCHEMATRONV_REPORT', 4900: 'MODULE_OPEN', 4901: 'MODULE_CLOSE', 5000: 'CHECK_FOUND_ELEMENT', 5001: 'CHECK_FOUND_ATTRIBUTE', 5002: 'CHECK_FOUND_TEXT', 5003: 'CHECK_FOUND_CDATA', 5004: 'CHECK_FOUND_ENTITYREF', 5005: 'CHECK_FOUND_ENTITY', 5006: 'CHECK_FOUND_PI', 5007: 'CHECK_FOUND_COMMENT', 5008: 'CHECK_FOUND_DOCTYPE', 5009: 'CHECK_FOUND_FRAGMENT', 5010: 'CHECK_FOUND_NOTATION', 5011: 'CHECK_UNKNOWN_NODE', 5012: 'CHECK_ENTITY_TYPE', 5013: 'CHECK_NO_PARENT', 5014: 'CHECK_NO_DOC', 5015: 'CHECK_NO_NAME', 5016: 'CHECK_NO_ELEM', 5017: 'CHECK_WRONG_DOC', 5018: 'CHECK_NO_PREV', 5019: 'CHECK_WRONG_PREV', 5020: 'CHECK_NO_NEXT', 5021: 'CHECK_WRONG_NEXT', 5022: 'CHECK_NOT_DTD', 5023: 'CHECK_NOT_ATTR', 5024: 'CHECK_NOT_ATTR_DECL', 5025: 'CHECK_NOT_ELEM_DECL', 5026: 'CHECK_NOT_ENTITY_DECL', 5027: 'CHECK_NOT_NS_DECL', 5028: 'CHECK_NO_HREF', 5029: 'CHECK_WRONG_PARENT', 5030: 'CHECK_NS_SCOPE', 5031: 'CHECK_NS_ANCESTOR', 5032: 'CHECK_NOT_UTF8', 5033: 'CHECK_NO_DICT', 5034: 'CHECK_NOT_NCNAME', 5035: 'CHECK_OUTSIDE_DICT', 5036: 'CHECK_WRONG_NAME', 5037: 'CHECK_NAME_NOT_NULL', 6000: 'I18N_NO_NAME', 6001: 'I18N_NO_HANDLER', 6002: 'I18N_EXCESS_HANDLER', 6003: 'I18N_CONV_FAILED', 6004: 'I18N_NO_OUTPUT', 7000: 'BUF_OVERFLOW'}</em><a class="headerlink" href="#lxml.etree.ErrorTypes._names" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ErrorTypes._names">
+<span class="sig-name descname"><span class="pre">_names</span></span><em class="property"> <span class="pre">=</span> <span class="pre">{0:</span> <span class="pre">'ERR_OK',</span> <span class="pre">1:</span> <span class="pre">'ERR_INTERNAL_ERROR',</span> <span class="pre">2:</span> <span class="pre">'ERR_NO_MEMORY',</span> <span class="pre">3:</span> <span class="pre">'ERR_DOCUMENT_START',</span> <span class="pre">4:</span> <span class="pre">'ERR_DOCUMENT_EMPTY',</span> <span class="pre">5:</span> <span class="pre">'ERR_DOCUMENT_END',</span> <span class="pre">6:</span> <span class="pre">'ERR_INVALID_HEX_CHARREF',</span> <span class="pre">7:</span> <span class="pre">'ERR_INVALID_DEC_CHARREF',</span> <span class="pre">8:</span> <span class="pre">'ERR_INVALID_CHARREF',</span> <span class="pre">9:</span> <span class="pre">'ERR_INVALID_CHAR',</span> <span class="pre">10:</span> <span class="pre">'ERR_CHARREF_AT_EOF',</span> <span class="pre">11:</span> <span class="pre">'ERR_CHARREF_IN_PROLOG',</span> <span class="pre">12:</span> <span class="pre">'ERR_CHARREF_IN_EPILOG',</span> <span class="pre">13:</span> <span class="pre">'ERR_CHARREF_IN_DTD',</span> <span class="pre">14:</span> <span class="pre">'ERR_ENTITYREF_AT_EOF',</span> <span class="pre">15:</span> <span class="pre">'ERR_ENTITYREF_IN_PROLOG',</span> <span class="pre">16:</span> <span class="pre">'ERR_ENTITYREF_IN_EPILOG',</span> <span class="pre">17:</span> <span class="pre">'ERR_ENTITYREF_IN_DTD',</span> <span class="pre">18:</span> <span class="pre">'ERR_PEREF_AT_EOF',</span> <span class="pre">19:</span> <span class="pre">'ERR_PEREF_IN_PROLOG',</span> <span class="pre">20:</span> <span class="pre">'ERR_PEREF_IN_EPILOG',</span> <span class="pre">21:</span> <span class="pre">'ERR_PEREF_IN_INT_SUBSET',</span> <span class="pre">22:</span> <span class="pre">'ERR_ENTITYREF_NO_NAME',</span> <span class="pre">23:</span> <span class="pre">'ERR_ENTITYREF_SEMICOL_MISSING',</span> <span class="pre">24:</span> <span class="pre">'ERR_PEREF_NO_NAME',</span> <span class="pre">25:</span> <span class="pre">'ERR_PEREF_SEMICOL_MISSING',</span> <span class="pre">26:</span> <span class="pre">'ERR_UNDECLARED_ENTITY',</span> <span class="pre">27:</span> <span class="pre">'WAR_UNDECLARED_ENTITY',</span> <span class="pre">28:</span> <span class="pre">'ERR_UNPARSED_ENTITY',</span> <span class="pre">29:</span> <span class="pre">'ERR_ENTITY_IS_EXTERNAL',</span> <span class="pre">30:</span> <span class="pre">'ERR_ENTITY_IS_PARAMETER',</span> <span class="pre">31:</span> <span class="pre">'ERR_UNKNOWN_ENCODING',</span> <span class="pre">32:</span> <span class="pre">'ERR_UNSUPPORTED_ENCODING',</span> <span class="pre">33:</span> <span class="pre">'ERR_STRING_NOT_STARTED',</span> <span class="pre">34:</span> <span class="pre">'ERR_STRING_NOT_CLOSED',</span> <span class="pre">35:</span> <span class="pre">'ERR_NS_DECL_ERROR',</span> <span class="pre">36:</span> <span class="pre">'ERR_ENTITY_NOT_STARTED',</span> <span class="pre">37:</span> <span class="pre">'ERR_ENTITY_NOT_FINISHED',</span> <span class="pre">38:</span> <span class="pre">'ERR_LT_IN_ATTRIBUTE',</span> <span class="pre">39:</span> <span class="pre">'ERR_ATTRIBUTE_NOT_STARTED',</span> <span class="pre">40:</span> <span class="pre">'ERR_ATTRIBUTE_NOT_FINISHED',</span> <span class="pre">41:</span> <span class="pre">'ERR_ATTRIBUTE_WITHOUT_VALUE',</span> <span class="pre">42:</span> <span class="pre">'ERR_ATTRIBUTE_REDEFINED',</span> <span class="pre">43:</span> <span class="pre">'ERR_LITERAL_NOT_STARTED',</span> <span class="pre">44:</span> <span class="pre">'ERR_LITERAL_NOT_FINISHED',</span> <span class="pre">45:</span> <span class="pre">'ERR_COMMENT_NOT_FINISHED',</span> <span class="pre">46:</span> <span class="pre">'ERR_PI_NOT_STARTED',</span> <span class="pre">47:</span> <span class="pre">'ERR_PI_NOT_FINISHED',</span> <span class="pre">48:</span> <span class="pre">'ERR_NOTATION_NOT_STARTED',</span> <span class="pre">49:</span> <span class="pre">'ERR_NOTATION_NOT_FINISHED',</span> <span class="pre">50:</span> <span class="pre">'ERR_ATTLIST_NOT_STARTED',</span> <span class="pre">51:</span> <span class="pre">'ERR_ATTLIST_NOT_FINISHED',</span> <span class="pre">52:</span> <span class="pre">'ERR_MIXED_NOT_STARTED',</span> <span class="pre">53:</span> <span class="pre">'ERR_MIXED_NOT_FINISHED',</span> <span class="pre">54:</span> <span class="pre">'ERR_ELEMCONTENT_NOT_STARTED',</span> <span class="pre">55:</span> <span class="pre">'ERR_ELEMCONTENT_NOT_FINISHED',</span> <span class="pre">56:</span> <span class="pre">'ERR_XMLDECL_NOT_STARTED',</span> <span class="pre">57:</span> <span class="pre">'ERR_XMLDECL_NOT_FINISHED',</span> <span class="pre">58:</span> <span class="pre">'ERR_CONDSEC_NOT_STARTED',</span> <span class="pre">59:</span> <span class="pre">'ERR_CONDSEC_NOT_FINISHED',</span> <span class="pre">60:</span> <span class="pre">'ERR_EXT_SUBSET_NOT_FINISHED',</span> <span class="pre">61:</span> <span class="pre">'ERR_DOCTYPE_NOT_FINISHED',</span> <span class="pre">62:</span> <span class="pre">'ERR_MISPLACED_CDATA_END',</span> <span class="pre">63:</span> <span class="pre">'ERR_CDATA_NOT_FINISHED',</span> <span class="pre">64:</span> <span class="pre">'ERR_RESERVED_XML_NAME',</span> <span class="pre">65:</span> <span class="pre">'ERR_SPACE_REQUIRED',</span> <span class="pre">66:</span> <span class="pre">'ERR_SEPARATOR_REQUIRED',</span> <span class="pre">67:</span> <span class="pre">'ERR_NMTOKEN_REQUIRED',</span> <span class="pre">68:</span> <span class="pre">'ERR_NAME_REQUIRED',</span> <span class="pre">69:</span> <span class="pre">'ERR_PCDATA_REQUIRED',</span> <span class="pre">70:</span> <span class="pre">'ERR_URI_REQUIRED',</span> <span class="pre">71:</span> <span class="pre">'ERR_PUBID_REQUIRED',</span> <span class="pre">72:</span> <span class="pre">'ERR_LT_REQUIRED',</span> <span class="pre">73:</span> <span class="pre">'ERR_GT_REQUIRED',</span> <span class="pre">74:</span> <span class="pre">'ERR_LTSLASH_REQUIRED',</span> <span class="pre">75:</span> <span class="pre">'ERR_EQUAL_REQUIRED',</span> <span class="pre">76:</span> <span class="pre">'ERR_TAG_NAME_MISMATCH',</span> <span class="pre">77:</span> <span class="pre">'ERR_TAG_NOT_FINISHED',</span> <span class="pre">78:</span> <span class="pre">'ERR_STANDALONE_VALUE',</span> <span class="pre">79:</span> <span class="pre">'ERR_ENCODING_NAME',</span> <span class="pre">80:</span> <span class="pre">'ERR_HYPHEN_IN_COMMENT',</span> <span class="pre">81:</span> <span class="pre">'ERR_INVALID_ENCODING',</span> <span class="pre">82:</span> <span class="pre">'ERR_EXT_ENTITY_STANDALONE',</span> <span class="pre">83:</span> <span class="pre">'ERR_CONDSEC_INVALID',</span> <span class="pre">84:</span> <span class="pre">'ERR_VALUE_REQUIRED',</span> <span class="pre">85:</span> <span class="pre">'ERR_NOT_WELL_BALANCED',</span> <span class="pre">86:</span> <span class="pre">'ERR_EXTRA_CONTENT',</span> <span class="pre">87:</span> <span class="pre">'ERR_ENTITY_CHAR_ERROR',</span> <span class="pre">88:</span> <span class="pre">'ERR_ENTITY_PE_INTERNAL',</span> <span class="pre">89:</span> <span class="pre">'ERR_ENTITY_LOOP',</span> <span class="pre">90:</span> <span class="pre">'ERR_ENTITY_BOUNDARY',</span> <span class="pre">91:</span> <span class="pre">'ERR_INVALID_URI',</span> <span class="pre">92:</span> <span class="pre">'ERR_URI_FRAGMENT',</span> <span class="pre">93:</span> <span class="pre">'WAR_CATALOG_PI',</span> <span class="pre">94:</span> <span class="pre">'ERR_NO_DTD',</span> <span class="pre">95:</span> <span class="pre">'ERR_CONDSEC_INVALID_KEYWORD',</span> <span class="pre">96:</span> <span class="pre">'ERR_VERSION_MISSING',</span> <span class="pre">97:</span> <span class="pre">'WAR_UNKNOWN_VERSION',</span> <span class="pre">98:</span> <span class="pre">'WAR_LANG_VALUE',</span> <span class="pre">99:</span> <span class="pre">'WAR_NS_URI',</span> <span class="pre">100:</span> <span class="pre">'WAR_NS_URI_RELATIVE',</span> <span class="pre">101:</span> <span class="pre">'ERR_MISSING_ENCODING',</span> <span class="pre">102:</span> <span class="pre">'WAR_SPACE_VALUE',</span> <span class="pre">103:</span> <span class="pre">'ERR_NOT_STANDALONE',</span> <span class="pre">104:</span> <span class="pre">'ERR_ENTITY_PROCESSING',</span> <span class="pre">105:</span> <span class="pre">'ERR_NOTATION_PROCESSING',</span> <span class="pre">106:</span> <span class="pre">'WAR_NS_COLUMN',</span> <span class="pre">107:</span> <span class="pre">'WAR_ENTITY_REDEFINED',</span> <span class="pre">108:</span> <span class="pre">'ERR_UNKNOWN_VERSION',</span> <span class="pre">109:</span> <span class="pre">'ERR_VERSION_MISMATCH',</span> <span class="pre">110:</span> <span class="pre">'ERR_NAME_TOO_LONG',</span> <span class="pre">111:</span> <span class="pre">'ERR_USER_STOP',</span> <span class="pre">200:</span> <span class="pre">'NS_ERR_XML_NAMESPACE',</span> <span class="pre">201:</span> <span class="pre">'NS_ERR_UNDEFINED_NAMESPACE',</span> <span class="pre">202:</span> <span class="pre">'NS_ERR_QNAME',</span> <span class="pre">203:</span> <span class="pre">'NS_ERR_ATTRIBUTE_REDEFINED',</span> <span class="pre">204:</span> <span class="pre">'NS_ERR_EMPTY',</span> <span class="pre">205:</span> <span class="pre">'NS_ERR_COLON',</span> <span class="pre">500:</span> <span class="pre">'DTD_ATTRIBUTE_DEFAULT',</span> <span class="pre">501:</span> <span class="pre">'DTD_ATTRIBUTE_REDEFINED',</span> <span class="pre">502:</span> <span class="pre">'DTD_ATTRIBUTE_VALUE',</span> <span class="pre">503:</span> <span class="pre">'DTD_CONTENT_ERROR',</span> <span class="pre">504:</span> <span class="pre">'DTD_CONTENT_MODEL',</span> <span class="pre">505:</span> <span class="pre">'DTD_CONTENT_NOT_DETERMINIST',</span> <span class="pre">506:</span> <span class="pre">'DTD_DIFFERENT_PREFIX',</span> <span class="pre">507:</span> <span class="pre">'DTD_ELEM_DEFAULT_NAMESPACE',</span> <span class="pre">508:</span> <span class="pre">'DTD_ELEM_NAMESPACE',</span> <span class="pre">509:</span> <span class="pre">'DTD_ELEM_REDEFINED',</span> <span class="pre">510:</span> <span class="pre">'DTD_EMPTY_NOTATION',</span> <span class="pre">511:</span> <span class="pre">'DTD_ENTITY_TYPE',</span> <span class="pre">512:</span> <span class="pre">'DTD_ID_FIXED',</span> <span class="pre">513:</span> <span class="pre">'DTD_ID_REDEFINED',</span> <span class="pre">514:</span> <span class="pre">'DTD_ID_SUBSET',</span> <span class="pre">515:</span> <span class="pre">'DTD_INVALID_CHILD',</span> <span class="pre">516:</span> <span class="pre">'DTD_INVALID_DEFAULT',</span> <span class="pre">517:</span> <span class="pre">'DTD_LOAD_ERROR',</span> <span class="pre">518:</span> <span class="pre">'DTD_MISSING_ATTRIBUTE',</span> <span class="pre">519:</span> <span class="pre">'DTD_MIXED_CORRUPT',</span> <span class="pre">520:</span> <span class="pre">'DTD_MULTIPLE_ID',</span> <span class="pre">521:</span> <span class="pre">'DTD_NO_DOC',</span> <span class="pre">522:</span> <span class="pre">'DTD_NO_DTD',</span> <span class="pre">523:</span> <span class="pre">'DTD_NO_ELEM_NAME',</span> <span class="pre">524:</span> <span class="pre">'DTD_NO_PREFIX',</span> <span class="pre">525:</span> <span class="pre">'DTD_NO_ROOT',</span> <span class="pre">526:</span> <span class="pre">'DTD_NOTATION_REDEFINED',</span> <span class="pre">527:</span> <span class="pre">'DTD_NOTATION_VALUE',</span> <span class="pre">528:</span> <span class="pre">'DTD_NOT_EMPTY',</span> <span class="pre">529:</span> <span class="pre">'DTD_NOT_PCDATA',</span> <span class="pre">530:</span> <span class="pre">'DTD_NOT_STANDALONE',</span> <span class="pre">531:</span> <span class="pre">'DTD_ROOT_NAME',</span> <span class="pre">532:</span> <span class="pre">'DTD_STANDALONE_WHITE_SPACE',</span> <span class="pre">533:</span> <span class="pre">'DTD_UNKNOWN_ATTRIBUTE',</span> <span class="pre">534:</span> <span class="pre">'DTD_UNKNOWN_ELEM',</span> <span class="pre">535:</span> <span class="pre">'DTD_UNKNOWN_ENTITY',</span> <span class="pre">536:</span> <span class="pre">'DTD_UNKNOWN_ID',</span> <span class="pre">537:</span> <span class="pre">'DTD_UNKNOWN_NOTATION',</span> <span class="pre">538:</span> <span class="pre">'DTD_STANDALONE_DEFAULTED',</span> <span class="pre">539:</span> <span class="pre">'DTD_XMLID_VALUE',</span> <span class="pre">540:</span> <span class="pre">'DTD_XMLID_TYPE',</span> <span class="pre">541:</span> <span class="pre">'DTD_DUP_TOKEN',</span> <span class="pre">800:</span> <span class="pre">'HTML_STRUCURE_ERROR',</span> <span class="pre">801:</span> <span class="pre">'HTML_UNKNOWN_TAG',</span> <span class="pre">1000:</span> <span class="pre">'RNGP_ANYNAME_ATTR_ANCESTOR',</span> <span class="pre">1001:</span> <span class="pre">'RNGP_ATTR_CONFLICT',</span> <span class="pre">1002:</span> <span class="pre">'RNGP_ATTRIBUTE_CHILDREN',</span> <span class="pre">1003:</span> <span class="pre">'RNGP_ATTRIBUTE_CONTENT',</span> <span class="pre">1004:</span> <span class="pre">'RNGP_ATTRIBUTE_EMPTY',</span> <span class="pre">1005:</span> <span class="pre">'RNGP_ATTRIBUTE_NOOP',</span> <span class="pre">1006:</span> <span class="pre">'RNGP_CHOICE_CONTENT',</span> <span class="pre">1007:</span> <span class="pre">'RNGP_CHOICE_EMPTY',</span> <span class="pre">1008:</span> <span class="pre">'RNGP_CREATE_FAILURE',</span> <span class="pre">1009:</span> <span class="pre">'RNGP_DATA_CONTENT',</span> <span class="pre">1010:</span> <span class="pre">'RNGP_DEF_CHOICE_AND_INTERLEAVE',</span> <span class="pre">1011:</span> <span class="pre">'RNGP_DEFINE_CREATE_FAILED',</span> <span class="pre">1012:</span> <span class="pre">'RNGP_DEFINE_EMPTY',</span> <span class="pre">1013:</span> <span class="pre">'RNGP_DEFINE_MISSING',</span> <span class="pre">1014:</span> <span class="pre">'RNGP_DEFINE_NAME_MISSING',</span> <span class="pre">1015:</span> <span class="pre">'RNGP_ELEM_CONTENT_EMPTY',</span> <span class="pre">1016:</span> <span class="pre">'RNGP_ELEM_CONTENT_ERROR',</span> <span class="pre">1017:</span> <span class="pre">'RNGP_ELEMENT_EMPTY',</span> <span class="pre">1018:</span> <span class="pre">'RNGP_ELEMENT_CONTENT',</span> <span class="pre">1019:</span> <span class="pre">'RNGP_ELEMENT_NAME',</span> <span class="pre">1020:</span> <span class="pre">'RNGP_ELEMENT_NO_CONTENT',</span> <span class="pre">1021:</span> <span class="pre">'RNGP_ELEM_TEXT_CONFLICT',</span> <span class="pre">1022:</span> <span class="pre">'RNGP_EMPTY',</span> <span class="pre">1023:</span> <span class="pre">'RNGP_EMPTY_CONSTRUCT',</span> <span class="pre">1024:</span> <span class="pre">'RNGP_EMPTY_CONTENT',</span> <span class="pre">1025:</span> <span class="pre">'RNGP_EMPTY_NOT_EMPTY',</span> <span class="pre">1026:</span> <span class="pre">'RNGP_ERROR_TYPE_LIB',</span> <span class="pre">1027:</span> <span class="pre">'RNGP_EXCEPT_EMPTY',</span> <span class="pre">1028:</span> <span class="pre">'RNGP_EXCEPT_MISSING',</span> <span class="pre">1029:</span> <span class="pre">'RNGP_EXCEPT_MULTIPLE',</span> <span class="pre">1030:</span> <span class="pre">'RNGP_EXCEPT_NO_CONTENT',</span> <span class="pre">1031:</span> <span class="pre">'RNGP_EXTERNALREF_EMTPY',</span> <span class="pre">1032:</span> <span class="pre">'RNGP_EXTERNAL_REF_FAILURE',</span> <span class="pre">1033:</span> <span class="pre">'RNGP_EXTERNALREF_RECURSE',</span> <span class="pre">1034:</span> <span class="pre">'RNGP_FORBIDDEN_ATTRIBUTE',</span> <span class="pre">1035:</span> <span class="pre">'RNGP_FOREIGN_ELEMENT',</span> <span class="pre">1036:</span> <span class="pre">'RNGP_GRAMMAR_CONTENT',</span> <span class="pre">1037:</span> <span class="pre">'RNGP_GRAMMAR_EMPTY',</span> <span class="pre">1038:</span> <span class="pre">'RNGP_GRAMMAR_MISSING',</span> <span class="pre">1039:</span> <span class="pre">'RNGP_GRAMMAR_NO_START',</span> <span class="pre">1040:</span> <span class="pre">'RNGP_GROUP_ATTR_CONFLICT',</span> <span class="pre">1041:</span> <span class="pre">'RNGP_HREF_ERROR',</span> <span class="pre">1042:</span> <span class="pre">'RNGP_INCLUDE_EMPTY',</span> <span class="pre">1043:</span> <span class="pre">'RNGP_INCLUDE_FAILURE',</span> <span class="pre">1044:</span> <span class="pre">'RNGP_INCLUDE_RECURSE',</span> <span class="pre">1045:</span> <span class="pre">'RNGP_INTERLEAVE_ADD',</span> <span class="pre">1046:</span> <span class="pre">'RNGP_INTERLEAVE_CREATE_FAILED',</span> <span class="pre">1047:</span> <span class="pre">'RNGP_INTERLEAVE_EMPTY',</span> <span class="pre">1048:</span> <span class="pre">'RNGP_INTERLEAVE_NO_CONTENT',</span> <span class="pre">1049:</span> <span class="pre">'RNGP_INVALID_DEFINE_NAME',</span> <span class="pre">1050:</span> <span class="pre">'RNGP_INVALID_URI',</span> <span class="pre">1051:</span> <span class="pre">'RNGP_INVALID_VALUE',</span> <span class="pre">1052:</span> <span class="pre">'RNGP_MISSING_HREF',</span> <span class="pre">1053:</span> <span class="pre">'RNGP_NAME_MISSING',</span> <span class="pre">1054:</span> <span class="pre">'RNGP_NEED_COMBINE',</span> <span class="pre">1055:</span> <span class="pre">'RNGP_NOTALLOWED_NOT_EMPTY',</span> <span class="pre">1056:</span> <span class="pre">'RNGP_NSNAME_ATTR_ANCESTOR',</span> <span class="pre">1057:</span> <span class="pre">'RNGP_NSNAME_NO_NS',</span> <span class="pre">1058:</span> <span class="pre">'RNGP_PARAM_FORBIDDEN',</span> <span class="pre">1059:</span> <span class="pre">'RNGP_PARAM_NAME_MISSING',</span> <span class="pre">1060:</span> <span class="pre">'RNGP_PARENTREF_CREATE_FAILED',</span> <span class="pre">1061:</span> <span class="pre">'RNGP_PARENTREF_NAME_INVALID',</span> <span class="pre">1062:</span> <span class="pre">'RNGP_PARENTREF_NO_NAME',</span> <span class="pre">1063:</span> <span class="pre">'RNGP_PARENTREF_NO_PARENT',</span> <span class="pre">1064:</span> <span class="pre">'RNGP_PARENTREF_NOT_EMPTY',</span> <span class="pre">1065:</span> <span class="pre">'RNGP_PARSE_ERROR',</span> <span class="pre">1066:</span> <span class="pre">'RNGP_PAT_ANYNAME_EXCEPT_ANYNAME',</span> <span class="pre">1067:</span> <span class="pre">'RNGP_PAT_ATTR_ATTR',</span> <span class="pre">1068:</span> <span class="pre">'RNGP_PAT_ATTR_ELEM',</span> <span class="pre">1069:</span> <span class="pre">'RNGP_PAT_DATA_EXCEPT_ATTR',</span> <span class="pre">1070:</span> <span class="pre">'RNGP_PAT_DATA_EXCEPT_ELEM',</span> <span class="pre">1071:</span> <span class="pre">'RNGP_PAT_DATA_EXCEPT_EMPTY',</span> <span class="pre">1072:</span> <span class="pre">'RNGP_PAT_DATA_EXCEPT_GROUP',</span> <span class="pre">1073:</span> <span class="pre">'RNGP_PAT_DATA_EXCEPT_INTERLEAVE',</span> <span class="pre">1074:</span> <span class="pre">'RNGP_PAT_DATA_EXCEPT_LIST',</span> <span class="pre">1075:</span> <span class="pre">'RNGP_PAT_DATA_EXCEPT_ONEMORE',</span> <span class="pre">1076:</span> <span class="pre">'RNGP_PAT_DATA_EXCEPT_REF',</span> <span class="pre">1077:</span> <span class="pre">'RNGP_PAT_DATA_EXCEPT_TEXT',</span> <span class="pre">1078:</span> <span class="pre">'RNGP_PAT_LIST_ATTR',</span> <span class="pre">1079:</span> <span class="pre">'RNGP_PAT_LIST_ELEM',</span> <span class="pre">1080:</span> <span class="pre">'RNGP_PAT_LIST_INTERLEAVE',</span> <span class="pre">1081:</span> <span class="pre">'RNGP_PAT_LIST_LIST',</span> <span class="pre">1082:</span> <span class="pre">'RNGP_PAT_LIST_REF',</span> <span class="pre">1083:</span> <span class="pre">'RNGP_PAT_LIST_TEXT',</span> <span class="pre">1084:</span> <span class="pre">'RNGP_PAT_NSNAME_EXCEPT_ANYNAME',</span> <span class="pre">1085:</span> <span class="pre">'RNGP_PAT_NSNAME_EXCEPT_NSNAME',</span> <span class="pre">1086:</span> <span class="pre">'RNGP_PAT_ONEMORE_GROUP_ATTR',</span> <span class="pre">1087:</span> <span class="pre">'RNGP_PAT_ONEMORE_INTERLEAVE_ATTR',</span> <span class="pre">1088:</span> <span class="pre">'RNGP_PAT_START_ATTR',</span> <span class="pre">1089:</span> <span class="pre">'RNGP_PAT_START_DATA',</span> <span class="pre">1090:</span> <span class="pre">'RNGP_PAT_START_EMPTY',</span> <span class="pre">1091:</span> <span class="pre">'RNGP_PAT_START_GROUP',</span> <span class="pre">1092:</span> <span class="pre">'RNGP_PAT_START_INTERLEAVE',</span> <span class="pre">1093:</span> <span class="pre">'RNGP_PAT_START_LIST',</span> <span class="pre">1094:</span> <span class="pre">'RNGP_PAT_START_ONEMORE',</span> <span class="pre">1095:</span> <span class="pre">'RNGP_PAT_START_TEXT',</span> <span class="pre">1096:</span> <span class="pre">'RNGP_PAT_START_VALUE',</span> <span class="pre">1097:</span> <span class="pre">'RNGP_PREFIX_UNDEFINED',</span> <span class="pre">1098:</span> <span class="pre">'RNGP_REF_CREATE_FAILED',</span> <span class="pre">1099:</span> <span class="pre">'RNGP_REF_CYCLE',</span> <span class="pre">1100:</span> <span class="pre">'RNGP_REF_NAME_INVALID',</span> <span class="pre">1101:</span> <span class="pre">'RNGP_REF_NO_DEF',</span> <span class="pre">1102:</span> <span class="pre">'RNGP_REF_NO_NAME',</span> <span class="pre">1103:</span> <span class="pre">'RNGP_REF_NOT_EMPTY',</span> <span class="pre">1104:</span> <span class="pre">'RNGP_START_CHOICE_AND_INTERLEAVE',</span> <span class="pre">1105:</span> <span class="pre">'RNGP_START_CONTENT',</span> <span class="pre">1106:</span> <span class="pre">'RNGP_START_EMPTY',</span> <span class="pre">1107:</span> <span class="pre">'RNGP_START_MISSING',</span> <span class="pre">1108:</span> <span class="pre">'RNGP_TEXT_EXPECTED',</span> <span class="pre">1109:</span> <span class="pre">'RNGP_TEXT_HAS_CHILD',</span> <span class="pre">1110:</span> <span class="pre">'RNGP_TYPE_MISSING',</span> <span class="pre">1111:</span> <span class="pre">'RNGP_TYPE_NOT_FOUND',</span> <span class="pre">1112:</span> <span class="pre">'RNGP_TYPE_VALUE',</span> <span class="pre">1113:</span> <span class="pre">'RNGP_UNKNOWN_ATTRIBUTE',</span> <span class="pre">1114:</span> <span class="pre">'RNGP_UNKNOWN_COMBINE',</span> <span class="pre">1115:</span> <span class="pre">'RNGP_UNKNOWN_CONSTRUCT',</span> <span class="pre">1116:</span> <span class="pre">'RNGP_UNKNOWN_TYPE_LIB',</span> <span class="pre">1117:</span> <span class="pre">'RNGP_URI_FRAGMENT',</span> <span class="pre">1118:</span> <span class="pre">'RNGP_URI_NOT_ABSOLUTE',</span> <span class="pre">1119:</span> <span class="pre">'RNGP_VALUE_EMPTY',</span> <span class="pre">1120:</span> <span class="pre">'RNGP_VALUE_NO_CONTENT',</span> <span class="pre">1121:</span> <span class="pre">'RNGP_XMLNS_NAME',</span> <span class="pre">1122:</span> <span class="pre">'RNGP_XML_NS',</span> <span class="pre">1200:</span> <span class="pre">'XPATH_EXPRESSION_OK',</span> <span class="pre">1201:</span> <span class="pre">'XPATH_NUMBER_ERROR',</span> <span class="pre">1202:</span> <span class="pre">'XPATH_UNFINISHED_LITERAL_ERROR',</span> <span class="pre">1203:</span> <span class="pre">'XPATH_START_LITERAL_ERROR',</span> <span class="pre">1204:</span> <span class="pre">'XPATH_VARIABLE_REF_ERROR',</span> <span class="pre">1205:</span> <span class="pre">'XPATH_UNDEF_VARIABLE_ERROR',</span> <span class="pre">1206:</span> <span class="pre">'XPATH_INVALID_PREDICATE_ERROR',</span> <span class="pre">1207:</span> <span class="pre">'XPATH_EXPR_ERROR',</span> <span class="pre">1208:</span> <span class="pre">'XPATH_UNCLOSED_ERROR',</span> <span class="pre">1209:</span> <span class="pre">'XPATH_UNKNOWN_FUNC_ERROR',</span> <span class="pre">1210:</span> <span class="pre">'XPATH_INVALID_OPERAND',</span> <span class="pre">1211:</span> <span class="pre">'XPATH_INVALID_TYPE',</span> <span class="pre">1212:</span> <span class="pre">'XPATH_INVALID_ARITY',</span> <span class="pre">1213:</span> <span class="pre">'XPATH_INVALID_CTXT_SIZE',</span> <span class="pre">1214:</span> <span class="pre">'XPATH_INVALID_CTXT_POSITION',</span> <span class="pre">1215:</span> <span class="pre">'XPATH_MEMORY_ERROR',</span> <span class="pre">1216:</span> <span class="pre">'XPTR_SYNTAX_ERROR',</span> <span class="pre">1217:</span> <span class="pre">'XPTR_RESOURCE_ERROR',</span> <span class="pre">1218:</span> <span class="pre">'XPTR_SUB_RESOURCE_ERROR',</span> <span class="pre">1219:</span> <span class="pre">'XPATH_UNDEF_PREFIX_ERROR',</span> <span class="pre">1220:</span> <span class="pre">'XPATH_ENCODING_ERROR',</span> <span class="pre">1221:</span> <span class="pre">'XPATH_INVALID_CHAR_ERROR',</span> <span class="pre">1300:</span> <span class="pre">'TREE_INVALID_HEX',</span> <span class="pre">1301:</span> <span class="pre">'TREE_INVALID_DEC',</span> <span class="pre">1302:</span> <span class="pre">'TREE_UNTERMINATED_ENTITY',</span> <span class="pre">1303:</span> <span class="pre">'TREE_NOT_UTF8',</span> <span class="pre">1400:</span> <span class="pre">'SAVE_NOT_UTF8',</span> <span class="pre">1401:</span> <span class="pre">'SAVE_CHAR_INVALID',</span> <span class="pre">1402:</span> <span class="pre">'SAVE_NO_DOCTYPE',</span> <span class="pre">1403:</span> <span class="pre">'SAVE_UNKNOWN_ENCODING',</span> <span class="pre">1450:</span> <span class="pre">'REGEXP_COMPILE_ERROR',</span> <span class="pre">1500:</span> <span class="pre">'IO_UNKNOWN',</span> <span class="pre">1501:</span> <span class="pre">'IO_EACCES',</span> <span class="pre">1502:</span> <span class="pre">'IO_EAGAIN',</span> <span class="pre">1503:</span> <span class="pre">'IO_EBADF',</span> <span class="pre">1504:</span> <span class="pre">'IO_EBADMSG',</span> <span class="pre">1505:</span> <span class="pre">'IO_EBUSY',</span> <span class="pre">1506:</span> <span class="pre">'IO_ECANCELED',</span> <span class="pre">1507:</span> <span class="pre">'IO_ECHILD',</span> <span class="pre">1508:</span> <span class="pre">'IO_EDEADLK',</span> <span class="pre">1509:</span> <span class="pre">'IO_EDOM',</span> <span class="pre">1510:</span> <span class="pre">'IO_EEXIST',</span> <span class="pre">1511:</span> <span class="pre">'IO_EFAULT',</span> <span class="pre">1512:</span> <span class="pre">'IO_EFBIG',</span> <span class="pre">1513:</span> <span class="pre">'IO_EINPROGRESS',</span> <span class="pre">1514:</span> <span class="pre">'IO_EINTR',</span> <span class="pre">1515:</span> <span class="pre">'IO_EINVAL',</span> <span class="pre">1516:</span> <span class="pre">'IO_EIO',</span> <span class="pre">1517:</span> <span class="pre">'IO_EISDIR',</span> <span class="pre">1518:</span> <span class="pre">'IO_EMFILE',</span> <span class="pre">1519:</span> <span class="pre">'IO_EMLINK',</span> <span class="pre">1520:</span> <span class="pre">'IO_EMSGSIZE',</span> <span class="pre">1521:</span> <span class="pre">'IO_ENAMETOOLONG',</span> <span class="pre">1522:</span> <span class="pre">'IO_ENFILE',</span> <span class="pre">1523:</span> <span class="pre">'IO_ENODEV',</span> <span class="pre">1524:</span> <span class="pre">'IO_ENOENT',</span> <span class="pre">1525:</span> <span class="pre">'IO_ENOEXEC',</span> <span class="pre">1526:</span> <span class="pre">'IO_ENOLCK',</span> <span class="pre">1527:</span> <span class="pre">'IO_ENOMEM',</span> <span class="pre">1528:</span> <span class="pre">'IO_ENOSPC',</span> <span class="pre">1529:</span> <span class="pre">'IO_ENOSYS',</span> <span class="pre">1530:</span> <span class="pre">'IO_ENOTDIR',</span> <span class="pre">1531:</span> <span class="pre">'IO_ENOTEMPTY',</span> <span class="pre">1532:</span> <span class="pre">'IO_ENOTSUP',</span> <span class="pre">1533:</span> <span class="pre">'IO_ENOTTY',</span> <span class="pre">1534:</span> <span class="pre">'IO_ENXIO',</span> <span class="pre">1535:</span> <span class="pre">'IO_EPERM',</span> <span class="pre">1536:</span> <span class="pre">'IO_EPIPE',</span> <span class="pre">1537:</span> <span class="pre">'IO_ERANGE',</span> <span class="pre">1538:</span> <span class="pre">'IO_EROFS',</span> <span class="pre">1539:</span> <span class="pre">'IO_ESPIPE',</span> <span class="pre">1540:</span> <span class="pre">'IO_ESRCH',</span> <span class="pre">1541:</span> <span class="pre">'IO_ETIMEDOUT',</span> <span class="pre">1542:</span> <span class="pre">'IO_EXDEV',</span> <span class="pre">1543:</span> <span class="pre">'IO_NETWORK_ATTEMPT',</span> <span class="pre">1544:</span> <span class="pre">'IO_ENCODER',</span> <span class="pre">1545:</span> <span class="pre">'IO_FLUSH',</span> <span class="pre">1546:</span> <span class="pre">'IO_WRITE',</span> <span class="pre">1547:</span> <span class="pre">'IO_NO_INPUT',</span> <span class="pre">1548:</span> <span class="pre">'IO_BUFFER_FULL',</span> <span class="pre">1549:</span> <span class="pre">'IO_LOAD_ERROR',</span> <span class="pre">1550:</span> <span class="pre">'IO_ENOTSOCK',</span> <span class="pre">1551:</span> <span class="pre">'IO_EISCONN',</span> <span class="pre">1552:</span> <span class="pre">'IO_ECONNREFUSED',</span> <span class="pre">1553:</span> <span class="pre">'IO_ENETUNREACH',</span> <span class="pre">1554:</span> <span class="pre">'IO_EADDRINUSE',</span> <span class="pre">1555:</span> <span class="pre">'IO_EALREADY',</span> <span class="pre">1556:</span> <span class="pre">'IO_EAFNOSUPPORT',</span> <span class="pre">1600:</span> <span class="pre">'XINCLUDE_RECURSION',</span> <span class="pre">1601:</span> <span class="pre">'XINCLUDE_PARSE_VALUE',</span> <span class="pre">1602:</span> <span class="pre">'XINCLUDE_ENTITY_DEF_MISMATCH',</span> <span class="pre">1603:</span> <span class="pre">'XINCLUDE_NO_HREF',</span> <span class="pre">1604:</span> <span class="pre">'XINCLUDE_NO_FALLBACK',</span> <span class="pre">1605:</span> <span class="pre">'XINCLUDE_HREF_URI',</span> <span class="pre">1606:</span> <span class="pre">'XINCLUDE_TEXT_FRAGMENT',</span> <span class="pre">1607:</span> <span class="pre">'XINCLUDE_TEXT_DOCUMENT',</span> <span class="pre">1608:</span> <span class="pre">'XINCLUDE_INVALID_CHAR',</span> <span class="pre">1609:</span> <span class="pre">'XINCLUDE_BUILD_FAILED',</span> <span class="pre">1610:</span> <span class="pre">'XINCLUDE_UNKNOWN_ENCODING',</span> <span class="pre">1611:</span> <span class="pre">'XINCLUDE_MULTIPLE_ROOT',</span> <span class="pre">1612:</span> <span class="pre">'XINCLUDE_XPTR_FAILED',</span> <span class="pre">1613:</span> <span class="pre">'XINCLUDE_XPTR_RESULT',</span> <span class="pre">1614:</span> <span class="pre">'XINCLUDE_INCLUDE_IN_INCLUDE',</span> <span class="pre">1615:</span> <span class="pre">'XINCLUDE_FALLBACKS_IN_INCLUDE',</span> <span class="pre">1616:</span> <span class="pre">'XINCLUDE_FALLBACK_NOT_IN_INCLUDE',</span> <span class="pre">1617:</span> <span class="pre">'XINCLUDE_DEPRECATED_NS',</span> <span class="pre">1618:</span> <span class="pre">'XINCLUDE_FRAGMENT_ID',</span> <span class="pre">1650:</span> <span class="pre">'CATALOG_MISSING_ATTR',</span> <span class="pre">1651:</span> <span class="pre">'CATALOG_ENTRY_BROKEN',</span> <span class="pre">1652:</span> <span class="pre">'CATALOG_PREFER_VALUE',</span> <span class="pre">1653:</span> <span class="pre">'CATALOG_NOT_CATALOG',</span> <span class="pre">1654:</span> <span class="pre">'CATALOG_RECURSION',</span> <span class="pre">1700:</span> <span class="pre">'SCHEMAP_PREFIX_UNDEFINED',</span> <span class="pre">1701:</span> <span class="pre">'SCHEMAP_ATTRFORMDEFAULT_VALUE',</span> <span class="pre">1702:</span> <span class="pre">'SCHEMAP_ATTRGRP_NONAME_NOREF',</span> <span class="pre">1703:</span> <span class="pre">'SCHEMAP_ATTR_NONAME_NOREF',</span> <span class="pre">1704:</span> <span class="pre">'SCHEMAP_COMPLEXTYPE_NONAME_NOREF',</span> <span class="pre">1705:</span> <span class="pre">'SCHEMAP_ELEMFORMDEFAULT_VALUE',</span> <span class="pre">1706:</span> <span class="pre">'SCHEMAP_ELEM_NONAME_NOREF',</span> <span class="pre">1707:</span> <span class="pre">'SCHEMAP_EXTENSION_NO_BASE',</span> <span class="pre">1708:</span> <span class="pre">'SCHEMAP_FACET_NO_VALUE',</span> <span class="pre">1709:</span> <span class="pre">'SCHEMAP_FAILED_BUILD_IMPORT',</span> <span class="pre">1710:</span> <span class="pre">'SCHEMAP_GROUP_NONAME_NOREF',</span> <span class="pre">1711:</span> <span class="pre">'SCHEMAP_IMPORT_NAMESPACE_NOT_URI',</span> <span class="pre">1712:</span> <span class="pre">'SCHEMAP_IMPORT_REDEFINE_NSNAME',</span> <span class="pre">1713:</span> <span class="pre">'SCHEMAP_IMPORT_SCHEMA_NOT_URI',</span> <span class="pre">1714:</span> <span class="pre">'SCHEMAP_INVALID_BOOLEAN',</span> <span class="pre">1715:</span> <span class="pre">'SCHEMAP_INVALID_ENUM',</span> <span class="pre">1716:</span> <span class="pre">'SCHEMAP_INVALID_FACET',</span> <span class="pre">1717:</span> <span class="pre">'SCHEMAP_INVALID_FACET_VALUE',</span> <span class="pre">1718:</span> <span class="pre">'SCHEMAP_INVALID_MAXOCCURS',</span> <span class="pre">1719:</span> <span class="pre">'SCHEMAP_INVALID_MINOCCURS',</span> <span class="pre">1720:</span> <span class="pre">'SCHEMAP_INVALID_REF_AND_SUBTYPE',</span> <span class="pre">1721:</span> <span class="pre">'SCHEMAP_INVALID_WHITE_SPACE',</span> <span class="pre">1722:</span> <span class="pre">'SCHEMAP_NOATTR_NOREF',</span> <span class="pre">1723:</span> <span class="pre">'SCHEMAP_NOTATION_NO_NAME',</span> <span class="pre">1724:</span> <span class="pre">'SCHEMAP_NOTYPE_NOREF',</span> <span class="pre">1725:</span> <span class="pre">'SCHEMAP_REF_AND_SUBTYPE',</span> <span class="pre">1726:</span> <span class="pre">'SCHEMAP_RESTRICTION_NONAME_NOREF',</span> <span class="pre">1727:</span> <span class="pre">'SCHEMAP_SIMPLETYPE_NONAME',</span> <span class="pre">1728:</span> <span class="pre">'SCHEMAP_TYPE_AND_SUBTYPE',</span> <span class="pre">1729:</span> <span class="pre">'SCHEMAP_UNKNOWN_ALL_CHILD',</span> <span class="pre">1730:</span> <span class="pre">'SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD',</span> <span class="pre">1731:</span> <span class="pre">'SCHEMAP_UNKNOWN_ATTR_CHILD',</span> <span class="pre">1732:</span> <span class="pre">'SCHEMAP_UNKNOWN_ATTRGRP_CHILD',</span> <span class="pre">1733:</span> <span class="pre">'SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP',</span> <span class="pre">1734:</span> <span class="pre">'SCHEMAP_UNKNOWN_BASE_TYPE',</span> <span class="pre">1735:</span> <span class="pre">'SCHEMAP_UNKNOWN_CHOICE_CHILD',</span> <span class="pre">1736:</span> <span class="pre">'SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD',</span> <span class="pre">1737:</span> <span class="pre">'SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD',</span> <span class="pre">1738:</span> <span class="pre">'SCHEMAP_UNKNOWN_ELEM_CHILD',</span> <span class="pre">1739:</span> <span class="pre">'SCHEMAP_UNKNOWN_EXTENSION_CHILD',</span> <span class="pre">1740:</span> <span class="pre">'SCHEMAP_UNKNOWN_FACET_CHILD',</span> <span class="pre">1741:</span> <span class="pre">'SCHEMAP_UNKNOWN_FACET_TYPE',</span> <span class="pre">1742:</span> <span class="pre">'SCHEMAP_UNKNOWN_GROUP_CHILD',</span> <span class="pre">1743:</span> <span class="pre">'SCHEMAP_UNKNOWN_IMPORT_CHILD',</span> <span class="pre">1744:</span> <span class="pre">'SCHEMAP_UNKNOWN_LIST_CHILD',</span> <span class="pre">1745:</span> <span class="pre">'SCHEMAP_UNKNOWN_NOTATION_CHILD',</span> <span class="pre">1746:</span> <span class="pre">'SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD',</span> <span class="pre">1747:</span> <span class="pre">'SCHEMAP_UNKNOWN_REF',</span> <span class="pre">1748:</span> <span class="pre">'SCHEMAP_UNKNOWN_RESTRICTION_CHILD',</span> <span class="pre">1749:</span> <span class="pre">'SCHEMAP_UNKNOWN_SCHEMAS_CHILD',</span> <span class="pre">1750:</span> <span class="pre">'SCHEMAP_UNKNOWN_SEQUENCE_CHILD',</span> <span class="pre">1751:</span> <span class="pre">'SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD',</span> <span class="pre">1752:</span> <span class="pre">'SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD',</span> <span class="pre">1753:</span> <span class="pre">'SCHEMAP_UNKNOWN_TYPE',</span> <span class="pre">1754:</span> <span class="pre">'SCHEMAP_UNKNOWN_UNION_CHILD',</span> <span class="pre">1755:</span> <span class="pre">'SCHEMAP_ELEM_DEFAULT_FIXED',</span> <span class="pre">1756:</span> <span class="pre">'SCHEMAP_REGEXP_INVALID',</span> <span class="pre">1757:</span> <span class="pre">'SCHEMAP_FAILED_LOAD',</span> <span class="pre">1758:</span> <span class="pre">'SCHEMAP_NOTHING_TO_PARSE',</span> <span class="pre">1759:</span> <span class="pre">'SCHEMAP_NOROOT',</span> <span class="pre">1760:</span> <span class="pre">'SCHEMAP_REDEFINED_GROUP',</span> <span class="pre">1761:</span> <span class="pre">'SCHEMAP_REDEFINED_TYPE',</span> <span class="pre">1762:</span> <span class="pre">'SCHEMAP_REDEFINED_ELEMENT',</span> <span class="pre">1763:</span> <span class="pre">'SCHEMAP_REDEFINED_ATTRGROUP',</span> <span class="pre">1764:</span> <span class="pre">'SCHEMAP_REDEFINED_ATTR',</span> <span class="pre">1765:</span> <span class="pre">'SCHEMAP_REDEFINED_NOTATION',</span> <span class="pre">1766:</span> <span class="pre">'SCHEMAP_FAILED_PARSE',</span> <span class="pre">1767:</span> <span class="pre">'SCHEMAP_UNKNOWN_PREFIX',</span> <span class="pre">1768:</span> <span class="pre">'SCHEMAP_DEF_AND_PREFIX',</span> <span class="pre">1769:</span> <span class="pre">'SCHEMAP_UNKNOWN_INCLUDE_CHILD',</span> <span class="pre">1770:</span> <span class="pre">'SCHEMAP_INCLUDE_SCHEMA_NOT_URI',</span> <span class="pre">1771:</span> <span class="pre">'SCHEMAP_INCLUDE_SCHEMA_NO_URI',</span> <span class="pre">1772:</span> <span class="pre">'SCHEMAP_NOT_SCHEMA',</span> <span class="pre">1773:</span> <span class="pre">'SCHEMAP_UNKNOWN_MEMBER_TYPE',</span> <span class="pre">1774:</span> <span class="pre">'SCHEMAP_INVALID_ATTR_USE',</span> <span class="pre">1775:</span> <span class="pre">'SCHEMAP_RECURSIVE',</span> <span class="pre">1776:</span> <span class="pre">'SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE',</span> <span class="pre">1777:</span> <span class="pre">'SCHEMAP_INVALID_ATTR_COMBINATION',</span> <span class="pre">1778:</span> <span class="pre">'SCHEMAP_INVALID_ATTR_INLINE_COMBINATION',</span> <span class="pre">1779:</span> <span class="pre">'SCHEMAP_MISSING_SIMPLETYPE_CHILD',</span> <span class="pre">1780:</span> <span class="pre">'SCHEMAP_INVALID_ATTR_NAME',</span> <span class="pre">1781:</span> <span class="pre">'SCHEMAP_REF_AND_CONTENT',</span> <span class="pre">1782:</span> <span class="pre">'SCHEMAP_CT_PROPS_CORRECT_1',</span> <span class="pre">1783:</span> <span class="pre">'SCHEMAP_CT_PROPS_CORRECT_2',</span> <span class="pre">1784:</span> <span class="pre">'SCHEMAP_CT_PROPS_CORRECT_3',</span> <span class="pre">1785:</span> <span class="pre">'SCHEMAP_CT_PROPS_CORRECT_4',</span> <span class="pre">1786:</span> <span class="pre">'SCHEMAP_CT_PROPS_CORRECT_5',</span> <span class="pre">1787:</span> <span class="pre">'SCHEMAP_DERIVATION_OK_RESTRICTION_1',</span> <span class="pre">1788:</span> <span class="pre">'SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1',</span> <span class="pre">1789:</span> <span class="pre">'SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2',</span> <span class="pre">1790:</span> <span class="pre">'SCHEMAP_DERIVATION_OK_RESTRICTION_2_2',</span> <span class="pre">1791:</span> <span class="pre">'SCHEMAP_DERIVATION_OK_RESTRICTION_3',</span> <span class="pre">1792:</span> <span class="pre">'SCHEMAP_WILDCARD_INVALID_NS_MEMBER',</span> <span class="pre">1793:</span> <span class="pre">'SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE',</span> <span class="pre">1794:</span> <span class="pre">'SCHEMAP_UNION_NOT_EXPRESSIBLE',</span> <span class="pre">1795:</span> <span class="pre">'SCHEMAP_SRC_IMPORT_3_1',</span> <span class="pre">1796:</span> <span class="pre">'SCHEMAP_SRC_IMPORT_3_2',</span> <span class="pre">1797:</span> <span class="pre">'SCHEMAP_DERIVATION_OK_RESTRICTION_4_1',</span> <span class="pre">1798:</span> <span class="pre">'SCHEMAP_DERIVATION_OK_RESTRICTION_4_2',</span> <span class="pre">1799:</span> <span class="pre">'SCHEMAP_DERIVATION_OK_RESTRICTION_4_3',</span> <span class="pre">1800:</span> <span class="pre">'SCHEMAP_COS_CT_EXTENDS_1_3',</span> <span class="pre">1801:</span> <span class="pre">'SCHEMAV_NOROOT',</span> <span class="pre">1802:</span> <span class="pre">'SCHEMAV_UNDECLAREDELEM',</span> <span class="pre">1803:</span> <span class="pre">'SCHEMAV_NOTTOPLEVEL',</span> <span class="pre">1804:</span> <span class="pre">'SCHEMAV_MISSING',</span> <span class="pre">1805:</span> <span class="pre">'SCHEMAV_WRONGELEM',</span> <span class="pre">1806:</span> <span class="pre">'SCHEMAV_NOTYPE',</span> <span class="pre">1807:</span> <span class="pre">'SCHEMAV_NOROLLBACK',</span> <span class="pre">1808:</span> <span class="pre">'SCHEMAV_ISABSTRACT',</span> <span class="pre">1809:</span> <span class="pre">'SCHEMAV_NOTEMPTY',</span> <span class="pre">1810:</span> <span class="pre">'SCHEMAV_ELEMCONT',</span> <span class="pre">1811:</span> <span class="pre">'SCHEMAV_HAVEDEFAULT',</span> <span class="pre">1812:</span> <span class="pre">'SCHEMAV_NOTNILLABLE',</span> <span class="pre">1813:</span> <span class="pre">'SCHEMAV_EXTRACONTENT',</span> <span class="pre">1814:</span> <span class="pre">'SCHEMAV_INVALIDATTR',</span> <span class="pre">1815:</span> <span class="pre">'SCHEMAV_INVALIDELEM',</span> <span class="pre">1816:</span> <span class="pre">'SCHEMAV_NOTDETERMINIST',</span> <span class="pre">1817:</span> <span class="pre">'SCHEMAV_CONSTRUCT',</span> <span class="pre">1818:</span> <span class="pre">'SCHEMAV_INTERNAL',</span> <span class="pre">1819:</span> <span class="pre">'SCHEMAV_NOTSIMPLE',</span> <span class="pre">1820:</span> <span class="pre">'SCHEMAV_ATTRUNKNOWN',</span> <span class="pre">1821:</span> <span class="pre">'SCHEMAV_ATTRINVALID',</span> <span class="pre">1822:</span> <span class="pre">'SCHEMAV_VALUE',</span> <span class="pre">1823:</span> <span class="pre">'SCHEMAV_FACET',</span> <span class="pre">1824:</span> <span class="pre">'SCHEMAV_CVC_DATATYPE_VALID_1_2_1',</span> <span class="pre">1825:</span> <span class="pre">'SCHEMAV_CVC_DATATYPE_VALID_1_2_2',</span> <span class="pre">1826:</span> <span class="pre">'SCHEMAV_CVC_DATATYPE_VALID_1_2_3',</span> <span class="pre">1827:</span> <span class="pre">'SCHEMAV_CVC_TYPE_3_1_1',</span> <span class="pre">1828:</span> <span class="pre">'SCHEMAV_CVC_TYPE_3_1_2',</span> <span class="pre">1829:</span> <span class="pre">'SCHEMAV_CVC_FACET_VALID',</span> <span class="pre">1830:</span> <span class="pre">'SCHEMAV_CVC_LENGTH_VALID',</span> <span class="pre">1831:</span> <span class="pre">'SCHEMAV_CVC_MINLENGTH_VALID',</span> <span class="pre">1832:</span> <span class="pre">'SCHEMAV_CVC_MAXLENGTH_VALID',</span> <span class="pre">1833:</span> <span class="pre">'SCHEMAV_CVC_MININCLUSIVE_VALID',</span> <span class="pre">1834:</span> <span class="pre">'SCHEMAV_CVC_MAXINCLUSIVE_VALID',</span> <span class="pre">1835:</span> <span class="pre">'SCHEMAV_CVC_MINEXCLUSIVE_VALID',</span> <span class="pre">1836:</span> <span class="pre">'SCHEMAV_CVC_MAXEXCLUSIVE_VALID',</span> <span class="pre">1837:</span> <span class="pre">'SCHEMAV_CVC_TOTALDIGITS_VALID',</span> <span class="pre">1838:</span> <span class="pre">'SCHEMAV_CVC_FRACTIONDIGITS_VALID',</span> <span class="pre">1839:</span> <span class="pre">'SCHEMAV_CVC_PATTERN_VALID',</span> <span class="pre">1840:</span> <span class="pre">'SCHEMAV_CVC_ENUMERATION_VALID',</span> <span class="pre">1841:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_2_1',</span> <span class="pre">1842:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_2_2',</span> <span class="pre">1843:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_2_3',</span> <span class="pre">1844:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_2_4',</span> <span class="pre">1845:</span> <span class="pre">'SCHEMAV_CVC_ELT_1',</span> <span class="pre">1846:</span> <span class="pre">'SCHEMAV_CVC_ELT_2',</span> <span class="pre">1847:</span> <span class="pre">'SCHEMAV_CVC_ELT_3_1',</span> <span class="pre">1848:</span> <span class="pre">'SCHEMAV_CVC_ELT_3_2_1',</span> <span class="pre">1849:</span> <span class="pre">'SCHEMAV_CVC_ELT_3_2_2',</span> <span class="pre">1850:</span> <span class="pre">'SCHEMAV_CVC_ELT_4_1',</span> <span class="pre">1851:</span> <span class="pre">'SCHEMAV_CVC_ELT_4_2',</span> <span class="pre">1852:</span> <span class="pre">'SCHEMAV_CVC_ELT_4_3',</span> <span class="pre">1853:</span> <span class="pre">'SCHEMAV_CVC_ELT_5_1_1',</span> <span class="pre">1854:</span> <span class="pre">'SCHEMAV_CVC_ELT_5_1_2',</span> <span class="pre">1855:</span> <span class="pre">'SCHEMAV_CVC_ELT_5_2_1',</span> <span class="pre">1856:</span> <span class="pre">'SCHEMAV_CVC_ELT_5_2_2_1',</span> <span class="pre">1857:</span> <span class="pre">'SCHEMAV_CVC_ELT_5_2_2_2_1',</span> <span class="pre">1858:</span> <span class="pre">'SCHEMAV_CVC_ELT_5_2_2_2_2',</span> <span class="pre">1859:</span> <span class="pre">'SCHEMAV_CVC_ELT_6',</span> <span class="pre">1860:</span> <span class="pre">'SCHEMAV_CVC_ELT_7',</span> <span class="pre">1861:</span> <span class="pre">'SCHEMAV_CVC_ATTRIBUTE_1',</span> <span class="pre">1862:</span> <span class="pre">'SCHEMAV_CVC_ATTRIBUTE_2',</span> <span class="pre">1863:</span> <span class="pre">'SCHEMAV_CVC_ATTRIBUTE_3',</span> <span class="pre">1864:</span> <span class="pre">'SCHEMAV_CVC_ATTRIBUTE_4',</span> <span class="pre">1865:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_3_1',</span> <span class="pre">1866:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_3_2_1',</span> <span class="pre">1867:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_3_2_2',</span> <span class="pre">1868:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_4',</span> <span class="pre">1869:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_5_1',</span> <span class="pre">1870:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_5_2',</span> <span class="pre">1871:</span> <span class="pre">'SCHEMAV_ELEMENT_CONTENT',</span> <span class="pre">1872:</span> <span class="pre">'SCHEMAV_DOCUMENT_ELEMENT_MISSING',</span> <span class="pre">1873:</span> <span class="pre">'SCHEMAV_CVC_COMPLEX_TYPE_1',</span> <span class="pre">1874:</span> <span class="pre">'SCHEMAV_CVC_AU',</span> <span class="pre">1875:</span> <span class="pre">'SCHEMAV_CVC_TYPE_1',</span> <span class="pre">1876:</span> <span class="pre">'SCHEMAV_CVC_TYPE_2',</span> <span class="pre">1877:</span> <span class="pre">'SCHEMAV_CVC_IDC',</span> <span class="pre">1878:</span> <span class="pre">'SCHEMAV_CVC_WILDCARD',</span> <span class="pre">1879:</span> <span class="pre">'SCHEMAV_MISC',</span> <span class="pre">1900:</span> <span class="pre">'XPTR_UNKNOWN_SCHEME',</span> <span class="pre">1901:</span> <span class="pre">'XPTR_CHILDSEQ_START',</span> <span class="pre">1902:</span> <span class="pre">'XPTR_EVAL_FAILED',</span> <span class="pre">1903:</span> <span class="pre">'XPTR_EXTRA_OBJECTS',</span> <span class="pre">1950:</span> <span class="pre">'C14N_CREATE_CTXT',</span> <span class="pre">1951:</span> <span class="pre">'C14N_REQUIRES_UTF8',</span> <span class="pre">1952:</span> <span class="pre">'C14N_CREATE_STACK',</span> <span class="pre">1953:</span> <span class="pre">'C14N_INVALID_NODE',</span> <span class="pre">1954:</span> <span class="pre">'C14N_UNKNOW_NODE',</span> <span class="pre">1955:</span> <span class="pre">'C14N_RELATIVE_NAMESPACE',</span> <span class="pre">2000:</span> <span class="pre">'FTP_PASV_ANSWER',</span> <span class="pre">2001:</span> <span class="pre">'FTP_EPSV_ANSWER',</span> <span class="pre">2002:</span> <span class="pre">'FTP_ACCNT',</span> <span class="pre">2003:</span> <span class="pre">'FTP_URL_SYNTAX',</span> <span class="pre">2020:</span> <span class="pre">'HTTP_URL_SYNTAX',</span> <span class="pre">2021:</span> <span class="pre">'HTTP_USE_IP',</span> <span class="pre">2022:</span> <span class="pre">'HTTP_UNKNOWN_HOST',</span> <span class="pre">3000:</span> <span class="pre">'SCHEMAP_SRC_SIMPLE_TYPE_1',</span> <span class="pre">3001:</span> <span class="pre">'SCHEMAP_SRC_SIMPLE_TYPE_2',</span> <span class="pre">3002:</span> <span class="pre">'SCHEMAP_SRC_SIMPLE_TYPE_3',</span> <span class="pre">3003:</span> <span class="pre">'SCHEMAP_SRC_SIMPLE_TYPE_4',</span> <span class="pre">3004:</span> <span class="pre">'SCHEMAP_SRC_RESOLVE',</span> <span class="pre">3005:</span> <span class="pre">'SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE',</span> <span class="pre">3006:</span> <span class="pre">'SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE',</span> <span class="pre">3007:</span> <span class="pre">'SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES',</span> <span class="pre">3008:</span> <span class="pre">'SCHEMAP_ST_PROPS_CORRECT_1',</span> <span class="pre">3009:</span> <span class="pre">'SCHEMAP_ST_PROPS_CORRECT_2',</span> <span class="pre">3010:</span> <span class="pre">'SCHEMAP_ST_PROPS_CORRECT_3',</span> <span class="pre">3011:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_1_1',</span> <span class="pre">3012:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_1_2',</span> <span class="pre">3013:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_1_3_1',</span> <span class="pre">3014:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_1_3_2',</span> <span class="pre">3015:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_2_1',</span> <span class="pre">3016:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_2_3_1_1',</span> <span class="pre">3017:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_2_3_1_2',</span> <span class="pre">3018:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_2_3_2_1',</span> <span class="pre">3019:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_2_3_2_2',</span> <span class="pre">3020:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_2_3_2_3',</span> <span class="pre">3021:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_2_3_2_4',</span> <span class="pre">3022:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_2_3_2_5',</span> <span class="pre">3023:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_3_1',</span> <span class="pre">3024:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_3_3_1',</span> <span class="pre">3025:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_3_3_1_2',</span> <span class="pre">3026:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_3_3_2_2',</span> <span class="pre">3027:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_3_3_2_1',</span> <span class="pre">3028:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_3_3_2_3',</span> <span class="pre">3029:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_3_3_2_4',</span> <span class="pre">3030:</span> <span class="pre">'SCHEMAP_COS_ST_RESTRICTS_3_3_2_5',</span> <span class="pre">3031:</span> <span class="pre">'SCHEMAP_COS_ST_DERIVED_OK_2_1',</span> <span class="pre">3032:</span> <span class="pre">'SCHEMAP_COS_ST_DERIVED_OK_2_2',</span> <span class="pre">3033:</span> <span class="pre">'SCHEMAP_S4S_ELEM_NOT_ALLOWED',</span> <span class="pre">3034:</span> <span class="pre">'SCHEMAP_S4S_ELEM_MISSING',</span> <span class="pre">3035:</span> <span class="pre">'SCHEMAP_S4S_ATTR_NOT_ALLOWED',</span> <span class="pre">3036:</span> <span class="pre">'SCHEMAP_S4S_ATTR_MISSING',</span> <span class="pre">3037:</span> <span class="pre">'SCHEMAP_S4S_ATTR_INVALID_VALUE',</span> <span class="pre">3038:</span> <span class="pre">'SCHEMAP_SRC_ELEMENT_1',</span> <span class="pre">3039:</span> <span class="pre">'SCHEMAP_SRC_ELEMENT_2_1',</span> <span class="pre">3040:</span> <span class="pre">'SCHEMAP_SRC_ELEMENT_2_2',</span> <span class="pre">3041:</span> <span class="pre">'SCHEMAP_SRC_ELEMENT_3',</span> <span class="pre">3042:</span> <span class="pre">'SCHEMAP_P_PROPS_CORRECT_1',</span> <span class="pre">3043:</span> <span class="pre">'SCHEMAP_P_PROPS_CORRECT_2_1',</span> <span class="pre">3044:</span> <span class="pre">'SCHEMAP_P_PROPS_CORRECT_2_2',</span> <span class="pre">3045:</span> <span class="pre">'SCHEMAP_E_PROPS_CORRECT_2',</span> <span class="pre">3046:</span> <span class="pre">'SCHEMAP_E_PROPS_CORRECT_3',</span> <span class="pre">3047:</span> <span class="pre">'SCHEMAP_E_PROPS_CORRECT_4',</span> <span class="pre">3048:</span> <span class="pre">'SCHEMAP_E_PROPS_CORRECT_5',</span> <span class="pre">3049:</span> <span class="pre">'SCHEMAP_E_PROPS_CORRECT_6',</span> <span class="pre">3050:</span> <span class="pre">'SCHEMAP_SRC_INCLUDE',</span> <span class="pre">3051:</span> <span class="pre">'SCHEMAP_SRC_ATTRIBUTE_1',</span> <span class="pre">3052:</span> <span class="pre">'SCHEMAP_SRC_ATTRIBUTE_2',</span> <span class="pre">3053:</span> <span class="pre">'SCHEMAP_SRC_ATTRIBUTE_3_1',</span> <span class="pre">3054:</span> <span class="pre">'SCHEMAP_SRC_ATTRIBUTE_3_2',</span> <span class="pre">3055:</span> <span class="pre">'SCHEMAP_SRC_ATTRIBUTE_4',</span> <span class="pre">3056:</span> <span class="pre">'SCHEMAP_NO_XMLNS',</span> <span class="pre">3057:</span> <span class="pre">'SCHEMAP_NO_XSI',</span> <span class="pre">3058:</span> <span class="pre">'SCHEMAP_COS_VALID_DEFAULT_1',</span> <span class="pre">3059:</span> <span class="pre">'SCHEMAP_COS_VALID_DEFAULT_2_1',</span> <span class="pre">3060:</span> <span class="pre">'SCHEMAP_COS_VALID_DEFAULT_2_2_1',</span> <span class="pre">3061:</span> <span class="pre">'SCHEMAP_COS_VALID_DEFAULT_2_2_2',</span> <span class="pre">3062:</span> <span class="pre">'SCHEMAP_CVC_SIMPLE_TYPE',</span> <span class="pre">3063:</span> <span class="pre">'SCHEMAP_COS_CT_EXTENDS_1_1',</span> <span class="pre">3064:</span> <span class="pre">'SCHEMAP_SRC_IMPORT_1_1',</span> <span class="pre">3065:</span> <span class="pre">'SCHEMAP_SRC_IMPORT_1_2',</span> <span class="pre">3066:</span> <span class="pre">'SCHEMAP_SRC_IMPORT_2',</span> <span class="pre">3067:</span> <span class="pre">'SCHEMAP_SRC_IMPORT_2_1',</span> <span class="pre">3068:</span> <span class="pre">'SCHEMAP_SRC_IMPORT_2_2',</span> <span class="pre">3069:</span> <span class="pre">'SCHEMAP_INTERNAL',</span> <span class="pre">3070:</span> <span class="pre">'SCHEMAP_NOT_DETERMINISTIC',</span> <span class="pre">3071:</span> <span class="pre">'SCHEMAP_SRC_ATTRIBUTE_GROUP_1',</span> <span class="pre">3072:</span> <span class="pre">'SCHEMAP_SRC_ATTRIBUTE_GROUP_2',</span> <span class="pre">3073:</span> <span class="pre">'SCHEMAP_SRC_ATTRIBUTE_GROUP_3',</span> <span class="pre">3074:</span> <span class="pre">'SCHEMAP_MG_PROPS_CORRECT_1',</span> <span class="pre">3075:</span> <span class="pre">'SCHEMAP_MG_PROPS_CORRECT_2',</span> <span class="pre">3076:</span> <span class="pre">'SCHEMAP_SRC_CT_1',</span> <span class="pre">3077:</span> <span class="pre">'SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3',</span> <span class="pre">3078:</span> <span class="pre">'SCHEMAP_AU_PROPS_CORRECT_2',</span> <span class="pre">3079:</span> <span class="pre">'SCHEMAP_A_PROPS_CORRECT_2',</span> <span class="pre">3080:</span> <span class="pre">'SCHEMAP_C_PROPS_CORRECT',</span> <span class="pre">3081:</span> <span class="pre">'SCHEMAP_SRC_REDEFINE',</span> <span class="pre">3082:</span> <span class="pre">'SCHEMAP_SRC_IMPORT',</span> <span class="pre">3083:</span> <span class="pre">'SCHEMAP_WARN_SKIP_SCHEMA',</span> <span class="pre">3084:</span> <span class="pre">'SCHEMAP_WARN_UNLOCATED_SCHEMA',</span> <span class="pre">3085:</span> <span class="pre">'SCHEMAP_WARN_ATTR_REDECL_PROH',</span> <span class="pre">3086:</span> <span class="pre">'SCHEMAP_WARN_ATTR_POINTLESS_PROH',</span> <span class="pre">3087:</span> <span class="pre">'SCHEMAP_AG_PROPS_CORRECT',</span> <span class="pre">3088:</span> <span class="pre">'SCHEMAP_COS_CT_EXTENDS_1_2',</span> <span class="pre">3089:</span> <span class="pre">'SCHEMAP_AU_PROPS_CORRECT',</span> <span class="pre">3090:</span> <span class="pre">'SCHEMAP_A_PROPS_CORRECT_3',</span> <span class="pre">3091:</span> <span class="pre">'SCHEMAP_COS_ALL_LIMITED',</span> <span class="pre">4000:</span> <span class="pre">'SCHEMATRONV_ASSERT',</span> <span class="pre">4001:</span> <span class="pre">'SCHEMATRONV_REPORT',</span> <span class="pre">4900:</span> <span class="pre">'MODULE_OPEN',</span> <span class="pre">4901:</span> <span class="pre">'MODULE_CLOSE',</span> <span class="pre">5000:</span> <span class="pre">'CHECK_FOUND_ELEMENT',</span> <span class="pre">5001:</span> <span class="pre">'CHECK_FOUND_ATTRIBUTE',</span> <span class="pre">5002:</span> <span class="pre">'CHECK_FOUND_TEXT',</span> <span class="pre">5003:</span> <span class="pre">'CHECK_FOUND_CDATA',</span> <span class="pre">5004:</span> <span class="pre">'CHECK_FOUND_ENTITYREF',</span> <span class="pre">5005:</span> <span class="pre">'CHECK_FOUND_ENTITY',</span> <span class="pre">5006:</span> <span class="pre">'CHECK_FOUND_PI',</span> <span class="pre">5007:</span> <span class="pre">'CHECK_FOUND_COMMENT',</span> <span class="pre">5008:</span> <span class="pre">'CHECK_FOUND_DOCTYPE',</span> <span class="pre">5009:</span> <span class="pre">'CHECK_FOUND_FRAGMENT',</span> <span class="pre">5010:</span> <span class="pre">'CHECK_FOUND_NOTATION',</span> <span class="pre">5011:</span> <span class="pre">'CHECK_UNKNOWN_NODE',</span> <span class="pre">5012:</span> <span class="pre">'CHECK_ENTITY_TYPE',</span> <span class="pre">5013:</span> <span class="pre">'CHECK_NO_PARENT',</span> <span class="pre">5014:</span> <span class="pre">'CHECK_NO_DOC',</span> <span class="pre">5015:</span> <span class="pre">'CHECK_NO_NAME',</span> <span class="pre">5016:</span> <span class="pre">'CHECK_NO_ELEM',</span> <span class="pre">5017:</span> <span class="pre">'CHECK_WRONG_DOC',</span> <span class="pre">5018:</span> <span class="pre">'CHECK_NO_PREV',</span> <span class="pre">5019:</span> <span class="pre">'CHECK_WRONG_PREV',</span> <span class="pre">5020:</span> <span class="pre">'CHECK_NO_NEXT',</span> <span class="pre">5021:</span> <span class="pre">'CHECK_WRONG_NEXT',</span> <span class="pre">5022:</span> <span class="pre">'CHECK_NOT_DTD',</span> <span class="pre">5023:</span> <span class="pre">'CHECK_NOT_ATTR',</span> <span class="pre">5024:</span> <span class="pre">'CHECK_NOT_ATTR_DECL',</span> <span class="pre">5025:</span> <span class="pre">'CHECK_NOT_ELEM_DECL',</span> <span class="pre">5026:</span> <span class="pre">'CHECK_NOT_ENTITY_DECL',</span> <span class="pre">5027:</span> <span class="pre">'CHECK_NOT_NS_DECL',</span> <span class="pre">5028:</span> <span class="pre">'CHECK_NO_HREF',</span> <span class="pre">5029:</span> <span class="pre">'CHECK_WRONG_PARENT',</span> <span class="pre">5030:</span> <span class="pre">'CHECK_NS_SCOPE',</span> <span class="pre">5031:</span> <span class="pre">'CHECK_NS_ANCESTOR',</span> <span class="pre">5032:</span> <span class="pre">'CHECK_NOT_UTF8',</span> <span class="pre">5033:</span> <span class="pre">'CHECK_NO_DICT',</span> <span class="pre">5034:</span> <span class="pre">'CHECK_NOT_NCNAME',</span> <span class="pre">5035:</span> <span class="pre">'CHECK_OUTSIDE_DICT',</span> <span class="pre">5036:</span> <span class="pre">'CHECK_WRONG_NAME',</span> <span class="pre">5037:</span> <span class="pre">'CHECK_NAME_NOT_NULL',</span> <span class="pre">6000:</span> <span class="pre">'I18N_NO_NAME',</span> <span class="pre">6001:</span> <span class="pre">'I18N_NO_HANDLER',</span> <span class="pre">6002:</span> <span class="pre">'I18N_EXCESS_HANDLER',</span> <span class="pre">6003:</span> <span class="pre">'I18N_CONV_FAILED',</span> <span class="pre">6004:</span> <span class="pre">'I18N_NO_OUTPUT',</span> <span class="pre">7000:</span> <span class="pre">'BUF_OVERFLOW'}</span></em><a class="headerlink" href="#lxml.etree.ErrorTypes._names" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.FallbackElementClassLookup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">FallbackElementClassLookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">fallback</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.FallbackElementClassLookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.FallbackElementClassLookup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">FallbackElementClassLookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fallback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.FallbackElementClassLookup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.ElementClassLookup" title="lxml.etree.ElementClassLookup"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.ElementClassLookup</span></code></a></p>
<p>Superclass of Element class lookups with additional fallback.</p>
<dl class="py method">
-<dt id="lxml.etree.FallbackElementClassLookup.set_fallback">
-<code class="sig-name descname">set_fallback</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">lookup</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.FallbackElementClassLookup.set_fallback" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.FallbackElementClassLookup.set_fallback">
+<span class="sig-name descname"><span class="pre">set_fallback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lookup</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.FallbackElementClassLookup.set_fallback" title="Permalink to this definition"></a></dt>
<dd><p>Sets the fallback scheme for this lookup method.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.FallbackElementClassLookup.fallback">
-<code class="sig-name descname">fallback</code><a class="headerlink" href="#lxml.etree.FallbackElementClassLookup.fallback" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.FallbackElementClassLookup.fallback">
+<span class="sig-name descname"><span class="pre">fallback</span></span><a class="headerlink" href="#lxml.etree.FallbackElementClassLookup.fallback" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.HTMLParser">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">HTMLParser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">remove_blank_text</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">remove_comments</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">remove_pis</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">strip_cdata</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">no_network</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">target</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">schema</span><span class="p">:</span> <span class="n"><a class="reference internal" href="#lxml.etree.XMLSchema" title="lxml.etree.XMLSchema">XMLSchema</a></span> <span class="o">=</span> <span class="default_value">None</span></em>, <em class="sig-param"><span class="n">recover</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">compact</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">collect_ids</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">huge_tree</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.HTMLParser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.HTMLParser">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">HTMLParser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_blank_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_comments</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_pis</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strip_cdata</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_network</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">schema</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><a class="reference internal" href="#lxml.etree.XMLSchema" title="lxml.etree.XMLSchema"><span class="pre">XMLSchema</span></a></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">recover</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compact</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">collect_ids</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">huge_tree</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.HTMLParser" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._FeedParser" title="lxml.etree._FeedParser"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._FeedParser</span></code></a></p>
<p>The HTML parser.</p>
<p>This parser allows reading HTML into a normal XML tree. By
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.HTMLPullParser">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">HTMLPullParser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">events</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.HTMLPullParser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.HTMLPullParser">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">HTMLPullParser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">events</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.HTMLPullParser" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.HTMLParser" title="lxml.etree.HTMLParser"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.HTMLParser</span></code></a></p>
<p>HTML parser that collects parse events in an iterator.</p>
<p>The collected events are the same as for iterparse(), but the
<p>To support loading external dependencies relative to the input
source, you can pass the <code class="docutils literal notranslate"><span class="pre">base_url</span></code>.</p>
<dl class="py method">
-<dt id="lxml.etree.HTMLPullParser.read_events">
-<code class="sig-name descname">read_events</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.HTMLPullParser.read_events" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.HTMLPullParser.read_events">
+<span class="sig-name descname"><span class="pre">read_events</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.HTMLPullParser.read_events" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.PIBase">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">PIBase</code><a class="headerlink" href="#lxml.etree.PIBase" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.PIBase">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">PIBase</span></span><a class="headerlink" href="#lxml.etree.PIBase" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._ProcessingInstruction" title="lxml.etree._ProcessingInstruction"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._ProcessingInstruction</span></code></a></p>
<p>All custom Processing Instruction classes must inherit from this one.</p>
<p>To create an XML ProcessingInstruction instance, use the <code class="docutils literal notranslate"><span class="pre">PI()</span></code>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.ParserBasedElementClassLookup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ParserBasedElementClassLookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">fallback</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ParserBasedElementClassLookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ParserBasedElementClassLookup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ParserBasedElementClassLookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fallback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ParserBasedElementClassLookup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.FallbackElementClassLookup" title="lxml.etree.FallbackElementClassLookup"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.FallbackElementClassLookup</span></code></a></p>
<p>Element class lookup based on the XML parser.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.PyErrorLog">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">PyErrorLog</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">logger_name</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">logger</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PyErrorLog" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.PyErrorLog">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">PyErrorLog</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">logger_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">logger</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PyErrorLog" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._BaseErrorLog" title="lxml.etree._BaseErrorLog"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._BaseErrorLog</span></code></a></p>
<p>A global error log that connects to the Python stdlib logging package.</p>
<p>The constructor accepts an optional logger name or a readily
object and calls <code class="docutils literal notranslate"><span class="pre">self.log(log_entry,</span> <span class="pre">format_string,</span> <span class="pre">arg1,</span> <span class="pre">arg2,</span> <span class="pre">...)</span></code>
with appropriate data.</p>
<dl class="py method">
-<dt id="lxml.etree.PyErrorLog.copy">
-<code class="sig-name descname">copy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PyErrorLog.copy" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.PyErrorLog.copy">
+<span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PyErrorLog.copy" title="Permalink to this definition"></a></dt>
<dd><p>Dummy method that returns an empty error log.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.PyErrorLog.log">
-<code class="sig-name descname">log</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">log_entry</span></em>, <em class="sig-param"><span class="n">message</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PyErrorLog.log" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.PyErrorLog.log">
+<span class="sig-name descname"><span class="pre">log</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">log_entry</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">message</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PyErrorLog.log" title="Permalink to this definition"></a></dt>
<dd><p>Called by the .receive() method to log a _LogEntry instance to
the Python logging system. This handles the error level
mapping.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.PyErrorLog.receive">
-<code class="sig-name descname">receive</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">log_entry</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PyErrorLog.receive" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.PyErrorLog.receive">
+<span class="sig-name descname"><span class="pre">receive</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">log_entry</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PyErrorLog.receive" title="Permalink to this definition"></a></dt>
<dd><p>Receive a _LogEntry instance from the logging system. Calls
the .log() method with appropriate parameters:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">log_entry</span><span class="p">,</span> <span class="nb">repr</span><span class="p">(</span><span class="n">log_entry</span><span class="p">))</span>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.PyErrorLog.level_map">
-<code class="sig-name descname">level_map</code><a class="headerlink" href="#lxml.etree.PyErrorLog.level_map" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.PyErrorLog.level_map">
+<span class="sig-name descname"><span class="pre">level_map</span></span><a class="headerlink" href="#lxml.etree.PyErrorLog.level_map" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.PythonElementClassLookup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">PythonElementClassLookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">fallback</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PythonElementClassLookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.PythonElementClassLookup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">PythonElementClassLookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fallback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PythonElementClassLookup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.FallbackElementClassLookup" title="lxml.etree.FallbackElementClassLookup"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.FallbackElementClassLookup</span></code></a></p>
<p>Element class lookup based on a subclass method.</p>
<p>This class lookup scheme allows access to the entire XML tree in
iteration methods).</p>
<p>See <a class="reference external" href="https://lxml.de/element_classes.html">https://lxml.de/element_classes.html</a></p>
<dl class="py method">
-<dt id="lxml.etree.PythonElementClassLookup.lookup">
-<code class="sig-name descname">lookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">doc</span></em>, <em class="sig-param"><span class="n">element</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PythonElementClassLookup.lookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.PythonElementClassLookup.lookup">
+<span class="sig-name descname"><span class="pre">lookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">doc</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PythonElementClassLookup.lookup" title="Permalink to this definition"></a></dt>
<dd><p>Override this method to implement your own lookup scheme.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.QName">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">QName</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text_or_uri_or_element</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.QName" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.QName">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">QName</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text_or_uri_or_element</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.QName" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>QName wrapper for qualified XML names.</p>
<p>Pass a tag name by itself or a namespace URI and a tag name to
languages like SOAP or XML-Schema that use prefixed tag names in
their text content.</p>
<dl class="py attribute">
-<dt id="lxml.etree.QName.localname">
-<code class="sig-name descname">localname</code><a class="headerlink" href="#lxml.etree.QName.localname" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.QName.localname">
+<span class="sig-name descname"><span class="pre">localname</span></span><a class="headerlink" href="#lxml.etree.QName.localname" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.QName.namespace">
-<code class="sig-name descname">namespace</code><a class="headerlink" href="#lxml.etree.QName.namespace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.QName.namespace">
+<span class="sig-name descname"><span class="pre">namespace</span></span><a class="headerlink" href="#lxml.etree.QName.namespace" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.QName.text">
-<code class="sig-name descname">text</code><a class="headerlink" href="#lxml.etree.QName.text" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.QName.text">
+<span class="sig-name descname"><span class="pre">text</span></span><a class="headerlink" href="#lxml.etree.QName.text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.RelaxNG">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">RelaxNG</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">etree</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">file</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.RelaxNG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNG">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">RelaxNG</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">etree</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.RelaxNG" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._Validator" title="lxml.etree._Validator"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._Validator</span></code></a></p>
<p>Turn a document into a Relax NG validator.</p>
<p>Either pass a schema as Element or ElementTree, or pass a file or
filename through the <code class="docutils literal notranslate"><span class="pre">file</span></code> keyword argument.</p>
<dl class="py method">
-<dt id="lxml.etree.RelaxNG.from_rnc_string">
-<em class="property">classmethod </em><code class="sig-name descname">from_rnc_string</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">src</span></em>, <em class="sig-param"><span class="n">base_url</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.RelaxNG.from_rnc_string" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNG.from_rnc_string">
+<em class="property"><span class="pre">classmethod</span> </em><span class="sig-name descname"><span class="pre">from_rnc_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">src</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.RelaxNG.from_rnc_string" title="Permalink to this definition"></a></dt>
<dd><p>Parse a RelaxNG schema in compact syntax from a text string</p>
<p>Requires the rnc2rng package to be installed.</p>
<p>Passing the source URL or file path of the source as ‘base_url’
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.RelaxNGErrorTypes">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">RelaxNGErrorTypes</code><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">RelaxNGErrorTypes</span></span><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Libxml2 RelaxNG error types</p>
<dl class="py method">
-<dt id="lxml.etree.RelaxNGErrorTypes._getName">
-<code class="sig-name descname">_getName</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">/</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes._getName" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes._getName">
+<span class="sig-name descname"><span class="pre">_getName</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">/</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes._getName" title="Permalink to this definition"></a></dt>
<dd><p>Return the value for key if key is in the dictionary, else default.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTREXTRANS">
-<code class="sig-name descname">RELAXNG_ERR_ATTREXTRANS</code><em class="property"> = 20</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTREXTRANS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTREXTRANS">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ATTREXTRANS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">20</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTREXTRANS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNAME">
-<code class="sig-name descname">RELAXNG_ERR_ATTRNAME</code><em class="property"> = 14</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNAME">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ATTRNAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">14</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNONS">
-<code class="sig-name descname">RELAXNG_ERR_ATTRNONS</code><em class="property"> = 16</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNONS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNONS">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ATTRNONS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">16</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNONS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRVALID">
-<code class="sig-name descname">RELAXNG_ERR_ATTRVALID</code><em class="property"> = 24</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRVALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRVALID">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ATTRVALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">24</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRVALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRWRONGNS">
-<code class="sig-name descname">RELAXNG_ERR_ATTRWRONGNS</code><em class="property"> = 18</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRWRONGNS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRWRONGNS">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ATTRWRONGNS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">18</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRWRONGNS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_CONTENTVALID">
-<code class="sig-name descname">RELAXNG_ERR_CONTENTVALID</code><em class="property"> = 25</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_CONTENTVALID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_CONTENTVALID">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_CONTENTVALID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">25</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_CONTENTVALID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATAELEM">
-<code class="sig-name descname">RELAXNG_ERR_DATAELEM</code><em class="property"> = 28</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATAELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATAELEM">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_DATAELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">28</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATAELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATATYPE">
-<code class="sig-name descname">RELAXNG_ERR_DATATYPE</code><em class="property"> = 31</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATATYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATATYPE">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_DATATYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">31</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATATYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DUPID">
-<code class="sig-name descname">RELAXNG_ERR_DUPID</code><em class="property"> = 4</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DUPID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DUPID">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_DUPID</span></span><em class="property"> <span class="pre">=</span> <span class="pre">4</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DUPID" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMEXTRANS">
-<code class="sig-name descname">RELAXNG_ERR_ELEMEXTRANS</code><em class="property"> = 19</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMEXTRANS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMEXTRANS">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ELEMEXTRANS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">19</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMEXTRANS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNAME">
-<code class="sig-name descname">RELAXNG_ERR_ELEMNAME</code><em class="property"> = 13</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNAME">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ELEMNAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">13</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNAME" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNONS">
-<code class="sig-name descname">RELAXNG_ERR_ELEMNONS</code><em class="property"> = 15</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNONS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNONS">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ELEMNONS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">15</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNONS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNOTEMPTY">
-<code class="sig-name descname">RELAXNG_ERR_ELEMNOTEMPTY</code><em class="property"> = 21</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNOTEMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNOTEMPTY">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ELEMNOTEMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">21</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNOTEMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONG">
-<code class="sig-name descname">RELAXNG_ERR_ELEMWRONG</code><em class="property"> = 38</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONG">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ELEMWRONG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">38</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONGNS">
-<code class="sig-name descname">RELAXNG_ERR_ELEMWRONGNS</code><em class="property"> = 17</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONGNS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONGNS">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_ELEMWRONGNS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">17</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONGNS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRACONTENT">
-<code class="sig-name descname">RELAXNG_ERR_EXTRACONTENT</code><em class="property"> = 26</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRACONTENT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRACONTENT">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_EXTRACONTENT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">26</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRACONTENT" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRADATA">
-<code class="sig-name descname">RELAXNG_ERR_EXTRADATA</code><em class="property"> = 35</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRADATA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRADATA">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_EXTRADATA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">35</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRADATA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTEREXTRA">
-<code class="sig-name descname">RELAXNG_ERR_INTEREXTRA</code><em class="property"> = 12</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTEREXTRA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTEREXTRA">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_INTEREXTRA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">12</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTEREXTRA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNAL">
-<code class="sig-name descname">RELAXNG_ERR_INTERNAL</code><em class="property"> = 37</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNAL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNAL">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_INTERNAL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">37</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNAL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNODATA">
-<code class="sig-name descname">RELAXNG_ERR_INTERNODATA</code><em class="property"> = 10</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNODATA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNODATA">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_INTERNODATA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">10</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNODATA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERSEQ">
-<code class="sig-name descname">RELAXNG_ERR_INTERSEQ</code><em class="property"> = 11</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERSEQ" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERSEQ">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_INTERSEQ</span></span><em class="property"> <span class="pre">=</span> <span class="pre">11</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERSEQ" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INVALIDATTR">
-<code class="sig-name descname">RELAXNG_ERR_INVALIDATTR</code><em class="property"> = 27</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INVALIDATTR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INVALIDATTR">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_INVALIDATTR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">27</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INVALIDATTR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LACKDATA">
-<code class="sig-name descname">RELAXNG_ERR_LACKDATA</code><em class="property"> = 36</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LACKDATA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LACKDATA">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_LACKDATA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">36</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LACKDATA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LIST">
-<code class="sig-name descname">RELAXNG_ERR_LIST</code><em class="property"> = 33</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LIST" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LIST">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_LIST</span></span><em class="property"> <span class="pre">=</span> <span class="pre">33</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LIST" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTELEM">
-<code class="sig-name descname">RELAXNG_ERR_LISTELEM</code><em class="property"> = 30</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTELEM">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_LISTELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">30</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEMPTY">
-<code class="sig-name descname">RELAXNG_ERR_LISTEMPTY</code><em class="property"> = 9</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEMPTY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEMPTY">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_LISTEMPTY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">9</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEMPTY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEXTRA">
-<code class="sig-name descname">RELAXNG_ERR_LISTEXTRA</code><em class="property"> = 8</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEXTRA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEXTRA">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_LISTEXTRA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">8</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEXTRA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_MEMORY">
-<code class="sig-name descname">RELAXNG_ERR_MEMORY</code><em class="property"> = 1</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_MEMORY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_MEMORY">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_MEMORY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">1</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_MEMORY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NODEFINE">
-<code class="sig-name descname">RELAXNG_ERR_NODEFINE</code><em class="property"> = 7</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NODEFINE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NODEFINE">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_NODEFINE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">7</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NODEFINE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOELEM">
-<code class="sig-name descname">RELAXNG_ERR_NOELEM</code><em class="property"> = 22</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOELEM">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_NOELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">22</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOGRAMMAR">
-<code class="sig-name descname">RELAXNG_ERR_NOGRAMMAR</code><em class="property"> = 34</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOGRAMMAR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOGRAMMAR">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_NOGRAMMAR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">34</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOGRAMMAR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOSTATE">
-<code class="sig-name descname">RELAXNG_ERR_NOSTATE</code><em class="property"> = 6</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOSTATE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOSTATE">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_NOSTATE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">6</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOSTATE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOTELEM">
-<code class="sig-name descname">RELAXNG_ERR_NOTELEM</code><em class="property"> = 23</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOTELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOTELEM">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_NOTELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">23</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOTELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TEXTWRONG">
-<code class="sig-name descname">RELAXNG_ERR_TEXTWRONG</code><em class="property"> = 39</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TEXTWRONG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TEXTWRONG">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_TEXTWRONG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">39</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TEXTWRONG" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPE">
-<code class="sig-name descname">RELAXNG_ERR_TYPE</code><em class="property"> = 2</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPE">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_TYPE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPECMP">
-<code class="sig-name descname">RELAXNG_ERR_TYPECMP</code><em class="property"> = 5</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPECMP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPECMP">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_TYPECMP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">5</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPECMP" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPEVAL">
-<code class="sig-name descname">RELAXNG_ERR_TYPEVAL</code><em class="property"> = 3</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPEVAL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPEVAL">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_TYPEVAL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">3</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPEVAL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALELEM">
-<code class="sig-name descname">RELAXNG_ERR_VALELEM</code><em class="property"> = 29</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALELEM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALELEM">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_VALELEM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">29</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALELEM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALUE">
-<code class="sig-name descname">RELAXNG_ERR_VALUE</code><em class="property"> = 32</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALUE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALUE">
+<span class="sig-name descname"><span class="pre">RELAXNG_ERR_VALUE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">32</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALUE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes.RELAXNG_OK">
-<code class="sig-name descname">RELAXNG_OK</code><em class="property"> = 0</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_OK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes.RELAXNG_OK">
+<span class="sig-name descname"><span class="pre">RELAXNG_OK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">0</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes.RELAXNG_OK" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.RelaxNGErrorTypes._names">
-<code class="sig-name descname">_names</code><em class="property"> = {0: 'RELAXNG_OK', 1: 'RELAXNG_ERR_MEMORY', 2: 'RELAXNG_ERR_TYPE', 3: 'RELAXNG_ERR_TYPEVAL', 4: 'RELAXNG_ERR_DUPID', 5: 'RELAXNG_ERR_TYPECMP', 6: 'RELAXNG_ERR_NOSTATE', 7: 'RELAXNG_ERR_NODEFINE', 8: 'RELAXNG_ERR_LISTEXTRA', 9: 'RELAXNG_ERR_LISTEMPTY', 10: 'RELAXNG_ERR_INTERNODATA', 11: 'RELAXNG_ERR_INTERSEQ', 12: 'RELAXNG_ERR_INTEREXTRA', 13: 'RELAXNG_ERR_ELEMNAME', 14: 'RELAXNG_ERR_ATTRNAME', 15: 'RELAXNG_ERR_ELEMNONS', 16: 'RELAXNG_ERR_ATTRNONS', 17: 'RELAXNG_ERR_ELEMWRONGNS', 18: 'RELAXNG_ERR_ATTRWRONGNS', 19: 'RELAXNG_ERR_ELEMEXTRANS', 20: 'RELAXNG_ERR_ATTREXTRANS', 21: 'RELAXNG_ERR_ELEMNOTEMPTY', 22: 'RELAXNG_ERR_NOELEM', 23: 'RELAXNG_ERR_NOTELEM', 24: 'RELAXNG_ERR_ATTRVALID', 25: 'RELAXNG_ERR_CONTENTVALID', 26: 'RELAXNG_ERR_EXTRACONTENT', 27: 'RELAXNG_ERR_INVALIDATTR', 28: 'RELAXNG_ERR_DATAELEM', 29: 'RELAXNG_ERR_VALELEM', 30: 'RELAXNG_ERR_LISTELEM', 31: 'RELAXNG_ERR_DATATYPE', 32: 'RELAXNG_ERR_VALUE', 33: 'RELAXNG_ERR_LIST', 34: 'RELAXNG_ERR_NOGRAMMAR', 35: 'RELAXNG_ERR_EXTRADATA', 36: 'RELAXNG_ERR_LACKDATA', 37: 'RELAXNG_ERR_INTERNAL', 38: 'RELAXNG_ERR_ELEMWRONG', 39: 'RELAXNG_ERR_TEXTWRONG'}</em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes._names" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.RelaxNGErrorTypes._names">
+<span class="sig-name descname"><span class="pre">_names</span></span><em class="property"> <span class="pre">=</span> <span class="pre">{0:</span> <span class="pre">'RELAXNG_OK',</span> <span class="pre">1:</span> <span class="pre">'RELAXNG_ERR_MEMORY',</span> <span class="pre">2:</span> <span class="pre">'RELAXNG_ERR_TYPE',</span> <span class="pre">3:</span> <span class="pre">'RELAXNG_ERR_TYPEVAL',</span> <span class="pre">4:</span> <span class="pre">'RELAXNG_ERR_DUPID',</span> <span class="pre">5:</span> <span class="pre">'RELAXNG_ERR_TYPECMP',</span> <span class="pre">6:</span> <span class="pre">'RELAXNG_ERR_NOSTATE',</span> <span class="pre">7:</span> <span class="pre">'RELAXNG_ERR_NODEFINE',</span> <span class="pre">8:</span> <span class="pre">'RELAXNG_ERR_LISTEXTRA',</span> <span class="pre">9:</span> <span class="pre">'RELAXNG_ERR_LISTEMPTY',</span> <span class="pre">10:</span> <span class="pre">'RELAXNG_ERR_INTERNODATA',</span> <span class="pre">11:</span> <span class="pre">'RELAXNG_ERR_INTERSEQ',</span> <span class="pre">12:</span> <span class="pre">'RELAXNG_ERR_INTEREXTRA',</span> <span class="pre">13:</span> <span class="pre">'RELAXNG_ERR_ELEMNAME',</span> <span class="pre">14:</span> <span class="pre">'RELAXNG_ERR_ATTRNAME',</span> <span class="pre">15:</span> <span class="pre">'RELAXNG_ERR_ELEMNONS',</span> <span class="pre">16:</span> <span class="pre">'RELAXNG_ERR_ATTRNONS',</span> <span class="pre">17:</span> <span class="pre">'RELAXNG_ERR_ELEMWRONGNS',</span> <span class="pre">18:</span> <span class="pre">'RELAXNG_ERR_ATTRWRONGNS',</span> <span class="pre">19:</span> <span class="pre">'RELAXNG_ERR_ELEMEXTRANS',</span> <span class="pre">20:</span> <span class="pre">'RELAXNG_ERR_ATTREXTRANS',</span> <span class="pre">21:</span> <span class="pre">'RELAXNG_ERR_ELEMNOTEMPTY',</span> <span class="pre">22:</span> <span class="pre">'RELAXNG_ERR_NOELEM',</span> <span class="pre">23:</span> <span class="pre">'RELAXNG_ERR_NOTELEM',</span> <span class="pre">24:</span> <span class="pre">'RELAXNG_ERR_ATTRVALID',</span> <span class="pre">25:</span> <span class="pre">'RELAXNG_ERR_CONTENTVALID',</span> <span class="pre">26:</span> <span class="pre">'RELAXNG_ERR_EXTRACONTENT',</span> <span class="pre">27:</span> <span class="pre">'RELAXNG_ERR_INVALIDATTR',</span> <span class="pre">28:</span> <span class="pre">'RELAXNG_ERR_DATAELEM',</span> <span class="pre">29:</span> <span class="pre">'RELAXNG_ERR_VALELEM',</span> <span class="pre">30:</span> <span class="pre">'RELAXNG_ERR_LISTELEM',</span> <span class="pre">31:</span> <span class="pre">'RELAXNG_ERR_DATATYPE',</span> <span class="pre">32:</span> <span class="pre">'RELAXNG_ERR_VALUE',</span> <span class="pre">33:</span> <span class="pre">'RELAXNG_ERR_LIST',</span> <span class="pre">34:</span> <span class="pre">'RELAXNG_ERR_NOGRAMMAR',</span> <span class="pre">35:</span> <span class="pre">'RELAXNG_ERR_EXTRADATA',</span> <span class="pre">36:</span> <span class="pre">'RELAXNG_ERR_LACKDATA',</span> <span class="pre">37:</span> <span class="pre">'RELAXNG_ERR_INTERNAL',</span> <span class="pre">38:</span> <span class="pre">'RELAXNG_ERR_ELEMWRONG',</span> <span class="pre">39:</span> <span class="pre">'RELAXNG_ERR_TEXTWRONG'}</span></em><a class="headerlink" href="#lxml.etree.RelaxNGErrorTypes._names" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.Resolver">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">Resolver</code><a class="headerlink" href="#lxml.etree.Resolver" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Resolver">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">Resolver</span></span><a class="headerlink" href="#lxml.etree.Resolver" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>This is the base class of all resolvers.</p>
<dl class="py method">
-<dt id="lxml.etree.Resolver.resolve">
-<code class="sig-name descname">resolve</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">system_url</span></em>, <em class="sig-param"><span class="n">public_id</span></em>, <em class="sig-param"><span class="n">context</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Resolver.resolve" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Resolver.resolve">
+<span class="sig-name descname"><span class="pre">resolve</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system_url</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">public_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">context</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Resolver.resolve" title="Permalink to this definition"></a></dt>
<dd><p>Override this method to resolve an external source by
<code class="docutils literal notranslate"><span class="pre">system_url</span></code> and <code class="docutils literal notranslate"><span class="pre">public_id</span></code>. The third argument is an
opaque context object.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.Resolver.resolve_empty">
-<code class="sig-name descname">resolve_empty</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">context</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Resolver.resolve_empty" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Resolver.resolve_empty">
+<span class="sig-name descname"><span class="pre">resolve_empty</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">context</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Resolver.resolve_empty" title="Permalink to this definition"></a></dt>
<dd><p>Return an empty input document.</p>
<p>Pass context as parameter.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.Resolver.resolve_file">
-<code class="sig-name descname">resolve_file</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">f</span></em>, <em class="sig-param"><span class="n">context</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">close</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Resolver.resolve_file" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Resolver.resolve_file">
+<span class="sig-name descname"><span class="pre">resolve_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">f</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">context</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">close</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Resolver.resolve_file" title="Permalink to this definition"></a></dt>
<dd><p>Return an open file-like object as input document.</p>
<p>Pass open file and context as parameters. You can pass the
base URL or filename of the file through the <code class="docutils literal notranslate"><span class="pre">base_url</span></code>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.Resolver.resolve_filename">
-<code class="sig-name descname">resolve_filename</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">filename</span></em>, <em class="sig-param"><span class="n">context</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Resolver.resolve_filename" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Resolver.resolve_filename">
+<span class="sig-name descname"><span class="pre">resolve_filename</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">context</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Resolver.resolve_filename" title="Permalink to this definition"></a></dt>
<dd><p>Return the name of a parsable file as input document.</p>
<p>Pass filename and context as parameters. You can also pass a
URL with an HTTP, FTP or file target.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.Resolver.resolve_string">
-<code class="sig-name descname">resolve_string</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">context</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Resolver.resolve_string" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Resolver.resolve_string">
+<span class="sig-name descname"><span class="pre">resolve_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">context</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Resolver.resolve_string" title="Permalink to this definition"></a></dt>
<dd><p>Return a parsable string as input document.</p>
<p>Pass data string and context as parameters. You can pass the
source URL or filename through the <code class="docutils literal notranslate"><span class="pre">base_url</span></code> keyword
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.Schematron">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">Schematron</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">etree</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">file</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Schematron" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Schematron">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">Schematron</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">etree</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Schematron" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._Validator" title="lxml.etree._Validator"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._Validator</span></code></a></p>
<p>A Schematron validator.</p>
<p>Pass a root Element or an ElementTree to turn it into a validator.
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.SiblingsIterator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">SiblingsIterator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">node</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">preceding</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.SiblingsIterator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.SiblingsIterator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">SiblingsIterator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">node</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">preceding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.SiblingsIterator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._ElementMatchIterator" title="lxml.etree._ElementMatchIterator"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._ElementMatchIterator</span></code></a></p>
<p>Iterates over the siblings of an element.</p>
<p>You can pass the boolean keyword <code class="docutils literal notranslate"><span class="pre">preceding</span></code> to specify the direction.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.TreeBuilder">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">TreeBuilder</code><a class="headerlink" href="#lxml.etree.TreeBuilder" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.TreeBuilder">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">TreeBuilder</span></span><a class="headerlink" href="#lxml.etree.TreeBuilder" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._SaxParserTarget" title="lxml.etree._SaxParserTarget"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._SaxParserTarget</span></code></a></p>
<dl class="simple">
<dt>TreeBuilder(self, element_factory=None, parser=None,</dt><dd><p>comment_factory=None, pi_factory=None,
the tree, but they can be ignored by passing the respective flags.</p>
<p>The final tree is returned by the <code class="docutils literal notranslate"><span class="pre">close()</span></code> method.</p>
<dl class="py method">
-<dt id="lxml.etree.TreeBuilder.close">
-<code class="sig-name descname">close</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.close" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.TreeBuilder.close">
+<span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.close" title="Permalink to this definition"></a></dt>
<dd><p>Flushes the builder buffers, and returns the toplevel document
element. Raises XMLSyntaxError on inconsistencies.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.TreeBuilder.comment">
-<code class="sig-name descname">comment</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">comment</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.comment" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.TreeBuilder.comment">
+<span class="sig-name descname"><span class="pre">comment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">comment</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.comment" title="Permalink to this definition"></a></dt>
<dd><p>Creates a comment using the factory, appends it (unless disabled)
and returns it.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.TreeBuilder.data">
-<code class="sig-name descname">data</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.data" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.TreeBuilder.data">
+<span class="sig-name descname"><span class="pre">data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.data" title="Permalink to this definition"></a></dt>
<dd><p>Adds text to the current element. The value should be either an
8-bit string containing ASCII text, or a Unicode string.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.TreeBuilder.end">
-<code class="sig-name descname">end</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.end" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.TreeBuilder.end">
+<span class="sig-name descname"><span class="pre">end</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.end" title="Permalink to this definition"></a></dt>
<dd><p>Closes the current element.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.TreeBuilder.pi">
-<code class="sig-name descname">pi</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">target</span></em>, <em class="sig-param"><span class="n">data</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.pi" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.TreeBuilder.pi">
+<span class="sig-name descname"><span class="pre">pi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.pi" title="Permalink to this definition"></a></dt>
<dd><p>Creates a processing instruction using the factory, appends it
(unless disabled) and returns it.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.TreeBuilder.start">
-<code class="sig-name descname">start</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span></em>, <em class="sig-param"><span class="n">attrs</span></em>, <em class="sig-param"><span class="n">nsmap</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.start" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.TreeBuilder.start">
+<span class="sig-name descname"><span class="pre">start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nsmap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.TreeBuilder.start" title="Permalink to this definition"></a></dt>
<dd><p>Opens a new element.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.XInclude">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XInclude</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XInclude" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XInclude">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XInclude</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XInclude" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>XInclude processor.</p>
<p>Create an instance and call it on an Element to run XInclude
processing.</p>
<dl class="py attribute">
-<dt id="lxml.etree.XInclude.error_log">
-<code class="sig-name descname">error_log</code><a class="headerlink" href="#lxml.etree.XInclude.error_log" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XInclude.error_log">
+<span class="sig-name descname"><span class="pre">error_log</span></span><a class="headerlink" href="#lxml.etree.XInclude.error_log" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.XMLParser">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLParser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">attribute_defaults</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">dtd_validation</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">load_dtd</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">no_network</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">ns_clean</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">recover</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">schema</span><span class="p">:</span> <span class="n"><a class="reference internal" href="#lxml.etree.XMLSchema" title="lxml.etree.XMLSchema">XMLSchema</a></span> <span class="o">=</span> <span class="default_value">None</span></em>, <em class="sig-param"><span class="n">huge_tree</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">remove_blank_text</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">resolve_entities</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">remove_comments</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">remove_pis</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">strip_cdata</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">collect_ids</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">target</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">compact</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLParser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLParser">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLParser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attribute_defaults</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dtd_validation</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load_dtd</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_network</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ns_clean</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">recover</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">schema</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><a class="reference internal" href="#lxml.etree.XMLSchema" title="lxml.etree.XMLSchema"><span class="pre">XMLSchema</span></a></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">huge_tree</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_blank_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">resolve_entities</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_comments</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_pis</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strip_cdata</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">collect_ids</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compact</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLParser" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._FeedParser" title="lxml.etree._FeedParser"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._FeedParser</span></code></a></p>
<p>The XML parser.</p>
<p>Parsers can be supplied as additional argument to various parse
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.XMLPullParser">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLPullParser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">events</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLPullParser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLPullParser">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLPullParser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">events</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLPullParser" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XMLParser" title="lxml.etree.XMLParser"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XMLParser</span></code></a></p>
<p>XML parser that collects parse events in an iterator.</p>
<p>The collected events are the same as for iterparse(), but the
<p>To support loading external dependencies relative to the input
source, you can pass the <code class="docutils literal notranslate"><span class="pre">base_url</span></code>.</p>
<dl class="py method">
-<dt id="lxml.etree.XMLPullParser.read_events">
-<code class="sig-name descname">read_events</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLPullParser.read_events" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLPullParser.read_events">
+<span class="sig-name descname"><span class="pre">read_events</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLPullParser.read_events" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.XMLSchema">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLSchema</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">etree</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">file</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLSchema" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLSchema">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLSchema</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">etree</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLSchema" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._Validator" title="lxml.etree._Validator"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._Validator</span></code></a></p>
<p>Turn a document into an XML Schema validator.</p>
<p>Either pass a schema as Element or ElementTree, or pass a file or
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.XMLTreeBuilder">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLTreeBuilder</code><a class="headerlink" href="#lxml.etree.XMLTreeBuilder" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLTreeBuilder">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLTreeBuilder</span></span><a class="headerlink" href="#lxml.etree.XMLTreeBuilder" title="Permalink to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#lxml.etree.ETCompatXMLParser" title="lxml.etree.ETCompatXMLParser"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.ETCompatXMLParser</span></code></a></p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.XPath">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XPath</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">extensions</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">regexp</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">smart_strings</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPath" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPath">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XPath</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extensions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">regexp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">smart_strings</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPath" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._XPathEvaluatorBase" title="lxml.etree._XPathEvaluatorBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._XPathEvaluatorBase</span></code></a></p>
<p>A compiled XPath expression that can be called on Elements and ElementTrees.</p>
<p>Besides the XPath expression, you can pass prefix-namespace
returned for string results unless you pass
<code class="docutils literal notranslate"><span class="pre">smart_strings=False</span></code>.</p>
<dl class="py attribute">
-<dt id="lxml.etree.XPath.path">
-<code class="sig-name descname">path</code><a class="headerlink" href="#lxml.etree.XPath.path" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPath.path">
+<span class="sig-name descname"><span class="pre">path</span></span><a class="headerlink" href="#lxml.etree.XPath.path" title="Permalink to this definition"></a></dt>
<dd><p>The literal XPath expression.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.XPathDocumentEvaluator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XPathDocumentEvaluator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">etree</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">extensions</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">regexp</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">smart_strings</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPathDocumentEvaluator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPathDocumentEvaluator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XPathDocumentEvaluator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">etree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extensions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">regexp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">smart_strings</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPathDocumentEvaluator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.XPathElementEvaluator" title="lxml.etree.XPathElementEvaluator"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XPathElementEvaluator</span></code></a></p>
<p>Create an XPath evaluator for an ElementTree.</p>
<p>Additional namespace declarations can be passed with the
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.XPathElementEvaluator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XPathElementEvaluator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">element</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">extensions</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">regexp</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">smart_strings</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPathElementEvaluator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPathElementEvaluator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XPathElementEvaluator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extensions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">regexp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">smart_strings</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPathElementEvaluator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._XPathEvaluatorBase" title="lxml.etree._XPathEvaluatorBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._XPathEvaluatorBase</span></code></a></p>
<p>Create an XPath evaluator for an element.</p>
<p>Absolute XPath expressions (starting with ‘/’) will be evaluated against
True). Smart strings will be returned for string results unless
you pass <code class="docutils literal notranslate"><span class="pre">smart_strings=False</span></code>.</p>
<dl class="py method">
-<dt id="lxml.etree.XPathElementEvaluator.register_namespace">
-<code class="sig-name descname">register_namespace</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">prefix</span></em>, <em class="sig-param"><span class="n">uri</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPathElementEvaluator.register_namespace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPathElementEvaluator.register_namespace">
+<span class="sig-name descname"><span class="pre">register_namespace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prefix</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">uri</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPathElementEvaluator.register_namespace" title="Permalink to this definition"></a></dt>
<dd><p>Register a namespace with the XPath context.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.XPathElementEvaluator.register_namespaces">
-<code class="sig-name descname">register_namespaces</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">namespaces</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPathElementEvaluator.register_namespaces" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPathElementEvaluator.register_namespaces">
+<span class="sig-name descname"><span class="pre">register_namespaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">namespaces</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPathElementEvaluator.register_namespaces" title="Permalink to this definition"></a></dt>
<dd><p>Register a prefix -> uri dict.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.XSLT">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XSLT</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">xslt_input</span></em>, <em class="sig-param"><span class="n">extensions</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">regexp</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">access_control</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLT">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XSLT</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xslt_input</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extensions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">regexp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">access_control</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLT" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Turn an XSL document into an XSLT object.</p>
<p>Calling this object on a tree or Element will execute the XSLT:</p>
<p>Other keyword arguments of the call are passed to the stylesheet
as parameters.</p>
<dl class="py method">
-<dt id="lxml.etree.XSLT.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">_input</span></em>, <em class="sig-param"><span class="n">profile_run</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLT.apply" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLT.apply">
+<span class="sig-name descname"><span class="pre">apply</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_input</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">profile_run</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLT.apply" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Deprecated</dt>
<dd class="field-odd"><p>call the object, not this method.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.XSLT.set_global_max_depth">
-<em class="property">static </em><code class="sig-name descname">set_global_max_depth</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">max_depth</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLT.set_global_max_depth" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLT.set_global_max_depth">
+<em class="property"><span class="pre">static</span> </em><span class="sig-name descname"><span class="pre">set_global_max_depth</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">max_depth</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLT.set_global_max_depth" title="Permalink to this definition"></a></dt>
<dd><p>The maximum traversal depth that the stylesheet engine will allow.
This does not only count the template recursion depth but also takes
the number of variables/parameters into account. The required setting
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.XSLT.strparam">
-<em class="property">static </em><code class="sig-name descname">strparam</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">strval</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLT.strparam" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLT.strparam">
+<em class="property"><span class="pre">static</span> </em><span class="sig-name descname"><span class="pre">strparam</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">strval</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLT.strparam" title="Permalink to this definition"></a></dt>
<dd><p>Mark an XSLT string parameter that requires quote escaping
before passing it into the transformation. Use it like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">some_strval</span> <span class="o">=</span> <span class="n">XSLT</span><span class="o">.</span><span class="n">strparam</span><span class="p">(</span>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.XSLT.tostring">
-<code class="sig-name descname">tostring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">result_tree</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLT.tostring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLT.tostring">
+<span class="sig-name descname"><span class="pre">tostring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">result_tree</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLT.tostring" title="Permalink to this definition"></a></dt>
<dd><p>Save result doc to string based on stylesheet output method.</p>
<dl class="field-list simple">
<dt class="field-odd">Deprecated</dt>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.XSLT.error_log">
-<code class="sig-name descname">error_log</code><a class="headerlink" href="#lxml.etree.XSLT.error_log" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLT.error_log">
+<span class="sig-name descname"><span class="pre">error_log</span></span><a class="headerlink" href="#lxml.etree.XSLT.error_log" title="Permalink to this definition"></a></dt>
<dd><p>The log of errors and warnings of an XSLT execution.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.XSLTAccessControl">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XSLTAccessControl</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">read_file</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">write_file</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">create_dir</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">read_network</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">write_network</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLTAccessControl" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTAccessControl">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XSLTAccessControl</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">read_file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">write_file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">create_dir</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">read_network</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">write_network</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLTAccessControl" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Access control for XSLT: reading/writing files, directories and
network I/O. Access to a type of resource is granted or denied by
write access but allows read access.</p>
<p>See <cite>XSLT</cite>.</p>
<dl class="py attribute">
-<dt id="lxml.etree.XSLTAccessControl.DENY_ALL">
-<code class="sig-name descname">DENY_ALL</code><em class="property"> = XSLTAccessControl(create_dir=False, read_file=False, read_network=False, write_file=False, write_network=False)</em><a class="headerlink" href="#lxml.etree.XSLTAccessControl.DENY_ALL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTAccessControl.DENY_ALL">
+<span class="sig-name descname"><span class="pre">DENY_ALL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">XSLTAccessControl(create_dir=False,</span> <span class="pre">read_file=False,</span> <span class="pre">read_network=False,</span> <span class="pre">write_file=False,</span> <span class="pre">write_network=False)</span></em><a class="headerlink" href="#lxml.etree.XSLTAccessControl.DENY_ALL" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.XSLTAccessControl.DENY_WRITE">
-<code class="sig-name descname">DENY_WRITE</code><em class="property"> = XSLTAccessControl(create_dir=False, read_file=True, read_network=True, write_file=False, write_network=False)</em><a class="headerlink" href="#lxml.etree.XSLTAccessControl.DENY_WRITE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTAccessControl.DENY_WRITE">
+<span class="sig-name descname"><span class="pre">DENY_WRITE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">XSLTAccessControl(create_dir=False,</span> <span class="pre">read_file=True,</span> <span class="pre">read_network=True,</span> <span class="pre">write_file=False,</span> <span class="pre">write_network=False)</span></em><a class="headerlink" href="#lxml.etree.XSLTAccessControl.DENY_WRITE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.XSLTAccessControl.options">
-<code class="sig-name descname">options</code><a class="headerlink" href="#lxml.etree.XSLTAccessControl.options" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTAccessControl.options">
+<span class="sig-name descname"><span class="pre">options</span></span><a class="headerlink" href="#lxml.etree.XSLTAccessControl.options" title="Permalink to this definition"></a></dt>
<dd><p>The access control configuration as a map of options.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.XSLTExtension">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XSLTExtension</code><a class="headerlink" href="#lxml.etree.XSLTExtension" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTExtension">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XSLTExtension</span></span><a class="headerlink" href="#lxml.etree.XSLTExtension" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Base class of an XSLT extension element.</p>
<dl class="py method">
-<dt id="lxml.etree.XSLTExtension.apply_templates">
-<code class="sig-name descname">apply_templates</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">context</span></em>, <em class="sig-param"><span class="n">node</span></em>, <em class="sig-param"><span class="n">output_parent</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">elements_only</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">remove_blank_text</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLTExtension.apply_templates" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTExtension.apply_templates">
+<span class="sig-name descname"><span class="pre">apply_templates</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">context</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">node</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_parent</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">elements_only</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_blank_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLTExtension.apply_templates" title="Permalink to this definition"></a></dt>
<dd><p>Call this method to retrieve the result of applying templates
to an element.</p>
<p>The return value is a list of elements or text strings that
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.XSLTExtension.execute">
-<code class="sig-name descname">execute</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">context</span></em>, <em class="sig-param"><span class="n">self_node</span></em>, <em class="sig-param"><span class="n">input_node</span></em>, <em class="sig-param"><span class="n">output_parent</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLTExtension.execute" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTExtension.execute">
+<span class="sig-name descname"><span class="pre">execute</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">context</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">self_node</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">input_node</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_parent</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLTExtension.execute" title="Permalink to this definition"></a></dt>
<dd><p>Execute this extension element.</p>
<p>Subclasses must override this method. They may append
elements to the <cite>output_parent</cite> element here, or set its text
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.XSLTExtension.process_children">
-<code class="sig-name descname">process_children</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">context</span></em>, <em class="sig-param"><span class="n">output_parent</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">elements_only</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">remove_blank_text</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLTExtension.process_children" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XSLTExtension.process_children">
+<span class="sig-name descname"><span class="pre">process_children</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">context</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_parent</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">elements_only</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_blank_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XSLTExtension.process_children" title="Permalink to this definition"></a></dt>
<dd><p>Call this method to process the XSLT content of the extension
element itself.</p>
<p>The return value is a list of elements or text strings that
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._Attrib">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_Attrib</code><a class="headerlink" href="#lxml.etree._Attrib" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_Attrib</span></span><a class="headerlink" href="#lxml.etree._Attrib" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>A dict-like proxy for the <code class="docutils literal notranslate"><span class="pre">Element.attrib</span></code> property.</p>
<dl class="py method">
-<dt id="lxml.etree._Attrib.clear">
-<code class="sig-name descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.clear" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.clear">
+<span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.clear" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Attrib.get">
-<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">default</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.get" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.get">
+<span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.get" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Attrib.has_key">
-<code class="sig-name descname">has_key</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">key</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.has_key" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.has_key">
+<span class="sig-name descname"><span class="pre">has_key</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.has_key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Attrib.items">
-<code class="sig-name descname">items</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.items" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.items">
+<span class="sig-name descname"><span class="pre">items</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.items" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Attrib.iteritems">
-<code class="sig-name descname">iteritems</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.iteritems" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.iteritems">
+<span class="sig-name descname"><span class="pre">iteritems</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.iteritems" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Attrib.iterkeys">
-<code class="sig-name descname">iterkeys</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.iterkeys" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.iterkeys">
+<span class="sig-name descname"><span class="pre">iterkeys</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.iterkeys" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Attrib.itervalues">
-<code class="sig-name descname">itervalues</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.itervalues" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.itervalues">
+<span class="sig-name descname"><span class="pre">itervalues</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.itervalues" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Attrib.keys">
-<code class="sig-name descname">keys</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.keys" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.keys">
+<span class="sig-name descname"><span class="pre">keys</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.keys" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Attrib.pop">
-<code class="sig-name descname">pop</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">default</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.pop" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.pop">
+<span class="sig-name descname"><span class="pre">pop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">default</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.pop" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Attrib.update">
-<code class="sig-name descname">update</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">sequence_or_dict</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.update" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.update">
+<span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sequence_or_dict</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.update" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Attrib.values">
-<code class="sig-name descname">values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.values" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Attrib.values">
+<span class="sig-name descname"><span class="pre">values</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Attrib.values" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._BaseErrorLog">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_BaseErrorLog</code><a class="headerlink" href="#lxml.etree._BaseErrorLog" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._BaseErrorLog">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_BaseErrorLog</span></span><a class="headerlink" href="#lxml.etree._BaseErrorLog" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="py method">
-<dt id="lxml.etree._BaseErrorLog.copy">
-<code class="sig-name descname">copy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._BaseErrorLog.copy" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._BaseErrorLog.copy">
+<span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._BaseErrorLog.copy" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._BaseErrorLog.receive">
-<code class="sig-name descname">receive</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">entry</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._BaseErrorLog.receive" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._BaseErrorLog.receive">
+<span class="sig-name descname"><span class="pre">receive</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">entry</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._BaseErrorLog.receive" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._BaseErrorLog.last_error">
-<code class="sig-name descname">last_error</code><a class="headerlink" href="#lxml.etree._BaseErrorLog.last_error" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._BaseErrorLog.last_error">
+<span class="sig-name descname"><span class="pre">last_error</span></span><a class="headerlink" href="#lxml.etree._BaseErrorLog.last_error" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._Comment">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_Comment</code><a class="headerlink" href="#lxml.etree._Comment" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Comment">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_Comment</span></span><a class="headerlink" href="#lxml.etree._Comment" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.__ContentOnlyElement</span></code></p>
<dl class="py attribute">
-<dt id="lxml.etree._Comment.tag">
-<code class="sig-name descname">tag</code><a class="headerlink" href="#lxml.etree._Comment.tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Comment.tag">
+<span class="sig-name descname"><span class="pre">tag</span></span><a class="headerlink" href="#lxml.etree._Comment.tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._Document">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_Document</code><a class="headerlink" href="#lxml.etree._Document" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Document">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_Document</span></span><a class="headerlink" href="#lxml.etree._Document" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Internal base class to reference a libxml document.</p>
<p>When instances of this class are garbage collected, the libxml
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._DomainErrorLog">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_DomainErrorLog</code><a class="headerlink" href="#lxml.etree._DomainErrorLog" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._DomainErrorLog">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_DomainErrorLog</span></span><a class="headerlink" href="#lxml.etree._DomainErrorLog" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._ErrorLog" title="lxml.etree._ErrorLog"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._ErrorLog</span></code></a></p>
<dl class="py method">
-<dt id="lxml.etree._DomainErrorLog.receive">
-<code class="sig-name descname">receive</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">entry</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._DomainErrorLog.receive" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._DomainErrorLog.receive">
+<span class="sig-name descname"><span class="pre">receive</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">entry</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._DomainErrorLog.receive" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._Element">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_Element</code><a class="headerlink" href="#lxml.etree._Element" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_Element</span></span><a class="headerlink" href="#lxml.etree._Element" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Element class.</p>
<p>References a document object and a libxml node.</p>
<p>By pointing to a Document instance, a reference is kept to
_Document as long as there is some pointer to a node in it.</p>
<dl class="py method">
-<dt id="lxml.etree._Element._init">
-<code class="sig-name descname">_init</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element._init" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element._init">
+<span class="sig-name descname"><span class="pre">_init</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element._init" title="Permalink to this definition"></a></dt>
<dd><p>Called after object initialisation. Custom subclasses may override
this if they recursively call _init() in the superclasses.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.addnext">
-<code class="sig-name descname">addnext</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">element</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.addnext" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.addnext">
+<span class="sig-name descname"><span class="pre">addnext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.addnext" title="Permalink to this definition"></a></dt>
<dd><p>Adds the element as a following sibling directly after this
element.</p>
<p>This is normally used to set a processing instruction or comment after
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.addprevious">
-<code class="sig-name descname">addprevious</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">element</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.addprevious" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.addprevious">
+<span class="sig-name descname"><span class="pre">addprevious</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.addprevious" title="Permalink to this definition"></a></dt>
<dd><p>Adds the element as a preceding sibling directly before this
element.</p>
<p>This is normally used to set a processing instruction or comment
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.append">
-<code class="sig-name descname">append</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">element</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.append" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.append">
+<span class="sig-name descname"><span class="pre">append</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.append" title="Permalink to this definition"></a></dt>
<dd><p>Adds a subelement to the end of this element.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.clear">
-<code class="sig-name descname">clear</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">keep_tail</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.clear" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.clear">
+<span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">keep_tail</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.clear" title="Permalink to this definition"></a></dt>
<dd><p>Resets an element. This function removes all subelements, clears
all attributes and sets the text and tail properties to None.</p>
<p>Pass <code class="docutils literal notranslate"><span class="pre">keep_tail=True</span></code> to leave the tail text untouched.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.cssselect">
-<code class="sig-name descname">cssselect</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">expr</span></em>, <em class="sig-param"><span class="o">*</span></em>, <em class="sig-param"><span class="n">translator</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.cssselect" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.cssselect">
+<span class="sig-name descname"><span class="pre">cssselect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">expr</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translator</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.cssselect" title="Permalink to this definition"></a></dt>
<dd><p>Run the CSS expression on this element and its children,
returning a list of the results.</p>
<p>Equivalent to lxml.cssselect.CSSSelect(expr)(self) – note
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.extend">
-<code class="sig-name descname">extend</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">elements</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.extend" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.extend">
+<span class="sig-name descname"><span class="pre">extend</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">elements</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.extend" title="Permalink to this definition"></a></dt>
<dd><p>Extends the current children by the elements in the iterable.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.find">
-<code class="sig-name descname">find</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.find" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.find">
+<span class="sig-name descname"><span class="pre">find</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.find" title="Permalink to this definition"></a></dt>
<dd><p>Finds the first matching subelement, by tag name or path.</p>
<p>The optional <code class="docutils literal notranslate"><span class="pre">namespaces</span></code> argument accepts a
prefix-to-namespace mapping that allows the usage of XPath
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.findall">
-<code class="sig-name descname">findall</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.findall" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.findall">
+<span class="sig-name descname"><span class="pre">findall</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.findall" title="Permalink to this definition"></a></dt>
<dd><p>Finds all matching subelements, by tag name or path.</p>
<p>The optional <code class="docutils literal notranslate"><span class="pre">namespaces</span></code> argument accepts a
prefix-to-namespace mapping that allows the usage of XPath
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.findtext">
-<code class="sig-name descname">findtext</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.findtext" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.findtext">
+<span class="sig-name descname"><span class="pre">findtext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.findtext" title="Permalink to this definition"></a></dt>
<dd><p>Finds text for the first matching subelement, by tag name or path.</p>
<p>The optional <code class="docutils literal notranslate"><span class="pre">namespaces</span></code> argument accepts a
prefix-to-namespace mapping that allows the usage of XPath
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.get">
-<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.get" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.get">
+<span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.get" title="Permalink to this definition"></a></dt>
<dd><p>Gets an element attribute.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.getchildren">
-<code class="sig-name descname">getchildren</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getchildren" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.getchildren">
+<span class="sig-name descname"><span class="pre">getchildren</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getchildren" title="Permalink to this definition"></a></dt>
<dd><p>Returns all direct children. The elements are returned in document
order.</p>
<dl class="field-list simple">
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.getiterator">
-<code class="sig-name descname">getiterator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tags</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getiterator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.getiterator">
+<span class="sig-name descname"><span class="pre">getiterator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tags</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getiterator" title="Permalink to this definition"></a></dt>
<dd><p>Returns a sequence or iterator of all elements in the subtree in
document order (depth first pre-order), starting with this
element.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.getnext">
-<code class="sig-name descname">getnext</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getnext" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.getnext">
+<span class="sig-name descname"><span class="pre">getnext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getnext" title="Permalink to this definition"></a></dt>
<dd><p>Returns the following sibling of this element or None.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.getparent">
-<code class="sig-name descname">getparent</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getparent" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.getparent">
+<span class="sig-name descname"><span class="pre">getparent</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getparent" title="Permalink to this definition"></a></dt>
<dd><p>Returns the parent of this element or None for the root element.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.getprevious">
-<code class="sig-name descname">getprevious</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getprevious" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.getprevious">
+<span class="sig-name descname"><span class="pre">getprevious</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getprevious" title="Permalink to this definition"></a></dt>
<dd><p>Returns the preceding sibling of this element or None.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.getroottree">
-<code class="sig-name descname">getroottree</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getroottree" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.getroottree">
+<span class="sig-name descname"><span class="pre">getroottree</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.getroottree" title="Permalink to this definition"></a></dt>
<dd><p>Return an ElementTree for the root node of the document that
contains this element.</p>
<p>This is the same as following element.getparent() up the tree until it
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.index">
-<code class="sig-name descname">index</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">child</span></em>, <em class="sig-param"><span class="n">start</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">stop</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.index" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.index">
+<span class="sig-name descname"><span class="pre">index</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">child</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">start</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stop</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.index" title="Permalink to this definition"></a></dt>
<dd><p>Find the position of the child within the parent.</p>
<p>This method is not part of the original ElementTree API.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.insert">
-<code class="sig-name descname">insert</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">index</span></em>, <em class="sig-param"><span class="n">element</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.insert" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.insert">
+<span class="sig-name descname"><span class="pre">insert</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">index</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.insert" title="Permalink to this definition"></a></dt>
<dd><p>Inserts a subelement at the given position in this element</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.items">
-<code class="sig-name descname">items</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.items" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.items">
+<span class="sig-name descname"><span class="pre">items</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.items" title="Permalink to this definition"></a></dt>
<dd><p>Gets element attributes, as a sequence. The attributes are returned in
an arbitrary order.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.iter">
-<code class="sig-name descname">iter</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tags</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.iter" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.iter">
+<span class="sig-name descname"><span class="pre">iter</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tags</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.iter" title="Permalink to this definition"></a></dt>
<dd><p>Iterate over all elements in the subtree in document order (depth
first pre-order), starting with this element.</p>
<p>Can be restricted to find only elements with specific tags:
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.iterancestors">
-<code class="sig-name descname">iterancestors</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tags</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.iterancestors" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.iterancestors">
+<span class="sig-name descname"><span class="pre">iterancestors</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tags</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.iterancestors" title="Permalink to this definition"></a></dt>
<dd><p>Iterate over the ancestors of this element (from parent to parent).</p>
<p>Can be restricted to find only elements with specific tags,
see <cite>iter</cite>.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.iterchildren">
-<code class="sig-name descname">iterchildren</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tags</span></em>, <em class="sig-param"><span class="n">reversed</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.iterchildren" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.iterchildren">
+<span class="sig-name descname"><span class="pre">iterchildren</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tags</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reversed</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.iterchildren" title="Permalink to this definition"></a></dt>
<dd><p>Iterate over the children of this element.</p>
<p>As opposed to using normal iteration on this element, the returned
elements can be reversed with the ‘reversed’ keyword and restricted
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.iterdescendants">
-<code class="sig-name descname">iterdescendants</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tags</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.iterdescendants" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.iterdescendants">
+<span class="sig-name descname"><span class="pre">iterdescendants</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tags</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.iterdescendants" title="Permalink to this definition"></a></dt>
<dd><p>Iterate over the descendants of this element in document order.</p>
<p>As opposed to <code class="docutils literal notranslate"><span class="pre">el.iter()</span></code>, this iterator does not yield the element
itself. The returned elements can be restricted to find only elements
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.iterfind">
-<code class="sig-name descname">iterfind</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.iterfind" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.iterfind">
+<span class="sig-name descname"><span class="pre">iterfind</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.iterfind" title="Permalink to this definition"></a></dt>
<dd><p>Iterates over all matching subelements, by tag name or path.</p>
<p>The optional <code class="docutils literal notranslate"><span class="pre">namespaces</span></code> argument accepts a
prefix-to-namespace mapping that allows the usage of XPath
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.itersiblings">
-<code class="sig-name descname">itersiblings</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tags</span></em>, <em class="sig-param"><span class="n">preceding</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.itersiblings" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.itersiblings">
+<span class="sig-name descname"><span class="pre">itersiblings</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tags</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">preceding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.itersiblings" title="Permalink to this definition"></a></dt>
<dd><p>Iterate over the following or preceding siblings of this element.</p>
<p>The direction is determined by the ‘preceding’ keyword which
defaults to False, i.e. forward iteration over the following
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.itertext">
-<code class="sig-name descname">itertext</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tags</span></em>, <em class="sig-param"><span class="n">with_tail</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.itertext" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.itertext">
+<span class="sig-name descname"><span class="pre">itertext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tags</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_tail</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.itertext" title="Permalink to this definition"></a></dt>
<dd><p>Iterates over the text content of a subtree.</p>
<p>You can pass tag names to restrict text content to specific elements,
see <cite>iter</cite>.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.keys">
-<code class="sig-name descname">keys</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.keys" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.keys">
+<span class="sig-name descname"><span class="pre">keys</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.keys" title="Permalink to this definition"></a></dt>
<dd><p>Gets a list of attribute names. The names are returned in an
arbitrary order (just like for an ordinary Python dictionary).</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.makeelement">
-<code class="sig-name descname">makeelement</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">_tag</span></em>, <em class="sig-param"><span class="n">attrib</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">nsmap</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_extra</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.makeelement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.makeelement">
+<span class="sig-name descname"><span class="pre">makeelement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_tag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrib</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nsmap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_extra</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.makeelement" title="Permalink to this definition"></a></dt>
<dd><p>Creates a new element associated with the same document.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.remove">
-<code class="sig-name descname">remove</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">element</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.remove" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.remove">
+<span class="sig-name descname"><span class="pre">remove</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.remove" title="Permalink to this definition"></a></dt>
<dd><p>Removes a matching subelement. Unlike the find methods, this
method compares elements based on identity, not on tag value
or contents.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.replace">
-<code class="sig-name descname">replace</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">old_element</span></em>, <em class="sig-param"><span class="n">new_element</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.replace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.replace">
+<span class="sig-name descname"><span class="pre">replace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">old_element</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">new_element</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.replace" title="Permalink to this definition"></a></dt>
<dd><p>Replaces a subelement with the element passed as second argument.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.set">
-<code class="sig-name descname">set</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.set" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.set">
+<span class="sig-name descname"><span class="pre">set</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.set" title="Permalink to this definition"></a></dt>
<dd><p>Sets an element attribute.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.values">
-<code class="sig-name descname">values</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.values" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.values">
+<span class="sig-name descname"><span class="pre">values</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.values" title="Permalink to this definition"></a></dt>
<dd><p>Gets element attribute values as a sequence of strings. The
attributes are returned in an arbitrary order.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Element.xpath">
-<code class="sig-name descname">xpath</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">_path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">extensions</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">smart_strings</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_variables</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.xpath" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.xpath">
+<span class="sig-name descname"><span class="pre">xpath</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extensions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">smart_strings</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_variables</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Element.xpath" title="Permalink to this definition"></a></dt>
<dd><p>Evaluate an xpath expression using the element as context node.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Element.attrib">
-<code class="sig-name descname">attrib</code><a class="headerlink" href="#lxml.etree._Element.attrib" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.attrib">
+<span class="sig-name descname"><span class="pre">attrib</span></span><a class="headerlink" href="#lxml.etree._Element.attrib" title="Permalink to this definition"></a></dt>
<dd><p>Element attribute dictionary. Where possible, use get(), set(),
keys(), values() and items() to access element attributes.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Element.base">
-<code class="sig-name descname">base</code><a class="headerlink" href="#lxml.etree._Element.base" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.base">
+<span class="sig-name descname"><span class="pre">base</span></span><a class="headerlink" href="#lxml.etree._Element.base" title="Permalink to this definition"></a></dt>
<dd><p>The base URI of the Element (xml:base or HTML base URL).
None if the base URI is unknown.</p>
<p>Note that the value depends on the URL of the document that
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Element.nsmap">
-<code class="sig-name descname">nsmap</code><a class="headerlink" href="#lxml.etree._Element.nsmap" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.nsmap">
+<span class="sig-name descname"><span class="pre">nsmap</span></span><a class="headerlink" href="#lxml.etree._Element.nsmap" title="Permalink to this definition"></a></dt>
<dd><p>Namespace prefix->URI mapping known in the context of this
Element. This includes all namespace declarations of the
parents.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Element.prefix">
-<code class="sig-name descname">prefix</code><a class="headerlink" href="#lxml.etree._Element.prefix" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.prefix">
+<span class="sig-name descname"><span class="pre">prefix</span></span><a class="headerlink" href="#lxml.etree._Element.prefix" title="Permalink to this definition"></a></dt>
<dd><p>Namespace prefix or None.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Element.sourceline">
-<code class="sig-name descname">sourceline</code><a class="headerlink" href="#lxml.etree._Element.sourceline" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.sourceline">
+<span class="sig-name descname"><span class="pre">sourceline</span></span><a class="headerlink" href="#lxml.etree._Element.sourceline" title="Permalink to this definition"></a></dt>
<dd><p>Original line number as found by the parser or None if unknown.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Element.tag">
-<code class="sig-name descname">tag</code><a class="headerlink" href="#lxml.etree._Element.tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.tag">
+<span class="sig-name descname"><span class="pre">tag</span></span><a class="headerlink" href="#lxml.etree._Element.tag" title="Permalink to this definition"></a></dt>
<dd><p>Element tag</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Element.tail">
-<code class="sig-name descname">tail</code><a class="headerlink" href="#lxml.etree._Element.tail" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.tail">
+<span class="sig-name descname"><span class="pre">tail</span></span><a class="headerlink" href="#lxml.etree._Element.tail" title="Permalink to this definition"></a></dt>
<dd><p>Text after this element’s end tag, but before the next sibling
element’s start tag. This is either a string or the value None, if
there was no text.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Element.text">
-<code class="sig-name descname">text</code><a class="headerlink" href="#lxml.etree._Element.text" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Element.text">
+<span class="sig-name descname"><span class="pre">text</span></span><a class="headerlink" href="#lxml.etree._Element.text" title="Permalink to this definition"></a></dt>
<dd><p>Text before the first subelement. This is either a string or
the value None, if there was no text.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._ElementIterator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_ElementIterator</code><a class="headerlink" href="#lxml.etree._ElementIterator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementIterator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_ElementIterator</span></span><a class="headerlink" href="#lxml.etree._ElementIterator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._ElementTagMatcher" title="lxml.etree._ElementTagMatcher"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._ElementTagMatcher</span></code></a></p>
<p>Dead but public. :)</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._ElementMatchIterator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_ElementMatchIterator</code><a class="headerlink" href="#lxml.etree._ElementMatchIterator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementMatchIterator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_ElementMatchIterator</span></span><a class="headerlink" href="#lxml.etree._ElementMatchIterator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._ElementStringResult">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_ElementStringResult</code><a class="headerlink" href="#lxml.etree._ElementStringResult" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementStringResult">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_ElementStringResult</span></span><a class="headerlink" href="#lxml.etree._ElementStringResult" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">bytes</span></code></p>
<dl class="py method">
-<dt id="lxml.etree._ElementStringResult.getparent">
-<code class="sig-name descname">getparent</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementStringResult.getparent" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementStringResult.getparent">
+<span class="sig-name descname"><span class="pre">getparent</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementStringResult.getparent" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._ElementTagMatcher">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_ElementTagMatcher</code><a class="headerlink" href="#lxml.etree._ElementTagMatcher" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTagMatcher">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_ElementTagMatcher</span></span><a class="headerlink" href="#lxml.etree._ElementTagMatcher" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Dead but public. :)</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._ElementTree">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_ElementTree</code><a class="headerlink" href="#lxml.etree._ElementTree" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_ElementTree</span></span><a class="headerlink" href="#lxml.etree._ElementTree" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="py method">
-<dt id="lxml.etree._ElementTree._setroot">
-<code class="sig-name descname">_setroot</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">root</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree._setroot" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree._setroot">
+<span class="sig-name descname"><span class="pre">_setroot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">root</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree._setroot" title="Permalink to this definition"></a></dt>
<dd><p>Relocate the ElementTree to a new root node.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.find">
-<code class="sig-name descname">find</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.find" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.find">
+<span class="sig-name descname"><span class="pre">find</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.find" title="Permalink to this definition"></a></dt>
<dd><p>Finds the first toplevel element with given tag. Same as
<code class="docutils literal notranslate"><span class="pre">tree.getroot().find(path)</span></code>.</p>
<p>The optional <code class="docutils literal notranslate"><span class="pre">namespaces</span></code> argument accepts a
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.findall">
-<code class="sig-name descname">findall</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.findall" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.findall">
+<span class="sig-name descname"><span class="pre">findall</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.findall" title="Permalink to this definition"></a></dt>
<dd><p>Finds all elements matching the ElementPath expression. Same as
getroot().findall(path).</p>
<p>The optional <code class="docutils literal notranslate"><span class="pre">namespaces</span></code> argument accepts a
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.findtext">
-<code class="sig-name descname">findtext</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.findtext" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.findtext">
+<span class="sig-name descname"><span class="pre">findtext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.findtext" title="Permalink to this definition"></a></dt>
<dd><p>Finds the text for the first element matching the ElementPath
expression. Same as getroot().findtext(path)</p>
<p>The optional <code class="docutils literal notranslate"><span class="pre">namespaces</span></code> argument accepts a
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.getelementpath">
-<code class="sig-name descname">getelementpath</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">element</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.getelementpath" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.getelementpath">
+<span class="sig-name descname"><span class="pre">getelementpath</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.getelementpath" title="Permalink to this definition"></a></dt>
<dd><p>Returns a structural, absolute ElementPath expression to find the
element. This path can be used in the .find() method to look up
the element, provided that the elements along the path and their
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.getiterator">
-<code class="sig-name descname">getiterator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tags</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.getiterator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.getiterator">
+<span class="sig-name descname"><span class="pre">getiterator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tags</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.getiterator" title="Permalink to this definition"></a></dt>
<dd><p>Returns a sequence or iterator of all elements in document order
(depth first pre-order), starting with the root element.</p>
<p>Can be restricted to find only elements with specific tags,
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.getpath">
-<code class="sig-name descname">getpath</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">element</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.getpath" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.getpath">
+<span class="sig-name descname"><span class="pre">getpath</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.getpath" title="Permalink to this definition"></a></dt>
<dd><p>Returns a structural, absolute XPath expression to find the element.</p>
<p>For namespaced elements, the expression uses prefixes from the
document, which therefore need to be provided in order to make any
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.getroot">
-<code class="sig-name descname">getroot</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.getroot" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.getroot">
+<span class="sig-name descname"><span class="pre">getroot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.getroot" title="Permalink to this definition"></a></dt>
<dd><p>Gets the root element for this tree.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.iter">
-<code class="sig-name descname">iter</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tags</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.iter" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.iter">
+<span class="sig-name descname"><span class="pre">iter</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tags</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.iter" title="Permalink to this definition"></a></dt>
<dd><p>Creates an iterator for the root element. The iterator loops over
all elements in this tree, in document order. Note that siblings
of the root element (comments or processing instructions) are not
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.iterfind">
-<code class="sig-name descname">iterfind</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.iterfind" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.iterfind">
+<span class="sig-name descname"><span class="pre">iterfind</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.iterfind" title="Permalink to this definition"></a></dt>
<dd><p>Iterates over all elements matching the ElementPath expression.
Same as getroot().iterfind(path).</p>
<p>The optional <code class="docutils literal notranslate"><span class="pre">namespaces</span></code> argument accepts a
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.parse">
-<code class="sig-name descname">parse</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">source</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.parse" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.parse">
+<span class="sig-name descname"><span class="pre">parse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.parse" title="Permalink to this definition"></a></dt>
<dd><p>Updates self with the content of source and returns its root.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.relaxng">
-<code class="sig-name descname">relaxng</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">relaxng</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.relaxng" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.relaxng">
+<span class="sig-name descname"><span class="pre">relaxng</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">relaxng</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.relaxng" title="Permalink to this definition"></a></dt>
<dd><p>Validate this document using other document.</p>
<p>The relaxng argument is a tree that should contain a Relax NG schema.</p>
<p>Returns True or False, depending on whether validation
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.write">
-<code class="sig-name descname">write</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">file</span></em>, <em class="sig-param"><span class="o">*</span></em>, <em class="sig-param"><span class="n">encoding</span></em>, <em class="sig-param"><span class="n">method</span></em>, <em class="sig-param"><span class="n">pretty_print</span></em>, <em class="sig-param"><span class="n">xml_declaration</span></em>, <em class="sig-param"><span class="n">with_tail</span></em>, <em class="sig-param"><span class="n">standalone</span></em>, <em class="sig-param"><span class="n">doctype</span></em>, <em class="sig-param"><span class="n">compression</span></em>, <em class="sig-param"><span class="n">exclusive</span></em>, <em class="sig-param"><span class="n">inclusive_ns_prefixes</span></em>, <em class="sig-param"><span class="n">with_comments</span></em>, <em class="sig-param"><span class="n">strip_text</span></em>, <em class="sig-param"><span class="n">docstring</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.write" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.write">
+<span class="sig-name descname"><span class="pre">write</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">method</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pretty_print</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xml_declaration</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_tail</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">standalone</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">doctype</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compression</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exclusive</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inclusive_ns_prefixes</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_comments</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strip_text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">docstring</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.write" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>write(self, file, encoding=None, method=”xml”,</dt><dd><p>pretty_print=False, xml_declaration=None, with_tail=True,
standalone=None, doctype=None, compression=0,
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.write_c14n">
-<code class="sig-name descname">write_c14n</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">file</span></em>, <em class="sig-param"><span class="o">*</span></em>, <em class="sig-param"><span class="n">exclusive</span></em>, <em class="sig-param"><span class="n">with_comments</span></em>, <em class="sig-param"><span class="n">compression</span></em>, <em class="sig-param"><span class="n">inclusive_ns_prefixes</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.write_c14n" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.write_c14n">
+<span class="sig-name descname"><span class="pre">write_c14n</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exclusive</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_comments</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compression</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inclusive_ns_prefixes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.write_c14n" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>write_c14n(self, file, exclusive=False, with_comments=True,</dt><dd><p>compression=0, inclusive_ns_prefixes=None)</p>
</dd>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.xinclude">
-<code class="sig-name descname">xinclude</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.xinclude" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.xinclude">
+<span class="sig-name descname"><span class="pre">xinclude</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.xinclude" title="Permalink to this definition"></a></dt>
<dd><p>Process the XInclude nodes in this document and include the
referenced XML fragments.</p>
<p>There is support for loading files through the file system, HTTP and
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.xmlschema">
-<code class="sig-name descname">xmlschema</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">xmlschema</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.xmlschema" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.xmlschema">
+<span class="sig-name descname"><span class="pre">xmlschema</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xmlschema</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.xmlschema" title="Permalink to this definition"></a></dt>
<dd><p>Validate this document using other document.</p>
<p>The xmlschema argument is a tree that should contain an XML Schema.</p>
<p>Returns True or False, depending on whether validation
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.xpath">
-<code class="sig-name descname">xpath</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">_path</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">extensions</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">smart_strings</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_variables</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.xpath" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.xpath">
+<span class="sig-name descname"><span class="pre">xpath</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extensions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">smart_strings</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_variables</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.xpath" title="Permalink to this definition"></a></dt>
<dd><p>XPath evaluate in context of document.</p>
<p><code class="docutils literal notranslate"><span class="pre">namespaces</span></code> is an optional dictionary with prefix to namespace URI
mappings, used by XPath. <code class="docutils literal notranslate"><span class="pre">extensions</span></code> defines additional extension
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ElementTree.xslt">
-<code class="sig-name descname">xslt</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">_xslt</span></em>, <em class="sig-param"><span class="n">extensions</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">access_control</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_kw</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.xslt" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.xslt">
+<span class="sig-name descname"><span class="pre">xslt</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_xslt</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extensions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">access_control</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementTree.xslt" title="Permalink to this definition"></a></dt>
<dd><p>Transform this document using other document.</p>
<p>xslt is a tree that should be XSLT
keyword parameters are XSLT transformation parameters.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._ElementTree.docinfo">
-<code class="sig-name descname">docinfo</code><a class="headerlink" href="#lxml.etree._ElementTree.docinfo" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.docinfo">
+<span class="sig-name descname"><span class="pre">docinfo</span></span><a class="headerlink" href="#lxml.etree._ElementTree.docinfo" title="Permalink to this definition"></a></dt>
<dd><p>Information about the document provided by parser and DTD.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._ElementTree.parser">
-<code class="sig-name descname">parser</code><a class="headerlink" href="#lxml.etree._ElementTree.parser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementTree.parser">
+<span class="sig-name descname"><span class="pre">parser</span></span><a class="headerlink" href="#lxml.etree._ElementTree.parser" title="Permalink to this definition"></a></dt>
<dd><p>The parser that was used to parse the document in this ElementTree.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._ElementUnicodeResult">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_ElementUnicodeResult</code><a class="headerlink" href="#lxml.etree._ElementUnicodeResult" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementUnicodeResult">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_ElementUnicodeResult</span></span><a class="headerlink" href="#lxml.etree._ElementUnicodeResult" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></p>
<dl class="py method">
-<dt id="lxml.etree._ElementUnicodeResult.getparent">
-<code class="sig-name descname">getparent</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementUnicodeResult.getparent" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementUnicodeResult.getparent">
+<span class="sig-name descname"><span class="pre">getparent</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ElementUnicodeResult.getparent" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._ElementUnicodeResult.attrname">
-<code class="sig-name descname">attrname</code><a class="headerlink" href="#lxml.etree._ElementUnicodeResult.attrname" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementUnicodeResult.attrname">
+<span class="sig-name descname"><span class="pre">attrname</span></span><a class="headerlink" href="#lxml.etree._ElementUnicodeResult.attrname" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._ElementUnicodeResult.is_attribute">
-<code class="sig-name descname">is_attribute</code><a class="headerlink" href="#lxml.etree._ElementUnicodeResult.is_attribute" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementUnicodeResult.is_attribute">
+<span class="sig-name descname"><span class="pre">is_attribute</span></span><a class="headerlink" href="#lxml.etree._ElementUnicodeResult.is_attribute" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._ElementUnicodeResult.is_tail">
-<code class="sig-name descname">is_tail</code><a class="headerlink" href="#lxml.etree._ElementUnicodeResult.is_tail" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementUnicodeResult.is_tail">
+<span class="sig-name descname"><span class="pre">is_tail</span></span><a class="headerlink" href="#lxml.etree._ElementUnicodeResult.is_tail" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._ElementUnicodeResult.is_text">
-<code class="sig-name descname">is_text</code><a class="headerlink" href="#lxml.etree._ElementUnicodeResult.is_text" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ElementUnicodeResult.is_text">
+<span class="sig-name descname"><span class="pre">is_text</span></span><a class="headerlink" href="#lxml.etree._ElementUnicodeResult.is_text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._Entity">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_Entity</code><a class="headerlink" href="#lxml.etree._Entity" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Entity">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_Entity</span></span><a class="headerlink" href="#lxml.etree._Entity" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.__ContentOnlyElement</span></code></p>
<dl class="py attribute">
-<dt id="lxml.etree._Entity.name">
-<code class="sig-name descname">name</code><a class="headerlink" href="#lxml.etree._Entity.name" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Entity.name">
+<span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#lxml.etree._Entity.name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Entity.tag">
-<code class="sig-name descname">tag</code><a class="headerlink" href="#lxml.etree._Entity.tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Entity.tag">
+<span class="sig-name descname"><span class="pre">tag</span></span><a class="headerlink" href="#lxml.etree._Entity.tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Entity.text">
-<code class="sig-name descname">text</code><a class="headerlink" href="#lxml.etree._Entity.text" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Entity.text">
+<span class="sig-name descname"><span class="pre">text</span></span><a class="headerlink" href="#lxml.etree._Entity.text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._ErrorLog">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_ErrorLog</code><a class="headerlink" href="#lxml.etree._ErrorLog" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ErrorLog">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_ErrorLog</span></span><a class="headerlink" href="#lxml.etree._ErrorLog" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._ListErrorLog" title="lxml.etree._ListErrorLog"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._ListErrorLog</span></code></a></p>
<dl class="py method">
-<dt id="lxml.etree._ErrorLog.clear">
-<code class="sig-name descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ErrorLog.clear" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ErrorLog.clear">
+<span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ErrorLog.clear" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ErrorLog.copy">
-<code class="sig-name descname">copy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ErrorLog.copy" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ErrorLog.copy">
+<span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ErrorLog.copy" title="Permalink to this definition"></a></dt>
<dd><p>Creates a shallow copy of this error log and the list of entries.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ErrorLog.receive">
-<code class="sig-name descname">receive</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">entry</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ErrorLog.receive" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ErrorLog.receive">
+<span class="sig-name descname"><span class="pre">receive</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">entry</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ErrorLog.receive" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._FeedParser">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_FeedParser</code><a class="headerlink" href="#lxml.etree._FeedParser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._FeedParser">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_FeedParser</span></span><a class="headerlink" href="#lxml.etree._FeedParser" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._BaseParser</span></code></p>
<dl class="py method">
-<dt id="lxml.etree._FeedParser.close">
-<code class="sig-name descname">close</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._FeedParser.close" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._FeedParser.close">
+<span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._FeedParser.close" title="Permalink to this definition"></a></dt>
<dd><p>Terminates feeding data to this parser. This tells the parser to
process any remaining data in the feed buffer, and then returns the
root Element of the tree that was parsed.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._FeedParser.feed">
-<code class="sig-name descname">feed</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._FeedParser.feed" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._FeedParser.feed">
+<span class="sig-name descname"><span class="pre">feed</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._FeedParser.feed" title="Permalink to this definition"></a></dt>
<dd><p>Feeds data to the parser. The argument should be an 8-bit string
buffer containing encoded data, although Unicode is supported as long
as both string types are not mixed.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._FeedParser.feed_error_log">
-<code class="sig-name descname">feed_error_log</code><a class="headerlink" href="#lxml.etree._FeedParser.feed_error_log" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._FeedParser.feed_error_log">
+<span class="sig-name descname"><span class="pre">feed_error_log</span></span><a class="headerlink" href="#lxml.etree._FeedParser.feed_error_log" title="Permalink to this definition"></a></dt>
<dd><p>The error log of the last (or current) run of the feed parser.</p>
<p>Note that this is local to the feed parser and thus is
different from what the <code class="docutils literal notranslate"><span class="pre">error_log</span></code> property returns.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._IDDict">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_IDDict</code><a class="headerlink" href="#lxml.etree._IDDict" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._IDDict">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_IDDict</span></span><a class="headerlink" href="#lxml.etree._IDDict" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>IDDict(self, etree)
A dictionary-like proxy class that mapps ID attributes to elements.</p>
document, otherwise the behaviour is undefined. Elements and XML trees
that were created or modified ‘by hand’ are not supported.</p>
<dl class="py method">
-<dt id="lxml.etree._IDDict.copy">
-<code class="sig-name descname">copy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.copy" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._IDDict.copy">
+<span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.copy" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._IDDict.get">
-<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">id_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.get" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._IDDict.get">
+<span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">id_name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.get" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._IDDict.has_key">
-<code class="sig-name descname">has_key</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">id_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.has_key" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._IDDict.has_key">
+<span class="sig-name descname"><span class="pre">has_key</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">id_name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.has_key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._IDDict.items">
-<code class="sig-name descname">items</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.items" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._IDDict.items">
+<span class="sig-name descname"><span class="pre">items</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.items" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._IDDict.iteritems">
-<code class="sig-name descname">iteritems</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.iteritems" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._IDDict.iteritems">
+<span class="sig-name descname"><span class="pre">iteritems</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.iteritems" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._IDDict.iterkeys">
-<code class="sig-name descname">iterkeys</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.iterkeys" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._IDDict.iterkeys">
+<span class="sig-name descname"><span class="pre">iterkeys</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.iterkeys" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._IDDict.itervalues">
-<code class="sig-name descname">itervalues</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.itervalues" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._IDDict.itervalues">
+<span class="sig-name descname"><span class="pre">itervalues</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.itervalues" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._IDDict.keys">
-<code class="sig-name descname">keys</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.keys" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._IDDict.keys">
+<span class="sig-name descname"><span class="pre">keys</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.keys" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._IDDict.values">
-<code class="sig-name descname">values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.values" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._IDDict.values">
+<span class="sig-name descname"><span class="pre">values</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._IDDict.values" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._ListErrorLog">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_ListErrorLog</code><a class="headerlink" href="#lxml.etree._ListErrorLog" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ListErrorLog">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_ListErrorLog</span></span><a class="headerlink" href="#lxml.etree._ListErrorLog" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._BaseErrorLog" title="lxml.etree._BaseErrorLog"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._BaseErrorLog</span></code></a></p>
<p>Immutable base version of a list based error log.</p>
<dl class="py method">
-<dt id="lxml.etree._ListErrorLog.copy">
-<code class="sig-name descname">copy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.copy" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ListErrorLog.copy">
+<span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.copy" title="Permalink to this definition"></a></dt>
<dd><p>Creates a shallow copy of this error log. Reuses the list of
entries.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ListErrorLog.filter_domains">
-<code class="sig-name descname">filter_domains</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">domains</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_domains" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ListErrorLog.filter_domains">
+<span class="sig-name descname"><span class="pre">filter_domains</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">domains</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_domains" title="Permalink to this definition"></a></dt>
<dd><p>Filter the errors by the given domains and return a new error log
containing the matches.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ListErrorLog.filter_from_errors">
-<code class="sig-name descname">filter_from_errors</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_from_errors" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ListErrorLog.filter_from_errors">
+<span class="sig-name descname"><span class="pre">filter_from_errors</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_from_errors" title="Permalink to this definition"></a></dt>
<dd><p>Convenience method to get all error messages or worse.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ListErrorLog.filter_from_fatals">
-<code class="sig-name descname">filter_from_fatals</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_from_fatals" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ListErrorLog.filter_from_fatals">
+<span class="sig-name descname"><span class="pre">filter_from_fatals</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_from_fatals" title="Permalink to this definition"></a></dt>
<dd><p>Convenience method to get all fatal error messages.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ListErrorLog.filter_from_level">
-<code class="sig-name descname">filter_from_level</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">level</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_from_level" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ListErrorLog.filter_from_level">
+<span class="sig-name descname"><span class="pre">filter_from_level</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">level</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_from_level" title="Permalink to this definition"></a></dt>
<dd><p>Return a log with all messages of the requested level of worse.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ListErrorLog.filter_from_warnings">
-<code class="sig-name descname">filter_from_warnings</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_from_warnings" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ListErrorLog.filter_from_warnings">
+<span class="sig-name descname"><span class="pre">filter_from_warnings</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_from_warnings" title="Permalink to this definition"></a></dt>
<dd><p>Convenience method to get all warnings or worse.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ListErrorLog.filter_levels">
-<code class="sig-name descname">filter_levels</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">levels</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_levels" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ListErrorLog.filter_levels">
+<span class="sig-name descname"><span class="pre">filter_levels</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">levels</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_levels" title="Permalink to this definition"></a></dt>
<dd><p>Filter the errors by the given error levels and return a new
error log containing the matches.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._ListErrorLog.filter_types">
-<code class="sig-name descname">filter_types</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">types</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_types" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ListErrorLog.filter_types">
+<span class="sig-name descname"><span class="pre">filter_types</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">types</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ListErrorLog.filter_types" title="Permalink to this definition"></a></dt>
<dd><p>Filter the errors by the given types and return a new error
log containing the matches.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._LogEntry">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_LogEntry</code><a class="headerlink" href="#lxml.etree._LogEntry" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_LogEntry</span></span><a class="headerlink" href="#lxml.etree._LogEntry" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>A log message entry from an error log.</p>
<p>Attributes:</p>
<li><p>path: the location in which the error was found (if available)</p></li>
</ul>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.column">
-<code class="sig-name descname">column</code><a class="headerlink" href="#lxml.etree._LogEntry.column" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.column">
+<span class="sig-name descname"><span class="pre">column</span></span><a class="headerlink" href="#lxml.etree._LogEntry.column" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.domain">
-<code class="sig-name descname">domain</code><a class="headerlink" href="#lxml.etree._LogEntry.domain" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.domain">
+<span class="sig-name descname"><span class="pre">domain</span></span><a class="headerlink" href="#lxml.etree._LogEntry.domain" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.domain_name">
-<code class="sig-name descname">domain_name</code><a class="headerlink" href="#lxml.etree._LogEntry.domain_name" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.domain_name">
+<span class="sig-name descname"><span class="pre">domain_name</span></span><a class="headerlink" href="#lxml.etree._LogEntry.domain_name" title="Permalink to this definition"></a></dt>
<dd><p>The name of the error domain. See lxml.etree.ErrorDomains</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.filename">
-<code class="sig-name descname">filename</code><a class="headerlink" href="#lxml.etree._LogEntry.filename" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.filename">
+<span class="sig-name descname"><span class="pre">filename</span></span><a class="headerlink" href="#lxml.etree._LogEntry.filename" title="Permalink to this definition"></a></dt>
<dd><p>The file path where the report originated, if any.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.level">
-<code class="sig-name descname">level</code><a class="headerlink" href="#lxml.etree._LogEntry.level" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.level">
+<span class="sig-name descname"><span class="pre">level</span></span><a class="headerlink" href="#lxml.etree._LogEntry.level" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.level_name">
-<code class="sig-name descname">level_name</code><a class="headerlink" href="#lxml.etree._LogEntry.level_name" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.level_name">
+<span class="sig-name descname"><span class="pre">level_name</span></span><a class="headerlink" href="#lxml.etree._LogEntry.level_name" title="Permalink to this definition"></a></dt>
<dd><p>The name of the error level. See lxml.etree.ErrorLevels</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.line">
-<code class="sig-name descname">line</code><a class="headerlink" href="#lxml.etree._LogEntry.line" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.line">
+<span class="sig-name descname"><span class="pre">line</span></span><a class="headerlink" href="#lxml.etree._LogEntry.line" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.message">
-<code class="sig-name descname">message</code><a class="headerlink" href="#lxml.etree._LogEntry.message" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.message">
+<span class="sig-name descname"><span class="pre">message</span></span><a class="headerlink" href="#lxml.etree._LogEntry.message" title="Permalink to this definition"></a></dt>
<dd><p>The log message string.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.path">
-<code class="sig-name descname">path</code><a class="headerlink" href="#lxml.etree._LogEntry.path" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.path">
+<span class="sig-name descname"><span class="pre">path</span></span><a class="headerlink" href="#lxml.etree._LogEntry.path" title="Permalink to this definition"></a></dt>
<dd><p>The XPath for the node where the error was detected.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.type">
-<code class="sig-name descname">type</code><a class="headerlink" href="#lxml.etree._LogEntry.type" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.type">
+<span class="sig-name descname"><span class="pre">type</span></span><a class="headerlink" href="#lxml.etree._LogEntry.type" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._LogEntry.type_name">
-<code class="sig-name descname">type_name</code><a class="headerlink" href="#lxml.etree._LogEntry.type_name" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._LogEntry.type_name">
+<span class="sig-name descname"><span class="pre">type_name</span></span><a class="headerlink" href="#lxml.etree._LogEntry.type_name" title="Permalink to this definition"></a></dt>
<dd><p>The name of the error type. See lxml.etree.ErrorTypes</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._ProcessingInstruction">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_ProcessingInstruction</code><a class="headerlink" href="#lxml.etree._ProcessingInstruction" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ProcessingInstruction">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_ProcessingInstruction</span></span><a class="headerlink" href="#lxml.etree._ProcessingInstruction" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.__ContentOnlyElement</span></code></p>
<dl class="py method">
-<dt id="lxml.etree._ProcessingInstruction.get">
-<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ProcessingInstruction.get" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ProcessingInstruction.get">
+<span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._ProcessingInstruction.get" title="Permalink to this definition"></a></dt>
<dd><p>Try to parse pseudo-attributes from the text content of the
processing instruction, search for one with the given key as
name and return its associated value.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._ProcessingInstruction.attrib">
-<code class="sig-name descname">attrib</code><a class="headerlink" href="#lxml.etree._ProcessingInstruction.attrib" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ProcessingInstruction.attrib">
+<span class="sig-name descname"><span class="pre">attrib</span></span><a class="headerlink" href="#lxml.etree._ProcessingInstruction.attrib" title="Permalink to this definition"></a></dt>
<dd><p>Returns a dict containing all pseudo-attributes that can be
parsed from the text content of this processing instruction.
Note that modifying the dict currently has no effect on the
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._ProcessingInstruction.tag">
-<code class="sig-name descname">tag</code><a class="headerlink" href="#lxml.etree._ProcessingInstruction.tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ProcessingInstruction.tag">
+<span class="sig-name descname"><span class="pre">tag</span></span><a class="headerlink" href="#lxml.etree._ProcessingInstruction.tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._ProcessingInstruction.target">
-<code class="sig-name descname">target</code><a class="headerlink" href="#lxml.etree._ProcessingInstruction.target" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._ProcessingInstruction.target">
+<span class="sig-name descname"><span class="pre">target</span></span><a class="headerlink" href="#lxml.etree._ProcessingInstruction.target" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._RotatingErrorLog">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_RotatingErrorLog</code><a class="headerlink" href="#lxml.etree._RotatingErrorLog" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._RotatingErrorLog">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_RotatingErrorLog</span></span><a class="headerlink" href="#lxml.etree._RotatingErrorLog" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._ErrorLog" title="lxml.etree._ErrorLog"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._ErrorLog</span></code></a></p>
<dl class="py method">
-<dt id="lxml.etree._RotatingErrorLog.receive">
-<code class="sig-name descname">receive</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">entry</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._RotatingErrorLog.receive" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._RotatingErrorLog.receive">
+<span class="sig-name descname"><span class="pre">receive</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">entry</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._RotatingErrorLog.receive" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._SaxParserTarget">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_SaxParserTarget</code><a class="headerlink" href="#lxml.etree._SaxParserTarget" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._SaxParserTarget">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_SaxParserTarget</span></span><a class="headerlink" href="#lxml.etree._SaxParserTarget" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._Validator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_Validator</code><a class="headerlink" href="#lxml.etree._Validator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Validator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_Validator</span></span><a class="headerlink" href="#lxml.etree._Validator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Base class for XML validators.</p>
<dl class="py method">
-<dt id="lxml.etree._Validator._append_log_message">
-<code class="sig-name descname">_append_log_message</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">domain</span></em>, <em class="sig-param"><span class="n">type</span></em>, <em class="sig-param"><span class="n">level</span></em>, <em class="sig-param"><span class="n">line</span></em>, <em class="sig-param"><span class="n">message</span></em>, <em class="sig-param"><span class="n">filename</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Validator._append_log_message" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Validator._append_log_message">
+<span class="sig-name descname"><span class="pre">_append_log_message</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">domain</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">level</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">line</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">message</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Validator._append_log_message" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Validator._clear_error_log">
-<code class="sig-name descname">_clear_error_log</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Validator._clear_error_log" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Validator._clear_error_log">
+<span class="sig-name descname"><span class="pre">_clear_error_log</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Validator._clear_error_log" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Validator.assertValid">
-<code class="sig-name descname">assertValid</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">etree</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Validator.assertValid" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Validator.assertValid">
+<span class="sig-name descname"><span class="pre">assertValid</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">etree</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Validator.assertValid" title="Permalink to this definition"></a></dt>
<dd><p>Raises <cite>DocumentInvalid</cite> if the document does not comply with the schema.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Validator.assert_">
-<code class="sig-name descname">assert_</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">etree</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Validator.assert_" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Validator.assert_">
+<span class="sig-name descname"><span class="pre">assert_</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">etree</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Validator.assert_" title="Permalink to this definition"></a></dt>
<dd><p>Raises <cite>AssertionError</cite> if the document does not comply with the schema.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._Validator.validate">
-<code class="sig-name descname">validate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">etree</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Validator.validate" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Validator.validate">
+<span class="sig-name descname"><span class="pre">validate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">etree</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._Validator.validate" title="Permalink to this definition"></a></dt>
<dd><p>Validate the document using this schema.</p>
<p>Returns true if document is valid, false if not.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._Validator.error_log">
-<code class="sig-name descname">error_log</code><a class="headerlink" href="#lxml.etree._Validator.error_log" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._Validator.error_log">
+<span class="sig-name descname"><span class="pre">error_log</span></span><a class="headerlink" href="#lxml.etree._Validator.error_log" title="Permalink to this definition"></a></dt>
<dd><p>The log of validation errors and warnings.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._XPathEvaluatorBase">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_XPathEvaluatorBase</code><a class="headerlink" href="#lxml.etree._XPathEvaluatorBase" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._XPathEvaluatorBase">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_XPathEvaluatorBase</span></span><a class="headerlink" href="#lxml.etree._XPathEvaluatorBase" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="py method">
-<dt id="lxml.etree._XPathEvaluatorBase.evaluate">
-<code class="sig-name descname">evaluate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">_eval_arg</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_variables</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._XPathEvaluatorBase.evaluate" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._XPathEvaluatorBase.evaluate">
+<span class="sig-name descname"><span class="pre">evaluate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_eval_arg</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_variables</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._XPathEvaluatorBase.evaluate" title="Permalink to this definition"></a></dt>
<dd><p>Evaluate an XPath expression.</p>
<p>Instead of calling this method, you can also call the evaluator object
itself.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._XPathEvaluatorBase.error_log">
-<code class="sig-name descname">error_log</code><a class="headerlink" href="#lxml.etree._XPathEvaluatorBase.error_log" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._XPathEvaluatorBase.error_log">
+<span class="sig-name descname"><span class="pre">error_log</span></span><a class="headerlink" href="#lxml.etree._XPathEvaluatorBase.error_log" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._XSLTProcessingInstruction">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_XSLTProcessingInstruction</code><a class="headerlink" href="#lxml.etree._XSLTProcessingInstruction" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._XSLTProcessingInstruction">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_XSLTProcessingInstruction</span></span><a class="headerlink" href="#lxml.etree._XSLTProcessingInstruction" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.PIBase" title="lxml.etree.PIBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.PIBase</span></code></a></p>
<dl class="py method">
-<dt id="lxml.etree._XSLTProcessingInstruction.parseXSL">
-<code class="sig-name descname">parseXSL</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._XSLTProcessingInstruction.parseXSL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._XSLTProcessingInstruction.parseXSL">
+<span class="sig-name descname"><span class="pre">parseXSL</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._XSLTProcessingInstruction.parseXSL" title="Permalink to this definition"></a></dt>
<dd><p>Try to parse the stylesheet referenced by this PI and return
an ElementTree for it. If the stylesheet is embedded in the
same document (referenced via xml:id), find and return an
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree._XSLTProcessingInstruction.set">
-<code class="sig-name descname">set</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._XSLTProcessingInstruction.set" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._XSLTProcessingInstruction.set">
+<span class="sig-name descname"><span class="pre">set</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._XSLTProcessingInstruction.set" title="Permalink to this definition"></a></dt>
<dd><p>Supports setting the ‘href’ pseudo-attribute in the text of
the processing instruction.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree._XSLTResultTree">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">_XSLTResultTree</code><a class="headerlink" href="#lxml.etree._XSLTResultTree" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._XSLTResultTree">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">_XSLTResultTree</span></span><a class="headerlink" href="#lxml.etree._XSLTResultTree" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree._ElementTree" title="lxml.etree._ElementTree"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._ElementTree</span></code></a></p>
<p>The result of an XSLT evaluation.</p>
<p>Use <code class="docutils literal notranslate"><span class="pre">str()</span></code> or <code class="docutils literal notranslate"><span class="pre">bytes()</span></code> (or <code class="docutils literal notranslate"><span class="pre">unicode()</span></code> in Python 2.x) to serialise to a string,
and the <code class="docutils literal notranslate"><span class="pre">.write_output()</span></code> method to write serialise to a file.</p>
<dl class="py method">
-<dt id="lxml.etree._XSLTResultTree.write_output">
-<code class="sig-name descname">write_output</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">file</span></em>, <em class="sig-param"><span class="o">*</span></em>, <em class="sig-param"><span class="n">compression</span><span class="o">=</span><span class="default_value">0</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._XSLTResultTree.write_output" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._XSLTResultTree.write_output">
+<span class="sig-name descname"><span class="pre">write_output</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">file</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compression</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree._XSLTResultTree.write_output" title="Permalink to this definition"></a></dt>
<dd><p>Serialise the XSLT output to a file or file-like object.</p>
<p>As opposed to the generic <code class="docutils literal notranslate"><span class="pre">.write()</span></code> method, <code class="docutils literal notranslate"><span class="pre">.write_output()</span></code> serialises
the result as defined by the <code class="docutils literal notranslate"><span class="pre"><xsl:output></span></code> tag.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree._XSLTResultTree.xslt_profile">
-<code class="sig-name descname">xslt_profile</code><a class="headerlink" href="#lxml.etree._XSLTResultTree.xslt_profile" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree._XSLTResultTree.xslt_profile">
+<span class="sig-name descname"><span class="pre">xslt_profile</span></span><a class="headerlink" href="#lxml.etree._XSLTResultTree.xslt_profile" title="Permalink to this definition"></a></dt>
<dd><p>Return an ElementTree with profiling data for the stylesheet run.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.htmlfile">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">htmlfile</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">output_file</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">compression</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">close</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">buffered</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.htmlfile" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.htmlfile">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">htmlfile</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_file</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compression</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">close</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">buffered</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.htmlfile" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.etree.xmlfile" title="lxml.etree.xmlfile"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.xmlfile</span></code></a></p>
<p>A simple mechanism for incremental HTML serialisation. Works the same as
xmlfile.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.iterparse">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">iterparse</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">source</span></em>, <em class="sig-param"><span class="n">events</span><span class="o">=</span><span class="default_value">'end'</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">attribute_defaults</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">dtd_validation</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">load_dtd</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">no_network</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">remove_blank_text</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">remove_comments</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">remove_pis</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">html</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">recover</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">huge_tree</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">schema</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iterparse" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.iterparse">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">iterparse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">events</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">('end',)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attribute_defaults</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dtd_validation</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load_dtd</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_network</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_blank_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_comments</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_pis</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">html</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">recover</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">huge_tree</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">schema</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iterparse" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Incremental parser.</p>
<p>Parses XML into a tree and generates tuples (event, element) in a
</dd>
</dl>
<dl class="py method">
-<dt id="lxml.etree.iterparse.makeelement">
-<code class="sig-name descname">makeelement</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">_tag</span></em>, <em class="sig-param"><span class="n">attrib</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">nsmap</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_extra</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iterparse.makeelement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.iterparse.makeelement">
+<span class="sig-name descname"><span class="pre">makeelement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_tag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrib</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nsmap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_extra</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iterparse.makeelement" title="Permalink to this definition"></a></dt>
<dd><p>Creates a new element associated with this parser.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.etree.iterparse.set_element_class_lookup">
-<code class="sig-name descname">set_element_class_lookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">lookup</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iterparse.set_element_class_lookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.iterparse.set_element_class_lookup">
+<span class="sig-name descname"><span class="pre">set_element_class_lookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lookup</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iterparse.set_element_class_lookup" title="Permalink to this definition"></a></dt>
<dd><p>Set a lookup scheme for element classes generated from this parser.</p>
<p>Reset it by passing None or nothing.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.iterparse.error_log">
-<code class="sig-name descname">error_log</code><a class="headerlink" href="#lxml.etree.iterparse.error_log" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.iterparse.error_log">
+<span class="sig-name descname"><span class="pre">error_log</span></span><a class="headerlink" href="#lxml.etree.iterparse.error_log" title="Permalink to this definition"></a></dt>
<dd><p>The error log of the last (or current) parser run.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.iterparse.resolvers">
-<code class="sig-name descname">resolvers</code><a class="headerlink" href="#lxml.etree.iterparse.resolvers" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.iterparse.resolvers">
+<span class="sig-name descname"><span class="pre">resolvers</span></span><a class="headerlink" href="#lxml.etree.iterparse.resolvers" title="Permalink to this definition"></a></dt>
<dd><p>The custom resolver registry of the last (or current) parser run.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.iterparse.root">
-<code class="sig-name descname">root</code><a class="headerlink" href="#lxml.etree.iterparse.root" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.iterparse.root">
+<span class="sig-name descname"><span class="pre">root</span></span><a class="headerlink" href="#lxml.etree.iterparse.root" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.etree.iterparse.version">
-<code class="sig-name descname">version</code><a class="headerlink" href="#lxml.etree.iterparse.version" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.iterparse.version">
+<span class="sig-name descname"><span class="pre">version</span></span><a class="headerlink" href="#lxml.etree.iterparse.version" title="Permalink to this definition"></a></dt>
<dd><p>The version of the underlying XML parser.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.iterwalk">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">iterwalk</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">element_or_tree</span></em>, <em class="sig-param"><span class="n">events</span><span class="o">=</span><span class="default_value">'end'</span></em>, <em class="sig-param"><span class="n">tag</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iterwalk" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.iterwalk">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">iterwalk</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element_or_tree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">events</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">('end',)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iterwalk" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>A tree walker that generates events from an existing tree as if it
was parsing XML data with <code class="docutils literal notranslate"><span class="pre">iterparse()</span></code>.</p>
descendants of the current element can be excluded from iteration
by calling the <code class="docutils literal notranslate"><span class="pre">skip_subtree()</span></code> method.</p>
<dl class="py method">
-<dt id="lxml.etree.iterwalk.skip_subtree">
-<code class="sig-name descname">skip_subtree</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iterwalk.skip_subtree" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.iterwalk.skip_subtree">
+<span class="sig-name descname"><span class="pre">skip_subtree</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iterwalk.skip_subtree" title="Permalink to this definition"></a></dt>
<dd><p>Prevent descending into the current subtree.
Instead, the next returned event will be the ‘end’ event of the current element
(if included), ignoring any children or descendants.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.etree.xmlfile">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">xmlfile</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">output_file</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">compression</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">close</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">buffered</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.xmlfile" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.xmlfile">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">xmlfile</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_file</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compression</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">close</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">buffered</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.xmlfile" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>A simple mechanism for incremental XML serialisation.</p>
<p>Usage example:</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.Comment">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">Comment</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Comment" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Comment">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">Comment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Comment" title="Permalink to this definition"></a></dt>
<dd><p>Comment element factory. This factory function creates a special element that will
be serialized as an XML comment.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.Element">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">Element</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">_tag</span></em>, <em class="sig-param"><span class="n">attrib</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">nsmap</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_extra</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Element" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Element">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">Element</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">_tag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrib</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nsmap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_extra</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Element" title="Permalink to this definition"></a></dt>
<dd><p>Element factory. This function returns an object implementing the
Element interface.</p>
<p>Also look at the <cite>_Element.makeelement()</cite> and
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.ElementTree">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ElementTree</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">file</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementTree" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ElementTree">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ElementTree</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ElementTree" title="Permalink to this definition"></a></dt>
<dd><p>ElementTree wrapper class.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.Entity">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">Entity</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Entity" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Entity">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">Entity</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Entity" title="Permalink to this definition"></a></dt>
<dd><p>Entity factory. This factory function creates a special element
that will be serialized as an XML entity reference or character
reference. Note, however, that entities will not be automatically
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.Extension">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">Extension</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">module</span></em>, <em class="sig-param"><span class="n">function_mapping</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">ns</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Extension" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.Extension">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">Extension</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">module</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">function_mapping</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ns</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.Extension" title="Permalink to this definition"></a></dt>
<dd><p>Build a dictionary of extension functions from the functions
defined in a module or the methods of an object.</p>
<p>As second argument, you can pass an additional mapping of
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.FunctionNamespace">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">FunctionNamespace</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">ns_uri</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.FunctionNamespace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.FunctionNamespace">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">FunctionNamespace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ns_uri</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.FunctionNamespace" title="Permalink to this definition"></a></dt>
<dd><p>Retrieve the function namespace object associated with the given
URI.</p>
<p>Creates a new one if it does not yet exist. A function namespace
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.HTML">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">HTML</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.HTML" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.HTML">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">HTML</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.HTML" title="Permalink to this definition"></a></dt>
<dd><p>Parses an HTML document from a string constant. Returns the root
node (or the result returned by a parser target). This function
can be used to embed “HTML literals” in Python code.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.PI">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">PI</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">target</span></em>, <em class="sig-param"><span class="n">text</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.PI">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">PI</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.PI" title="Permalink to this definition"></a></dt>
<dd><p>ProcessingInstruction(target, text=None)</p>
<p>ProcessingInstruction element factory. This factory function creates a
special element that will be serialized as an XML processing instruction.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.ProcessingInstruction">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">ProcessingInstruction</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">target</span></em>, <em class="sig-param"><span class="n">text</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ProcessingInstruction" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.ProcessingInstruction">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">ProcessingInstruction</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.ProcessingInstruction" title="Permalink to this definition"></a></dt>
<dd><p>ProcessingInstruction element factory. This factory function creates a
special element that will be serialized as an XML processing instruction.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.SubElement">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">SubElement</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">_parent</span></em>, <em class="sig-param"><span class="n">_tag</span></em>, <em class="sig-param"><span class="n">attrib</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">nsmap</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_extra</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.SubElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.SubElement">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">SubElement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">_parent</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_tag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrib</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nsmap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_extra</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.SubElement" title="Permalink to this definition"></a></dt>
<dd><p>Subelement factory. This function creates an element instance, and
appends it to an existing element.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.XML">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XML</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XML" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XML">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XML</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XML" title="Permalink to this definition"></a></dt>
<dd><p>Parses an XML document or fragment from a string constant.
Returns the root node (or the result returned by a parser target).
This function can be used to embed “XML literals” in Python code,
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.XMLDTDID">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLDTDID</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLDTDID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLDTDID">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLDTDID</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLDTDID" title="Permalink to this definition"></a></dt>
<dd><p>Parse the text and return a tuple (root node, ID dictionary). The root
node is the same as returned by the XML() function. The dictionary
contains string-element pairs. The dictionary keys are the values of ID
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.XMLID">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XMLID</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLID" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XMLID">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XMLID</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XMLID" title="Permalink to this definition"></a></dt>
<dd><p>Parse the text and return a tuple (root node, ID dictionary). The root
node is the same as returned by the XML() function. The dictionary
contains string-element pairs. The dictionary keys are the values of ‘id’
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.XPathEvaluator">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">XPathEvaluator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">etree_or_element</span></em>, <em class="sig-param"><span class="n">namespaces</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">extensions</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">regexp</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">smart_strings</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPathEvaluator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.XPathEvaluator">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">XPathEvaluator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">etree_or_element</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extensions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">regexp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">smart_strings</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.XPathEvaluator" title="Permalink to this definition"></a></dt>
<dd><p>Creates an XPath evaluator for an ElementTree or an Element.</p>
<p>The resulting object can be called with an XPath expression as argument
and XPath variables provided as keyword arguments.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.adopt_external_document">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">adopt_external_document</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">capsule</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.adopt_external_document" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.adopt_external_document">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">adopt_external_document</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">capsule</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.adopt_external_document" title="Permalink to this definition"></a></dt>
<dd><p>Unpack a libxml2 document pointer from a PyCapsule and wrap it in an
lxml ElementTree object.</p>
<p>This allows external libraries to build XML/HTML trees using libxml2
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.canonicalize">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">canonicalize</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">xml_data</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span></em>, <em class="sig-param"><span class="n">out</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">from_file</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">options</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.canonicalize" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.canonicalize">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">canonicalize</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">xml_data</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">out</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">from_file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">options</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.canonicalize" title="Permalink to this definition"></a></dt>
<dd><p>Convert XML to its C14N 2.0 serialised form.</p>
<p>If <em>out</em> is provided, it must be a file or file-like object that receives
the serialised canonical XML output (text, not bytes) through its <code class="docutils literal notranslate"><span class="pre">.write()</span></code>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.cleanup_namespaces">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">cleanup_namespaces</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tree_or_element</span></em>, <em class="sig-param"><span class="n">top_nsmap</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">keep_ns_prefixes</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.cleanup_namespaces" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.cleanup_namespaces">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">cleanup_namespaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tree_or_element</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">top_nsmap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">keep_ns_prefixes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.cleanup_namespaces" title="Permalink to this definition"></a></dt>
<dd><p>Remove all namespace declarations from a subtree that are not used
by any of the elements or attributes in that tree.</p>
<p>If a ‘top_nsmap’ is provided, it must be a mapping from prefixes
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.clear_error_log">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">clear_error_log</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.clear_error_log" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.clear_error_log">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">clear_error_log</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.clear_error_log" title="Permalink to this definition"></a></dt>
<dd><p>Clear the global error log. Note that this log is already bound to a
fixed size.</p>
<p>Note: since lxml 2.2, the global error log is local to a thread
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.dump">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">dump</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">elem</span></em>, <em class="sig-param"><span class="n">pretty_print</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">with_tail</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.dump" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.dump">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">dump</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elem</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pretty_print</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_tail</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.dump" title="Permalink to this definition"></a></dt>
<dd><p>Writes an element tree or element structure to sys.stdout. This function
should be used for debugging only.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.fromstring">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">fromstring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.fromstring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.fromstring">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">fromstring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.fromstring" title="Permalink to this definition"></a></dt>
<dd><p>Parses an XML document or fragment from a string. Returns the
root node (or the result returned by a parser target).</p>
<p>To override the default parser with a different parser you can pass it to
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.fromstringlist">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">fromstringlist</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">strings</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.fromstringlist" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.fromstringlist">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">fromstringlist</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">strings</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.fromstringlist" title="Permalink to this definition"></a></dt>
<dd><p>Parses an XML document from a sequence of strings. Returns the
root node (or the result returned by a parser target).</p>
<p>To override the default parser with a different parser you can pass it to
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.get_default_parser">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">get_default_parser</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.get_default_parser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.get_default_parser">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">get_default_parser</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.get_default_parser" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.etree.indent">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">indent</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tree</span></em>, <em class="sig-param"><span class="n">space</span><span class="o">=</span><span class="default_value">' '</span></em>, <em class="sig-param"><span class="n">level</span><span class="o">=</span><span class="default_value">0</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.indent" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.indent">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">indent</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">space</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'</span>  <span class="pre">'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">level</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.indent" title="Permalink to this definition"></a></dt>
<dd><p>Indent an XML document by inserting newlines and indentation space
after elements.</p>
<p><em>tree</em> is the ElementTree or Element to modify. The (root) element
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.iselement">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">iselement</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iselement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.iselement">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">iselement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.iselement" title="Permalink to this definition"></a></dt>
<dd><p>Checks if an object appears to be a valid element object.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.parse">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">parse</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">source</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.parse" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.parse">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">parse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">source</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.parse" title="Permalink to this definition"></a></dt>
<dd><p>Return an ElementTree object loaded with source elements. If no parser
is provided as second argument, the default parser is used.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">source</span></code> can be any of the following:</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.parseid">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">parseid</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">source</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.parseid" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.parseid">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">parseid</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">source</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.parseid" title="Permalink to this definition"></a></dt>
<dd><p>Parses the source into a tuple containing an ElementTree object and an
ID dictionary. If no parser is provided as second argument, the default
parser is used.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.register_namespace">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">register_namespace</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">prefix</span></em>, <em class="sig-param"><span class="n">uri</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.register_namespace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.register_namespace">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">register_namespace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prefix</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">uri</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.register_namespace" title="Permalink to this definition"></a></dt>
<dd><p>Registers a namespace prefix that newly created Elements in that
namespace will use. The registry is global, and any existing
mapping for either the given prefix or the namespace URI will be
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.set_default_parser">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">set_default_parser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.set_default_parser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.set_default_parser">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">set_default_parser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.set_default_parser" title="Permalink to this definition"></a></dt>
<dd><p>Set a default parser for the current thread. This parser is used
globally whenever no parser is supplied to the various parse functions of
the lxml API. If this function is called without a parser (or if it is
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.set_element_class_lookup">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">set_element_class_lookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">lookup</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.set_element_class_lookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.set_element_class_lookup">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">set_element_class_lookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">lookup</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.set_element_class_lookup" title="Permalink to this definition"></a></dt>
<dd><p>Set the global default element class lookup method.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.strip_attributes">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">strip_attributes</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tree_or_element</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">attribute_names</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.strip_attributes" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.strip_attributes">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">strip_attributes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tree_or_element</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">attribute_names</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.strip_attributes" title="Permalink to this definition"></a></dt>
<dd><p>Delete all attributes with the provided attribute names from an
Element (or ElementTree) and its descendants.</p>
<p>Attribute names can contain wildcards as in <cite>_Element.iter</cite>.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.strip_elements">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">strip_elements</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tree_or_element</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tag_names</span></em>, <em class="sig-param"><span class="n">with_tail</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.strip_elements" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.strip_elements">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">strip_elements</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tree_or_element</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tag_names</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_tail</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.strip_elements" title="Permalink to this definition"></a></dt>
<dd><p>Delete all elements with the provided tag names from a tree or
subtree. This will remove the elements and their entire subtree,
including all their attributes, text content and descendants. It
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.strip_tags">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">strip_tags</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tree_or_element</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">tag_names</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.strip_tags" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.strip_tags">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">strip_tags</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tree_or_element</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">tag_names</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.strip_tags" title="Permalink to this definition"></a></dt>
<dd><p>Delete all elements with the provided tag names from a tree or
subtree. This will remove the elements and their attributes, but
<em>not</em> their text/tail content or descendants. Instead, it will
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.tostring">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">tostring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element_or_tree</span></em>, <em class="sig-param"><span class="o">*</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">method</span><span class="o">=</span><span class="default_value">'xml'</span></em>, <em class="sig-param"><span class="n">xml_declaration</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">pretty_print</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">with_tail</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">standalone</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">doctype</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">exclusive</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">inclusive_ns_prefixes</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">with_comments</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">strip_text</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.tostring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.tostring">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">tostring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element_or_tree</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">method</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'xml'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xml_declaration</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pretty_print</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_tail</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">standalone</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">doctype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exclusive</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inclusive_ns_prefixes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_comments</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strip_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.tostring" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>tostring(element_or_tree, encoding=None, method=”xml”,</dt><dd><p>xml_declaration=None, pretty_print=False, with_tail=True,
standalone=None, doctype=None,
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.tostringlist">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">tostringlist</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element_or_tree</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.tostringlist" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.tostringlist">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">tostringlist</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element_or_tree</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.tostringlist" title="Permalink to this definition"></a></dt>
<dd><p>Serialize an element to an encoded string representation of its XML
tree, stored in a list of partial strings.</p>
<p>This is purely for ElementTree 1.3 compatibility. The result is a
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.tounicode">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">tounicode</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element_or_tree</span></em>, <em class="sig-param"><span class="o">*</span></em>, <em class="sig-param"><span class="n">method</span><span class="o">=</span><span class="default_value">'xml'</span></em>, <em class="sig-param"><span class="n">pretty_print</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">with_tail</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">doctype</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.tounicode" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.tounicode">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">tounicode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element_or_tree</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">method</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'xml'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pretty_print</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_tail</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">doctype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.tounicode" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>tounicode(element_or_tree, method=”xml”, pretty_print=False,</dt><dd><p>with_tail=True, doctype=None)</p>
</dd>
</dd></dl>
<dl class="py function">
-<dt id="lxml.etree.use_global_python_log">
-<code class="sig-prename descclassname">lxml.etree.</code><code class="sig-name descname">use_global_python_log</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">log</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.use_global_python_log" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.etree.use_global_python_log">
+<span class="sig-prename descclassname"><span class="pre">lxml.etree.</span></span><span class="sig-name descname"><span class="pre">use_global_python_log</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">log</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.etree.use_global_python_log" title="Permalink to this definition"></a></dt>
<dd><p>Replace the global error log by an etree.PyErrorLog that uses the
standard Python logging package.</p>
<p>Note that this disables access to the global error log from exceptions.
function will only set the global error log of the current thread.</p>
</dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.objectify.html" class="btn btn-neutral float-right" title="lxml.objectify module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.doctestcompare.html" class="btn btn-neutral float-left" title="lxml.doctestcompare module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.doctestcompare.html" class="btn btn-neutral float-left" title="lxml.doctestcompare module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.objectify.html" class="btn btn-neutral float-right" title="lxml.objectify module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml package — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml package — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html package" href="lxml.html.html" />
<link rel="prev" title="lxml API Reference" href="index.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li>lxml package</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="lxml-package">
-<h1>lxml package<a class="headerlink" href="#lxml-package" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="subpackages">
-<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2>
+
+ <section id="lxml-package">
+<h1>lxml package<a class="headerlink" href="#lxml-package" title="Permalink to this headline"></a></h1>
+<section id="subpackages">
+<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
</div>
-</div>
-<div class="section" id="submodules">
-<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+</section>
+<section id="submodules">
+<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="lxml.ElementInclude.html">lxml.ElementInclude module</a></li>
<li class="toctree-l1"><a class="reference internal" href="lxml.sax.html">lxml.sax module</a></li>
</ul>
</div>
-</div>
-<div class="section" id="module-lxml">
-<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-lxml" title="Permalink to this headline">¶</a></h2>
+</section>
+<section id="module-lxml">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-lxml" title="Permalink to this headline"></a></h2>
<dl class="py function">
-<dt id="lxml.get_include">
-<code class="sig-prename descclassname">lxml.</code><code class="sig-name descname">get_include</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml.html#get_include"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.get_include" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.get_include">
+<span class="sig-prename descclassname"><span class="pre">lxml.</span></span><span class="sig-name descname"><span class="pre">get_include</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml.html#get_include"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.get_include" title="Permalink to this definition"></a></dt>
<dd><p>Returns a list of header include paths (for lxml itself, libxml2
and libxslt) needed to compile C code against lxml if it was built
with statically linked libraries.</p>
</dd></dl>
-</div>
-</div>
+</section>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html.html" class="btn btn-neutral float-right" title="lxml.html package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="index.html" class="btn btn-neutral float-left" title="lxml API Reference" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="index.html" class="btn btn-neutral float-left" title="lxml API Reference" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html.html" class="btn btn-neutral float-right" title="lxml.html package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html.ElementSoup module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html.ElementSoup module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html._diffcommand module" href="lxml.html._diffcommand.html" />
<link rel="prev" title="lxml.html package" href="lxml.html.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul class="current">
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li><a href="lxml.html.html">lxml.html package</a> »</li>
-
<li>lxml.html.ElementSoup module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html.ElementSoup.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="lxml-html-elementsoup-module">
-<h1>lxml.html.ElementSoup module<a class="headerlink" href="#lxml-html-elementsoup-module" title="Permalink to this headline">¶</a></h1>
-</div>
+
+ <section id="lxml-html-elementsoup-module">
+<h1>lxml.html.ElementSoup module<a class="headerlink" href="#lxml-html-elementsoup-module" title="Permalink to this headline"></a></h1>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html._diffcommand.html" class="btn btn-neutral float-right" title="lxml.html._diffcommand module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html.html" class="btn btn-neutral float-left" title="lxml.html package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html.html" class="btn btn-neutral float-left" title="lxml.html package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html._diffcommand.html" class="btn btn-neutral float-right" title="lxml.html._diffcommand module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html._diffcommand module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html._diffcommand module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html._setmixin module" href="lxml.html._setmixin.html" />
<link rel="prev" title="lxml.html.ElementSoup module" href="lxml.html.ElementSoup.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul class="current">
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li><a href="lxml.html.html">lxml.html package</a> »</li>
-
<li>lxml.html._diffcommand module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html._diffcommand.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.html._diffcommand">
-<span id="lxml-html-diffcommand-module"></span><h1>lxml.html._diffcommand module<a class="headerlink" href="#module-lxml.html._diffcommand" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.html._diffcommand">
+<span id="lxml-html-diffcommand-module"></span><h1>lxml.html._diffcommand module<a class="headerlink" href="#module-lxml.html._diffcommand" title="Permalink to this headline"></a></h1>
<dl class="py function">
-<dt id="lxml.html._diffcommand.annotate">
-<code class="sig-prename descclassname">lxml.html._diffcommand.</code><code class="sig-name descname">annotate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">options</span></em>, <em class="sig-param"><span class="n">args</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_diffcommand.html#annotate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._diffcommand.annotate" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._diffcommand.annotate">
+<span class="sig-prename descclassname"><span class="pre">lxml.html._diffcommand.</span></span><span class="sig-name descname"><span class="pre">annotate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">options</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_diffcommand.html#annotate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._diffcommand.annotate" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html._diffcommand.main">
-<code class="sig-prename descclassname">lxml.html._diffcommand.</code><code class="sig-name descname">main</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">args</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_diffcommand.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._diffcommand.main" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._diffcommand.main">
+<span class="sig-prename descclassname"><span class="pre">lxml.html._diffcommand.</span></span><span class="sig-name descname"><span class="pre">main</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_diffcommand.html#main"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._diffcommand.main" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html._diffcommand.read_file">
-<code class="sig-prename descclassname">lxml.html._diffcommand.</code><code class="sig-name descname">read_file</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">filename</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_diffcommand.html#read_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._diffcommand.read_file" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._diffcommand.read_file">
+<span class="sig-prename descclassname"><span class="pre">lxml.html._diffcommand.</span></span><span class="sig-name descname"><span class="pre">read_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_diffcommand.html#read_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._diffcommand.read_file" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html._diffcommand.split_body">
-<code class="sig-prename descclassname">lxml.html._diffcommand.</code><code class="sig-name descname">split_body</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_diffcommand.html#split_body"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._diffcommand.split_body" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._diffcommand.split_body">
+<span class="sig-prename descclassname"><span class="pre">lxml.html._diffcommand.</span></span><span class="sig-name descname"><span class="pre">split_body</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_diffcommand.html#split_body"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._diffcommand.split_body" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html._setmixin.html" class="btn btn-neutral float-right" title="lxml.html._setmixin module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html.ElementSoup.html" class="btn btn-neutral float-left" title="lxml.html.ElementSoup module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html.ElementSoup.html" class="btn btn-neutral float-left" title="lxml.html.ElementSoup module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html._setmixin.html" class="btn btn-neutral float-right" title="lxml.html._setmixin module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html._setmixin module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html._setmixin module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html.builder module" href="lxml.html.builder.html" />
<link rel="prev" title="lxml.html._diffcommand module" href="lxml.html._diffcommand.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul class="current">
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li><a href="lxml.html.html">lxml.html package</a> »</li>
-
<li>lxml.html._setmixin module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html._setmixin.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.html._setmixin">
-<span id="lxml-html-setmixin-module"></span><h1>lxml.html._setmixin module<a class="headerlink" href="#module-lxml.html._setmixin" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.html._setmixin">
+<span id="lxml-html-setmixin-module"></span><h1>lxml.html._setmixin module<a class="headerlink" href="#module-lxml.html._setmixin" title="Permalink to this headline"></a></h1>
<dl class="py class">
-<dt id="lxml.html._setmixin.SetMixin">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html._setmixin.</code><code class="sig-name descname">SetMixin</code><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html._setmixin.</span></span><span class="sig-name descname"><span class="pre">SetMixin</span></span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">collections.abc.MutableSet</span></code></p>
<p>Mix-in for sets. You must define __iter__, add, remove</p>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin._from_iterable">
-<em class="property">classmethod </em><code class="sig-name descname">_from_iterable</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">it</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin._from_iterable"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin._from_iterable" title="Permalink to this definition">¶</a></dt>
-<dd><p>Construct an instance of the class from any iterable input.</p>
-<p>Must override this method if the class constructor signature
-does not accept an iterable for an input.</p>
-</dd></dl>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin._from_iterable">
+<em class="property"><span class="pre">classmethod</span> </em><span class="sig-name descname"><span class="pre">_from_iterable</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">it</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin._from_iterable"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin._from_iterable" title="Permalink to this definition"></a></dt>
+<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.copy">
-<code class="sig-name descname">copy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.copy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.copy" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.copy">
+<span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.copy"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.copy" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.difference">
-<code class="sig-name descname">difference</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">other</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.difference" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.difference">
+<span class="sig-name descname"><span class="pre">difference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.difference" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.difference_update">
-<code class="sig-name descname">difference_update</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">other</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.difference_update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.difference_update" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.difference_update">
+<span class="sig-name descname"><span class="pre">difference_update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.difference_update"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.difference_update" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.discard">
-<code class="sig-name descname">discard</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">item</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.discard"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.discard" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.discard">
+<span class="sig-name descname"><span class="pre">discard</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">item</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.discard"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.discard" title="Permalink to this definition"></a></dt>
<dd><p>Remove an element. Do not raise an exception if absent.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.intersection">
-<code class="sig-name descname">intersection</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">other</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.intersection" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.intersection">
+<span class="sig-name descname"><span class="pre">intersection</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.intersection" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.intersection_update">
-<code class="sig-name descname">intersection_update</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">other</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.intersection_update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.intersection_update" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.intersection_update">
+<span class="sig-name descname"><span class="pre">intersection_update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.intersection_update"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.intersection_update" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.issubset">
-<code class="sig-name descname">issubset</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">other</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.issubset" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.issubset">
+<span class="sig-name descname"><span class="pre">issubset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.issubset" title="Permalink to this definition"></a></dt>
<dd><p>Return self<=value.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.issuperset">
-<code class="sig-name descname">issuperset</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">other</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.issuperset" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.issuperset">
+<span class="sig-name descname"><span class="pre">issuperset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.issuperset" title="Permalink to this definition"></a></dt>
<dd><p>Return self>=value.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.symmetric_difference">
-<code class="sig-name descname">symmetric_difference</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">other</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.symmetric_difference" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.symmetric_difference">
+<span class="sig-name descname"><span class="pre">symmetric_difference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.symmetric_difference" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.symmetric_difference_update">
-<code class="sig-name descname">symmetric_difference_update</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">other</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.symmetric_difference_update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.symmetric_difference_update" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.symmetric_difference_update">
+<span class="sig-name descname"><span class="pre">symmetric_difference_update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.symmetric_difference_update"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.symmetric_difference_update" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.union">
-<code class="sig-name descname">union</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">other</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.union" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.union">
+<span class="sig-name descname"><span class="pre">union</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._setmixin.SetMixin.union" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html._setmixin.SetMixin.update">
-<code class="sig-name descname">update</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">other</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.update" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin.update">
+<span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/_setmixin.html#SetMixin.update"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._setmixin.SetMixin.update" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html._setmixin.SetMixin._abc_impl">
-<code class="sig-name descname">_abc_impl</code><em class="property"> = <_abc_data object></em><a class="headerlink" href="#lxml.html._setmixin.SetMixin._abc_impl" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._setmixin.SetMixin._abc_impl">
+<span class="sig-name descname"><span class="pre">_abc_impl</span></span><em class="property"> <span class="pre">=</span> <span class="pre"><_abc._abc_data</span> <span class="pre">object></span></em><a class="headerlink" href="#lxml.html._setmixin.SetMixin._abc_impl" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html.builder.html" class="btn btn-neutral float-right" title="lxml.html.builder module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html._diffcommand.html" class="btn btn-neutral float-left" title="lxml.html._diffcommand module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html._diffcommand.html" class="btn btn-neutral float-left" title="lxml.html._diffcommand module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html.builder.html" class="btn btn-neutral float-right" title="lxml.html.builder module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html.builder module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html.builder module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html.clean module" href="lxml.html.clean.html" />
<link rel="prev" title="lxml.html._setmixin module" href="lxml.html._setmixin.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul class="current">
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li><a href="lxml.html.html">lxml.html package</a> »</li>
-
<li>lxml.html.builder module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html.builder.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.html.builder">
-<span id="lxml-html-builder-module"></span><h1>lxml.html.builder module<a class="headerlink" href="#module-lxml.html.builder" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.html.builder">
+<span id="lxml-html-builder-module"></span><h1>lxml.html.builder module<a class="headerlink" href="#module-lxml.html.builder" title="Permalink to this headline"></a></h1>
<p>A set of HTML generator tags for building HTML documents.</p>
<p>Usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">lxml.html.builder</span> <span class="kn">import</span> <span class="o">*</span>
</pre></div>
</div>
<dl class="py function">
-<dt id="lxml.html.builder.CLASS">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">CLASS</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">v</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/builder.html#CLASS"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.builder.CLASS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.CLASS">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">CLASS</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/builder.html#CLASS"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.builder.CLASS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.builder.FOR">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">FOR</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">v</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/builder.html#FOR"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.builder.FOR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.FOR">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">FOR</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/builder.html#FOR"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.builder.FOR" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.A">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">A</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'a')</em><a class="headerlink" href="#lxml.html.builder.A" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.A">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">A</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'a')</span></em><a class="headerlink" href="#lxml.html.builder.A" title="Permalink to this definition"></a></dt>
<dd><p>anchor</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.ABBR">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">ABBR</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'abbr')</em><a class="headerlink" href="#lxml.html.builder.ABBR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.ABBR">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">ABBR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'abbr')</span></em><a class="headerlink" href="#lxml.html.builder.ABBR" title="Permalink to this definition"></a></dt>
<dd><p>abbreviated form (e.g., WWW, HTTP, etc.)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.ACRONYM">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">ACRONYM</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'acronym')</em><a class="headerlink" href="#lxml.html.builder.ACRONYM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.ACRONYM">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">ACRONYM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'acronym')</span></em><a class="headerlink" href="#lxml.html.builder.ACRONYM" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.ADDRESS">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">ADDRESS</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'address')</em><a class="headerlink" href="#lxml.html.builder.ADDRESS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.ADDRESS">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">ADDRESS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'address')</span></em><a class="headerlink" href="#lxml.html.builder.ADDRESS" title="Permalink to this definition"></a></dt>
<dd><p>information on author</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.APPLET">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">APPLET</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'applet')</em><a class="headerlink" href="#lxml.html.builder.APPLET" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.APPLET">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">APPLET</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'applet')</span></em><a class="headerlink" href="#lxml.html.builder.APPLET" title="Permalink to this definition"></a></dt>
<dd><p>Java applet (DEPRECATED)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.AREA">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">AREA</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'area')</em><a class="headerlink" href="#lxml.html.builder.AREA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.AREA">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">AREA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'area')</span></em><a class="headerlink" href="#lxml.html.builder.AREA" title="Permalink to this definition"></a></dt>
<dd><p>client-side image map area</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.B">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">B</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'b')</em><a class="headerlink" href="#lxml.html.builder.B" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.B">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">B</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'b')</span></em><a class="headerlink" href="#lxml.html.builder.B" title="Permalink to this definition"></a></dt>
<dd><p>bold text style</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.BASE">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">BASE</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'base')</em><a class="headerlink" href="#lxml.html.builder.BASE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.BASE">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">BASE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'base')</span></em><a class="headerlink" href="#lxml.html.builder.BASE" title="Permalink to this definition"></a></dt>
<dd><p>document base URI</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.BASEFONT">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">BASEFONT</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'basefont')</em><a class="headerlink" href="#lxml.html.builder.BASEFONT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.BASEFONT">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">BASEFONT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'basefont')</span></em><a class="headerlink" href="#lxml.html.builder.BASEFONT" title="Permalink to this definition"></a></dt>
<dd><p>base font size (DEPRECATED)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.BDO">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">BDO</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'bdo')</em><a class="headerlink" href="#lxml.html.builder.BDO" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.BDO">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">BDO</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'bdo')</span></em><a class="headerlink" href="#lxml.html.builder.BDO" title="Permalink to this definition"></a></dt>
<dd><p>I18N BiDi over-ride</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.BIG">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">BIG</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'big')</em><a class="headerlink" href="#lxml.html.builder.BIG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.BIG">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">BIG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'big')</span></em><a class="headerlink" href="#lxml.html.builder.BIG" title="Permalink to this definition"></a></dt>
<dd><p>large text style</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.BLOCKQUOTE">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">BLOCKQUOTE</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'blockquote')</em><a class="headerlink" href="#lxml.html.builder.BLOCKQUOTE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.BLOCKQUOTE">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">BLOCKQUOTE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'blockquote')</span></em><a class="headerlink" href="#lxml.html.builder.BLOCKQUOTE" title="Permalink to this definition"></a></dt>
<dd><p>long quotation</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.BODY">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">BODY</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'body')</em><a class="headerlink" href="#lxml.html.builder.BODY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.BODY">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">BODY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'body')</span></em><a class="headerlink" href="#lxml.html.builder.BODY" title="Permalink to this definition"></a></dt>
<dd><p>document body</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.BR">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">BR</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'br')</em><a class="headerlink" href="#lxml.html.builder.BR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.BR">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">BR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'br')</span></em><a class="headerlink" href="#lxml.html.builder.BR" title="Permalink to this definition"></a></dt>
<dd><p>forced line break</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.BUTTON">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">BUTTON</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'button')</em><a class="headerlink" href="#lxml.html.builder.BUTTON" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.BUTTON">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">BUTTON</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'button')</span></em><a class="headerlink" href="#lxml.html.builder.BUTTON" title="Permalink to this definition"></a></dt>
<dd><p>push button</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.CAPTION">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">CAPTION</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'caption')</em><a class="headerlink" href="#lxml.html.builder.CAPTION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.CAPTION">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">CAPTION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'caption')</span></em><a class="headerlink" href="#lxml.html.builder.CAPTION" title="Permalink to this definition"></a></dt>
<dd><p>table caption</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.CENTER">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">CENTER</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'center')</em><a class="headerlink" href="#lxml.html.builder.CENTER" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.CENTER">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">CENTER</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'center')</span></em><a class="headerlink" href="#lxml.html.builder.CENTER" title="Permalink to this definition"></a></dt>
<dd><p>shorthand for DIV align=center (DEPRECATED)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.CITE">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">CITE</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'cite')</em><a class="headerlink" href="#lxml.html.builder.CITE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.CITE">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">CITE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'cite')</span></em><a class="headerlink" href="#lxml.html.builder.CITE" title="Permalink to this definition"></a></dt>
<dd><p>citation</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.CODE">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">CODE</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'code')</em><a class="headerlink" href="#lxml.html.builder.CODE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.CODE">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">CODE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'code')</span></em><a class="headerlink" href="#lxml.html.builder.CODE" title="Permalink to this definition"></a></dt>
<dd><p>computer code fragment</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.COL">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">COL</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'col')</em><a class="headerlink" href="#lxml.html.builder.COL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.COL">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">COL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'col')</span></em><a class="headerlink" href="#lxml.html.builder.COL" title="Permalink to this definition"></a></dt>
<dd><p>table column</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.COLGROUP">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">COLGROUP</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'colgroup')</em><a class="headerlink" href="#lxml.html.builder.COLGROUP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.COLGROUP">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">COLGROUP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'colgroup')</span></em><a class="headerlink" href="#lxml.html.builder.COLGROUP" title="Permalink to this definition"></a></dt>
<dd><p>table column group</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.DD">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">DD</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'dd')</em><a class="headerlink" href="#lxml.html.builder.DD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.DD">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">DD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'dd')</span></em><a class="headerlink" href="#lxml.html.builder.DD" title="Permalink to this definition"></a></dt>
<dd><p>definition description</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.DEL">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">DEL</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'del')</em><a class="headerlink" href="#lxml.html.builder.DEL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.DEL">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">DEL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'del')</span></em><a class="headerlink" href="#lxml.html.builder.DEL" title="Permalink to this definition"></a></dt>
<dd><p>deleted text</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.DFN">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">DFN</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'dfn')</em><a class="headerlink" href="#lxml.html.builder.DFN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.DFN">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">DFN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'dfn')</span></em><a class="headerlink" href="#lxml.html.builder.DFN" title="Permalink to this definition"></a></dt>
<dd><p>instance definition</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.DIR">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">DIR</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'dir')</em><a class="headerlink" href="#lxml.html.builder.DIR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.DIR">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">DIR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'dir')</span></em><a class="headerlink" href="#lxml.html.builder.DIR" title="Permalink to this definition"></a></dt>
<dd><p>directory list (DEPRECATED)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.DIV">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">DIV</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'div')</em><a class="headerlink" href="#lxml.html.builder.DIV" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.DIV">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">DIV</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'div')</span></em><a class="headerlink" href="#lxml.html.builder.DIV" title="Permalink to this definition"></a></dt>
<dd><p>generic language/style container</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.DL">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">DL</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'dl')</em><a class="headerlink" href="#lxml.html.builder.DL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.DL">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">DL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'dl')</span></em><a class="headerlink" href="#lxml.html.builder.DL" title="Permalink to this definition"></a></dt>
<dd><p>definition list</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.DT">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">DT</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'dt')</em><a class="headerlink" href="#lxml.html.builder.DT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.DT">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">DT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'dt')</span></em><a class="headerlink" href="#lxml.html.builder.DT" title="Permalink to this definition"></a></dt>
<dd><p>definition term</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.EM">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">EM</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'em')</em><a class="headerlink" href="#lxml.html.builder.EM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.EM">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">EM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'em')</span></em><a class="headerlink" href="#lxml.html.builder.EM" title="Permalink to this definition"></a></dt>
<dd><p>emphasis</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.FIELDSET">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">FIELDSET</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'fieldset')</em><a class="headerlink" href="#lxml.html.builder.FIELDSET" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.FIELDSET">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">FIELDSET</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'fieldset')</span></em><a class="headerlink" href="#lxml.html.builder.FIELDSET" title="Permalink to this definition"></a></dt>
<dd><p>form control group</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.FONT">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">FONT</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'font')</em><a class="headerlink" href="#lxml.html.builder.FONT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.FONT">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">FONT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'font')</span></em><a class="headerlink" href="#lxml.html.builder.FONT" title="Permalink to this definition"></a></dt>
<dd><p>local change to font (DEPRECATED)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.FORM">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">FORM</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'form')</em><a class="headerlink" href="#lxml.html.builder.FORM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.FORM">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">FORM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'form')</span></em><a class="headerlink" href="#lxml.html.builder.FORM" title="Permalink to this definition"></a></dt>
<dd><p>interactive form</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.FRAME">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">FRAME</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'frame')</em><a class="headerlink" href="#lxml.html.builder.FRAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.FRAME">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">FRAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'frame')</span></em><a class="headerlink" href="#lxml.html.builder.FRAME" title="Permalink to this definition"></a></dt>
<dd><p>subwindow</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.FRAMESET">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">FRAMESET</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'frameset')</em><a class="headerlink" href="#lxml.html.builder.FRAMESET" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.FRAMESET">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">FRAMESET</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'frameset')</span></em><a class="headerlink" href="#lxml.html.builder.FRAMESET" title="Permalink to this definition"></a></dt>
<dd><p>window subdivision</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.H1">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">H1</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'h1')</em><a class="headerlink" href="#lxml.html.builder.H1" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.H1">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">H1</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'h1')</span></em><a class="headerlink" href="#lxml.html.builder.H1" title="Permalink to this definition"></a></dt>
<dd><p>heading</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.H2">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">H2</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'h2')</em><a class="headerlink" href="#lxml.html.builder.H2" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.H2">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">H2</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'h2')</span></em><a class="headerlink" href="#lxml.html.builder.H2" title="Permalink to this definition"></a></dt>
<dd><p>heading</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.H3">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">H3</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'h3')</em><a class="headerlink" href="#lxml.html.builder.H3" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.H3">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">H3</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'h3')</span></em><a class="headerlink" href="#lxml.html.builder.H3" title="Permalink to this definition"></a></dt>
<dd><p>heading</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.H4">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">H4</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'h4')</em><a class="headerlink" href="#lxml.html.builder.H4" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.H4">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">H4</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'h4')</span></em><a class="headerlink" href="#lxml.html.builder.H4" title="Permalink to this definition"></a></dt>
<dd><p>heading</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.H5">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">H5</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'h5')</em><a class="headerlink" href="#lxml.html.builder.H5" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.H5">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">H5</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'h5')</span></em><a class="headerlink" href="#lxml.html.builder.H5" title="Permalink to this definition"></a></dt>
<dd><p>heading</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.H6">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">H6</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'h6')</em><a class="headerlink" href="#lxml.html.builder.H6" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.H6">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">H6</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'h6')</span></em><a class="headerlink" href="#lxml.html.builder.H6" title="Permalink to this definition"></a></dt>
<dd><p>heading</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.HEAD">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">HEAD</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'head')</em><a class="headerlink" href="#lxml.html.builder.HEAD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.HEAD">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">HEAD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'head')</span></em><a class="headerlink" href="#lxml.html.builder.HEAD" title="Permalink to this definition"></a></dt>
<dd><p>document head</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.HR">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">HR</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'hr')</em><a class="headerlink" href="#lxml.html.builder.HR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.HR">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">HR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'hr')</span></em><a class="headerlink" href="#lxml.html.builder.HR" title="Permalink to this definition"></a></dt>
<dd><p>horizontal rule</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.HTML">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">HTML</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'html')</em><a class="headerlink" href="#lxml.html.builder.HTML" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.HTML">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">HTML</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'html')</span></em><a class="headerlink" href="#lxml.html.builder.HTML" title="Permalink to this definition"></a></dt>
<dd><p>document root element</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.I">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">I</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'i')</em><a class="headerlink" href="#lxml.html.builder.I" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.I">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">I</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'i')</span></em><a class="headerlink" href="#lxml.html.builder.I" title="Permalink to this definition"></a></dt>
<dd><p>italic text style</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.IFRAME">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">IFRAME</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'iframe')</em><a class="headerlink" href="#lxml.html.builder.IFRAME" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.IFRAME">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">IFRAME</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'iframe')</span></em><a class="headerlink" href="#lxml.html.builder.IFRAME" title="Permalink to this definition"></a></dt>
<dd><p>inline subwindow</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.IMG">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">IMG</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'img')</em><a class="headerlink" href="#lxml.html.builder.IMG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.IMG">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">IMG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'img')</span></em><a class="headerlink" href="#lxml.html.builder.IMG" title="Permalink to this definition"></a></dt>
<dd><p>Embedded image</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.INPUT">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">INPUT</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'input')</em><a class="headerlink" href="#lxml.html.builder.INPUT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.INPUT">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">INPUT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'input')</span></em><a class="headerlink" href="#lxml.html.builder.INPUT" title="Permalink to this definition"></a></dt>
<dd><p>form control</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.INS">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">INS</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'ins')</em><a class="headerlink" href="#lxml.html.builder.INS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.INS">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">INS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'ins')</span></em><a class="headerlink" href="#lxml.html.builder.INS" title="Permalink to this definition"></a></dt>
<dd><p>inserted text</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.ISINDEX">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">ISINDEX</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'isindex')</em><a class="headerlink" href="#lxml.html.builder.ISINDEX" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.ISINDEX">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">ISINDEX</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'isindex')</span></em><a class="headerlink" href="#lxml.html.builder.ISINDEX" title="Permalink to this definition"></a></dt>
<dd><p>single line prompt (DEPRECATED)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.KBD">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">KBD</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'kbd')</em><a class="headerlink" href="#lxml.html.builder.KBD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.KBD">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">KBD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'kbd')</span></em><a class="headerlink" href="#lxml.html.builder.KBD" title="Permalink to this definition"></a></dt>
<dd><p>text to be entered by the user</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.LABEL">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">LABEL</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'label')</em><a class="headerlink" href="#lxml.html.builder.LABEL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.LABEL">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">LABEL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'label')</span></em><a class="headerlink" href="#lxml.html.builder.LABEL" title="Permalink to this definition"></a></dt>
<dd><p>form field label text</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.LEGEND">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">LEGEND</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'legend')</em><a class="headerlink" href="#lxml.html.builder.LEGEND" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.LEGEND">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">LEGEND</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'legend')</span></em><a class="headerlink" href="#lxml.html.builder.LEGEND" title="Permalink to this definition"></a></dt>
<dd><p>fieldset legend</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.LI">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">LI</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'li')</em><a class="headerlink" href="#lxml.html.builder.LI" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.LI">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">LI</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'li')</span></em><a class="headerlink" href="#lxml.html.builder.LI" title="Permalink to this definition"></a></dt>
<dd><p>list item</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.LINK">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">LINK</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'link')</em><a class="headerlink" href="#lxml.html.builder.LINK" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.LINK">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">LINK</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'link')</span></em><a class="headerlink" href="#lxml.html.builder.LINK" title="Permalink to this definition"></a></dt>
<dd><p>a media-independent link</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.MAP">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">MAP</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'map')</em><a class="headerlink" href="#lxml.html.builder.MAP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.MAP">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">MAP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'map')</span></em><a class="headerlink" href="#lxml.html.builder.MAP" title="Permalink to this definition"></a></dt>
<dd><p>client-side image map</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.MENU">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">MENU</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'menu')</em><a class="headerlink" href="#lxml.html.builder.MENU" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.MENU">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">MENU</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'menu')</span></em><a class="headerlink" href="#lxml.html.builder.MENU" title="Permalink to this definition"></a></dt>
<dd><p>menu list (DEPRECATED)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.META">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">META</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'meta')</em><a class="headerlink" href="#lxml.html.builder.META" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.META">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">META</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'meta')</span></em><a class="headerlink" href="#lxml.html.builder.META" title="Permalink to this definition"></a></dt>
<dd><p>generic metainformation</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.NOFRAMES">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">NOFRAMES</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'noframes')</em><a class="headerlink" href="#lxml.html.builder.NOFRAMES" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.NOFRAMES">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">NOFRAMES</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'noframes')</span></em><a class="headerlink" href="#lxml.html.builder.NOFRAMES" title="Permalink to this definition"></a></dt>
<dd><p>alternate content container for non frame-based rendering</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.NOSCRIPT">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">NOSCRIPT</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'noscript')</em><a class="headerlink" href="#lxml.html.builder.NOSCRIPT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.NOSCRIPT">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">NOSCRIPT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'noscript')</span></em><a class="headerlink" href="#lxml.html.builder.NOSCRIPT" title="Permalink to this definition"></a></dt>
<dd><p>alternate content container for non script-based rendering</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.OBJECT">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">OBJECT</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'object')</em><a class="headerlink" href="#lxml.html.builder.OBJECT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.OBJECT">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">OBJECT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'object')</span></em><a class="headerlink" href="#lxml.html.builder.OBJECT" title="Permalink to this definition"></a></dt>
<dd><p>generic embedded object</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.OL">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">OL</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'ol')</em><a class="headerlink" href="#lxml.html.builder.OL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.OL">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">OL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'ol')</span></em><a class="headerlink" href="#lxml.html.builder.OL" title="Permalink to this definition"></a></dt>
<dd><p>ordered list</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.OPTGROUP">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">OPTGROUP</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'optgroup')</em><a class="headerlink" href="#lxml.html.builder.OPTGROUP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.OPTGROUP">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">OPTGROUP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'optgroup')</span></em><a class="headerlink" href="#lxml.html.builder.OPTGROUP" title="Permalink to this definition"></a></dt>
<dd><p>option group</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.OPTION">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">OPTION</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'option')</em><a class="headerlink" href="#lxml.html.builder.OPTION" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.OPTION">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">OPTION</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'option')</span></em><a class="headerlink" href="#lxml.html.builder.OPTION" title="Permalink to this definition"></a></dt>
<dd><p>selectable choice</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.P">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">P</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'p')</em><a class="headerlink" href="#lxml.html.builder.P" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.P">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">P</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'p')</span></em><a class="headerlink" href="#lxml.html.builder.P" title="Permalink to this definition"></a></dt>
<dd><p>paragraph</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.PARAM">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">PARAM</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'param')</em><a class="headerlink" href="#lxml.html.builder.PARAM" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.PARAM">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">PARAM</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'param')</span></em><a class="headerlink" href="#lxml.html.builder.PARAM" title="Permalink to this definition"></a></dt>
<dd><p>named property value</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.PRE">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">PRE</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'pre')</em><a class="headerlink" href="#lxml.html.builder.PRE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.PRE">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">PRE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'pre')</span></em><a class="headerlink" href="#lxml.html.builder.PRE" title="Permalink to this definition"></a></dt>
<dd><p>preformatted text</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.Q">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">Q</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'q')</em><a class="headerlink" href="#lxml.html.builder.Q" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.Q">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">Q</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'q')</span></em><a class="headerlink" href="#lxml.html.builder.Q" title="Permalink to this definition"></a></dt>
<dd><p>short inline quotation</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.S">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">S</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 's')</em><a class="headerlink" href="#lxml.html.builder.S" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.S">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">S</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'s')</span></em><a class="headerlink" href="#lxml.html.builder.S" title="Permalink to this definition"></a></dt>
<dd><p>strike-through text style (DEPRECATED)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.SAMP">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">SAMP</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'samp')</em><a class="headerlink" href="#lxml.html.builder.SAMP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.SAMP">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">SAMP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'samp')</span></em><a class="headerlink" href="#lxml.html.builder.SAMP" title="Permalink to this definition"></a></dt>
<dd><p>sample program output, scripts, etc.</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.SCRIPT">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">SCRIPT</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'script')</em><a class="headerlink" href="#lxml.html.builder.SCRIPT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.SCRIPT">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">SCRIPT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'script')</span></em><a class="headerlink" href="#lxml.html.builder.SCRIPT" title="Permalink to this definition"></a></dt>
<dd><p>script statements</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.SELECT">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">SELECT</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'select')</em><a class="headerlink" href="#lxml.html.builder.SELECT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.SELECT">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">SELECT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'select')</span></em><a class="headerlink" href="#lxml.html.builder.SELECT" title="Permalink to this definition"></a></dt>
<dd><p>option selector</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.SMALL">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">SMALL</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'small')</em><a class="headerlink" href="#lxml.html.builder.SMALL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.SMALL">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">SMALL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'small')</span></em><a class="headerlink" href="#lxml.html.builder.SMALL" title="Permalink to this definition"></a></dt>
<dd><p>small text style</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.SPAN">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">SPAN</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'span')</em><a class="headerlink" href="#lxml.html.builder.SPAN" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.SPAN">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">SPAN</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'span')</span></em><a class="headerlink" href="#lxml.html.builder.SPAN" title="Permalink to this definition"></a></dt>
<dd><p>generic language/style container</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.STRIKE">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">STRIKE</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'strike')</em><a class="headerlink" href="#lxml.html.builder.STRIKE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.STRIKE">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">STRIKE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'strike')</span></em><a class="headerlink" href="#lxml.html.builder.STRIKE" title="Permalink to this definition"></a></dt>
<dd><p>strike-through text (DEPRECATED)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.STRONG">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">STRONG</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'strong')</em><a class="headerlink" href="#lxml.html.builder.STRONG" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.STRONG">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">STRONG</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'strong')</span></em><a class="headerlink" href="#lxml.html.builder.STRONG" title="Permalink to this definition"></a></dt>
<dd><p>strong emphasis</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.STYLE">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">STYLE</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'style')</em><a class="headerlink" href="#lxml.html.builder.STYLE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.STYLE">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">STYLE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'style')</span></em><a class="headerlink" href="#lxml.html.builder.STYLE" title="Permalink to this definition"></a></dt>
<dd><p>style info</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.SUB">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">SUB</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'sub')</em><a class="headerlink" href="#lxml.html.builder.SUB" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.SUB">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">SUB</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'sub')</span></em><a class="headerlink" href="#lxml.html.builder.SUB" title="Permalink to this definition"></a></dt>
<dd><p>subscript</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.SUP">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">SUP</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'sup')</em><a class="headerlink" href="#lxml.html.builder.SUP" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.SUP">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">SUP</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'sup')</span></em><a class="headerlink" href="#lxml.html.builder.SUP" title="Permalink to this definition"></a></dt>
<dd><p>superscript</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.TABLE">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">TABLE</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'table')</em><a class="headerlink" href="#lxml.html.builder.TABLE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.TABLE">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">TABLE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'table')</span></em><a class="headerlink" href="#lxml.html.builder.TABLE" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.TBODY">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">TBODY</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'tbody')</em><a class="headerlink" href="#lxml.html.builder.TBODY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.TBODY">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">TBODY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'tbody')</span></em><a class="headerlink" href="#lxml.html.builder.TBODY" title="Permalink to this definition"></a></dt>
<dd><p>table body</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.TD">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">TD</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'td')</em><a class="headerlink" href="#lxml.html.builder.TD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.TD">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">TD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'td')</span></em><a class="headerlink" href="#lxml.html.builder.TD" title="Permalink to this definition"></a></dt>
<dd><p>table data cell</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.TEXTAREA">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">TEXTAREA</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'textarea')</em><a class="headerlink" href="#lxml.html.builder.TEXTAREA" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.TEXTAREA">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">TEXTAREA</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'textarea')</span></em><a class="headerlink" href="#lxml.html.builder.TEXTAREA" title="Permalink to this definition"></a></dt>
<dd><p>multi-line text field</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.TFOOT">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">TFOOT</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'tfoot')</em><a class="headerlink" href="#lxml.html.builder.TFOOT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.TFOOT">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">TFOOT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'tfoot')</span></em><a class="headerlink" href="#lxml.html.builder.TFOOT" title="Permalink to this definition"></a></dt>
<dd><p>table footer</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.TH">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">TH</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'th')</em><a class="headerlink" href="#lxml.html.builder.TH" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.TH">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">TH</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'th')</span></em><a class="headerlink" href="#lxml.html.builder.TH" title="Permalink to this definition"></a></dt>
<dd><p>table header cell</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.THEAD">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">THEAD</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'thead')</em><a class="headerlink" href="#lxml.html.builder.THEAD" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.THEAD">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">THEAD</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'thead')</span></em><a class="headerlink" href="#lxml.html.builder.THEAD" title="Permalink to this definition"></a></dt>
<dd><p>table header</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.TITLE">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">TITLE</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'title')</em><a class="headerlink" href="#lxml.html.builder.TITLE" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.TITLE">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">TITLE</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'title')</span></em><a class="headerlink" href="#lxml.html.builder.TITLE" title="Permalink to this definition"></a></dt>
<dd><p>document title</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.TR">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">TR</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'tr')</em><a class="headerlink" href="#lxml.html.builder.TR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.TR">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">TR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'tr')</span></em><a class="headerlink" href="#lxml.html.builder.TR" title="Permalink to this definition"></a></dt>
<dd><p>table row</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.TT">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">TT</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'tt')</em><a class="headerlink" href="#lxml.html.builder.TT" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.TT">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">TT</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'tt')</span></em><a class="headerlink" href="#lxml.html.builder.TT" title="Permalink to this definition"></a></dt>
<dd><p>teletype or monospaced text style</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.U">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">U</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'u')</em><a class="headerlink" href="#lxml.html.builder.U" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.U">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">U</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'u')</span></em><a class="headerlink" href="#lxml.html.builder.U" title="Permalink to this definition"></a></dt>
<dd><p>underlined text style (DEPRECATED)</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.UL">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">UL</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'ul')</em><a class="headerlink" href="#lxml.html.builder.UL" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.UL">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">UL</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'ul')</span></em><a class="headerlink" href="#lxml.html.builder.UL" title="Permalink to this definition"></a></dt>
<dd><p>unordered list</p>
</dd></dl>
<dl class="py data">
-<dt id="lxml.html.builder.VAR">
-<code class="sig-prename descclassname">lxml.html.builder.</code><code class="sig-name descname">VAR</code><em class="property"> = functools.partial(<lxml.builder.ElementMaker object>, 'var')</em><a class="headerlink" href="#lxml.html.builder.VAR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.builder.VAR">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.builder.</span></span><span class="sig-name descname"><span class="pre">VAR</span></span><em class="property"> <span class="pre">=</span> <span class="pre">functools.partial(<lxml.builder.ElementMaker</span> <span class="pre">object>,</span> <span class="pre">'var')</span></em><a class="headerlink" href="#lxml.html.builder.VAR" title="Permalink to this definition"></a></dt>
<dd><p>instance of a variable or program argument</p>
</dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html.clean.html" class="btn btn-neutral float-right" title="lxml.html.clean module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html._setmixin.html" class="btn btn-neutral float-left" title="lxml.html._setmixin module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html._setmixin.html" class="btn btn-neutral float-left" title="lxml.html._setmixin module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html.clean.html" class="btn btn-neutral float-right" title="lxml.html.clean module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html.clean module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html.clean module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html.defs module" href="lxml.html.defs.html" />
<link rel="prev" title="lxml.html.builder module" href="lxml.html.builder.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul class="current">
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li><a href="lxml.html.html">lxml.html package</a> »</li>
-
<li>lxml.html.clean module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html.clean.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.html.clean">
-<span id="lxml-html-clean-module"></span><h1>lxml.html.clean module<a class="headerlink" href="#module-lxml.html.clean" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.html.clean">
+<span id="lxml-html-clean-module"></span><h1>lxml.html.clean module<a class="headerlink" href="#module-lxml.html.clean" title="Permalink to this headline"></a></h1>
<p>A cleanup tool for HTML.</p>
<p>Removes unwanted tags and content. See the <cite>Cleaner</cite> class for
details.</p>
<dl class="py class">
-<dt id="lxml.html.clean.Cleaner">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">Cleaner</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">Cleaner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Instances cleans the document of each of the possible offending
elements. The cleaning is controlled by attributes; you can
</dl>
<p>This modifies the document <em>in place</em>.</p>
<dl class="py method">
-<dt id="lxml.html.clean.Cleaner._has_sneaky_javascript">
-<code class="sig-name descname">_has_sneaky_javascript</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">style</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner._has_sneaky_javascript" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner._has_sneaky_javascript">
+<span class="sig-name descname"><span class="pre">_has_sneaky_javascript</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">style</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner._has_sneaky_javascript" title="Permalink to this definition"></a></dt>
<dd><p>Depending on the browser, stuff like <code class="docutils literal notranslate"><span class="pre">e</span> <span class="pre">x</span> <span class="pre">p</span> <span class="pre">r</span> <span class="pre">e</span> <span class="pre">s</span> <span class="pre">s</span> <span class="pre">i</span> <span class="pre">o</span> <span class="pre">n(...)</span></code>
can get interpreted, or <code class="docutils literal notranslate"><span class="pre">expre/*</span> <span class="pre">stuff</span> <span class="pre">*/ssion(...)</span></code>. This
checks for attempt to do stuff like this.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.clean.Cleaner._kill_elements">
-<code class="sig-name descname">_kill_elements</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">doc</span></em>, <em class="sig-param"><span class="n">condition</span></em>, <em class="sig-param"><span class="n">iterate</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner._kill_elements" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner._kill_elements">
+<span class="sig-name descname"><span class="pre">_kill_elements</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">doc</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">condition</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iterate</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner._kill_elements" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html.clean.Cleaner._remove_javascript_link">
-<code class="sig-name descname">_remove_javascript_link</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">link</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner._remove_javascript_link" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner._remove_javascript_link">
+<span class="sig-name descname"><span class="pre">_remove_javascript_link</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">link</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner._remove_javascript_link" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html.clean.Cleaner._substitute_comments">
-<code class="sig-name descname">_substitute_comments</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">count</span><span class="o">=</span><span class="default_value">0</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner._substitute_comments" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner._substitute_comments">
+<span class="sig-name descname"><span class="pre">_substitute_comments</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">count</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner._substitute_comments" title="Permalink to this definition"></a></dt>
<dd><p>Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.clean.Cleaner.allow_element">
-<code class="sig-name descname">allow_element</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner.allow_element" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.allow_element">
+<span class="sig-name descname"><span class="pre">allow_element</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner.allow_element" title="Permalink to this definition"></a></dt>
<dd><p>Decide whether an element is configured to be accepted or rejected.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.clean.Cleaner.allow_embedded_url">
-<code class="sig-name descname">allow_embedded_url</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">url</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner.allow_embedded_url" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.allow_embedded_url">
+<span class="sig-name descname"><span class="pre">allow_embedded_url</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">url</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner.allow_embedded_url" title="Permalink to this definition"></a></dt>
<dd><p>Decide whether a URL that was found in an element’s attributes or text
if configured to be accepted or rejected.</p>
<dl class="field-list simple">
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.clean.Cleaner.allow_follow">
-<code class="sig-name descname">allow_follow</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">anchor</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner.allow_follow" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.allow_follow">
+<span class="sig-name descname"><span class="pre">allow_follow</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">anchor</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner.allow_follow" title="Permalink to this definition"></a></dt>
<dd><p>Override to suppress rel=”nofollow” on some anchors.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.clean.Cleaner.clean_html">
-<code class="sig-name descname">clean_html</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner.clean_html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.clean_html">
+<span class="sig-name descname"><span class="pre">clean_html</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner.clean_html" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html.clean.Cleaner.kill_conditional_comments">
-<code class="sig-name descname">kill_conditional_comments</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">doc</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner.kill_conditional_comments" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.kill_conditional_comments">
+<span class="sig-name descname"><span class="pre">kill_conditional_comments</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">doc</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.Cleaner.kill_conditional_comments" title="Permalink to this definition"></a></dt>
<dd><p>IE conditional comments basically embed HTML that the parser
doesn’t normally see. We can’t allow anything like that, so
we’ll kill any comments that could be conditional.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner._tag_link_attrs">
-<code class="sig-name descname">_tag_link_attrs</code><em class="property"> = {'a': 'href', 'applet': ['code', 'object'], 'embed': 'src', 'iframe': 'src', 'layer': 'src', 'link': 'href', 'script': 'src'}</em><a class="headerlink" href="#lxml.html.clean.Cleaner._tag_link_attrs" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner._tag_link_attrs">
+<span class="sig-name descname"><span class="pre">_tag_link_attrs</span></span><em class="property"> <span class="pre">=</span> <span class="pre">{'a':</span> <span class="pre">'href',</span> <span class="pre">'applet':</span> <span class="pre">['code',</span> <span class="pre">'object'],</span> <span class="pre">'embed':</span> <span class="pre">'src',</span> <span class="pre">'iframe':</span> <span class="pre">'src',</span> <span class="pre">'layer':</span> <span class="pre">'src',</span> <span class="pre">'link':</span> <span class="pre">'href',</span> <span class="pre">'script':</span> <span class="pre">'src'}</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner._tag_link_attrs" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.add_nofollow">
-<code class="sig-name descname">add_nofollow</code><em class="property"> = False</em><a class="headerlink" href="#lxml.html.clean.Cleaner.add_nofollow" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.add_nofollow">
+<span class="sig-name descname"><span class="pre">add_nofollow</span></span><em class="property"> <span class="pre">=</span> <span class="pre">False</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.add_nofollow" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.allow_tags">
-<code class="sig-name descname">allow_tags</code><em class="property"> = None</em><a class="headerlink" href="#lxml.html.clean.Cleaner.allow_tags" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.allow_tags">
+<span class="sig-name descname"><span class="pre">allow_tags</span></span><em class="property"> <span class="pre">=</span> <span class="pre">None</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.allow_tags" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.annoying_tags">
-<code class="sig-name descname">annoying_tags</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.annoying_tags" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.annoying_tags">
+<span class="sig-name descname"><span class="pre">annoying_tags</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.annoying_tags" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.comments">
-<code class="sig-name descname">comments</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.comments" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.comments">
+<span class="sig-name descname"><span class="pre">comments</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.comments" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.embedded">
-<code class="sig-name descname">embedded</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.embedded" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.embedded">
+<span class="sig-name descname"><span class="pre">embedded</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.embedded" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.forms">
-<code class="sig-name descname">forms</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.forms" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.forms">
+<span class="sig-name descname"><span class="pre">forms</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.forms" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.frames">
-<code class="sig-name descname">frames</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.frames" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.frames">
+<span class="sig-name descname"><span class="pre">frames</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.frames" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.host_whitelist">
-<code class="sig-name descname">host_whitelist</code><em class="property"> = ()</em><a class="headerlink" href="#lxml.html.clean.Cleaner.host_whitelist" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.host_whitelist">
+<span class="sig-name descname"><span class="pre">host_whitelist</span></span><em class="property"> <span class="pre">=</span> <span class="pre">()</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.host_whitelist" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.inline_style">
-<code class="sig-name descname">inline_style</code><em class="property"> = None</em><a class="headerlink" href="#lxml.html.clean.Cleaner.inline_style" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.inline_style">
+<span class="sig-name descname"><span class="pre">inline_style</span></span><em class="property"> <span class="pre">=</span> <span class="pre">None</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.inline_style" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.javascript">
-<code class="sig-name descname">javascript</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.javascript" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.javascript">
+<span class="sig-name descname"><span class="pre">javascript</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.javascript" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.kill_tags">
-<code class="sig-name descname">kill_tags</code><em class="property"> = None</em><a class="headerlink" href="#lxml.html.clean.Cleaner.kill_tags" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.kill_tags">
+<span class="sig-name descname"><span class="pre">kill_tags</span></span><em class="property"> <span class="pre">=</span> <span class="pre">None</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.kill_tags" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.links">
-<code class="sig-name descname">links</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.links" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.links">
+<span class="sig-name descname"><span class="pre">links</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.links" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.meta">
-<code class="sig-name descname">meta</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.meta" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.meta">
+<span class="sig-name descname"><span class="pre">meta</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.page_structure">
-<code class="sig-name descname">page_structure</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.page_structure" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.page_structure">
+<span class="sig-name descname"><span class="pre">page_structure</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.page_structure" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.processing_instructions">
-<code class="sig-name descname">processing_instructions</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.processing_instructions" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.processing_instructions">
+<span class="sig-name descname"><span class="pre">processing_instructions</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.processing_instructions" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.remove_tags">
-<code class="sig-name descname">remove_tags</code><em class="property"> = None</em><a class="headerlink" href="#lxml.html.clean.Cleaner.remove_tags" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.remove_tags">
+<span class="sig-name descname"><span class="pre">remove_tags</span></span><em class="property"> <span class="pre">=</span> <span class="pre">None</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.remove_tags" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.remove_unknown_tags">
-<code class="sig-name descname">remove_unknown_tags</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.remove_unknown_tags" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.remove_unknown_tags">
+<span class="sig-name descname"><span class="pre">remove_unknown_tags</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.remove_unknown_tags" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.safe_attrs">
-<code class="sig-name descname">safe_attrs</code><em class="property"> = frozenset({'abbr', 'accept', 'accept-charset', 'accesskey', 'action', 'align', 'alt', 'axis', 'border', 'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'compact', 'coords', 'datetime', 'dir', 'disabled', 'enctype', 'for', 'frame', 'headers', 'height', 'href', 'hreflang', 'hspace', 'id', 'ismap', 'label', 'lang', 'longdesc', 'maxlength', 'media', 'method', 'multiple', 'name', 'nohref', 'noshade', 'nowrap', 'prompt', 'readonly', 'rel', 'rev', 'rows', 'rowspan', 'rules', 'scope', 'selected', 'shape', 'size', 'span', 'src', 'start', 'summary', 'tabindex', 'target', 'title', 'type', 'usemap', 'valign', 'value', 'vspace', 'width'})</em><a class="headerlink" href="#lxml.html.clean.Cleaner.safe_attrs" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.safe_attrs">
+<span class="sig-name descname"><span class="pre">safe_attrs</span></span><em class="property"> <span class="pre">=</span> <span class="pre">frozenset({'abbr',</span> <span class="pre">'accept',</span> <span class="pre">'accept-charset',</span> <span class="pre">'accesskey',</span> <span class="pre">'action',</span> <span class="pre">'align',</span> <span class="pre">'alt',</span> <span class="pre">'axis',</span> <span class="pre">'border',</span> <span class="pre">'cellpadding',</span> <span class="pre">'cellspacing',</span> <span class="pre">'char',</span> <span class="pre">'charoff',</span> <span class="pre">'charset',</span> <span class="pre">'checked',</span> <span class="pre">'cite',</span> <span class="pre">'class',</span> <span class="pre">'clear',</span> <span class="pre">'color',</span> <span class="pre">'cols',</span> <span class="pre">'colspan',</span> <span class="pre">'compact',</span> <span class="pre">'coords',</span> <span class="pre">'datetime',</span> <span class="pre">'dir',</span> <span class="pre">'disabled',</span> <span class="pre">'enctype',</span> <span class="pre">'for',</span> <span class="pre">'frame',</span> <span class="pre">'headers',</span> <span class="pre">'height',</span> <span class="pre">'href',</span> <span class="pre">'hreflang',</span> <span class="pre">'hspace',</span> <span class="pre">'id',</span> <span class="pre">'ismap',</span> <span class="pre">'label',</span> <span class="pre">'lang',</span> <span class="pre">'longdesc',</span> <span class="pre">'maxlength',</span> <span class="pre">'media',</span> <span class="pre">'method',</span> <span class="pre">'multiple',</span> <span class="pre">'name',</span> <span class="pre">'nohref',</span> <span class="pre">'noshade',</span> <span class="pre">'nowrap',</span> <span class="pre">'prompt',</span> <span class="pre">'readonly',</span> <span class="pre">'rel',</span> <span class="pre">'rev',</span> <span class="pre">'rows',</span> <span class="pre">'rowspan',</span> <span class="pre">'rules',</span> <span class="pre">'scope',</span> <span class="pre">'selected',</span> <span class="pre">'shape',</span> <span class="pre">'size',</span> <span class="pre">'span',</span> <span class="pre">'src',</span> <span class="pre">'start',</span> <span class="pre">'summary',</span> <span class="pre">'tabindex',</span> <span class="pre">'target',</span> <span class="pre">'title',</span> <span class="pre">'type',</span> <span class="pre">'usemap',</span> <span class="pre">'valign',</span> <span class="pre">'value',</span> <span class="pre">'vspace',</span> <span class="pre">'width'})</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.safe_attrs" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.safe_attrs_only">
-<code class="sig-name descname">safe_attrs_only</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.safe_attrs_only" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.safe_attrs_only">
+<span class="sig-name descname"><span class="pre">safe_attrs_only</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.safe_attrs_only" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.scripts">
-<code class="sig-name descname">scripts</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.clean.Cleaner.scripts" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.scripts">
+<span class="sig-name descname"><span class="pre">scripts</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.scripts" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.style">
-<code class="sig-name descname">style</code><em class="property"> = False</em><a class="headerlink" href="#lxml.html.clean.Cleaner.style" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.style">
+<span class="sig-name descname"><span class="pre">style</span></span><em class="property"> <span class="pre">=</span> <span class="pre">False</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.style" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.clean.Cleaner.whitelist_tags">
-<code class="sig-name descname">whitelist_tags</code><em class="property"> = {'embed', 'iframe'}</em><a class="headerlink" href="#lxml.html.clean.Cleaner.whitelist_tags" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.Cleaner.whitelist_tags">
+<span class="sig-name descname"><span class="pre">whitelist_tags</span></span><em class="property"> <span class="pre">=</span> <span class="pre">{'embed',</span> <span class="pre">'iframe'}</span></em><a class="headerlink" href="#lxml.html.clean.Cleaner.whitelist_tags" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean._break_text">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">_break_text</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">max_width</span></em>, <em class="sig-param"><span class="n">break_character</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._break_text" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean._break_text">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">_break_text</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_width</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">break_character</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._break_text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean._insert_break">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">_insert_break</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">word</span></em>, <em class="sig-param"><span class="n">width</span></em>, <em class="sig-param"><span class="n">break_character</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._insert_break" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean._insert_break">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">_insert_break</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">word</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">break_character</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._insert_break" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean._is_image_dataurl">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">_is_image_dataurl</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">pos</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">endpos</span><span class="o">=</span><span class="default_value">9223372036854775807</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._is_image_dataurl" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean._is_image_dataurl">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">_is_image_dataurl</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">9223372036854775807</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._is_image_dataurl" title="Permalink to this definition"></a></dt>
<dd><p>Scan through string looking for a match, and return a corresponding match object instance.</p>
<p>Return None if no position in the string matches.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean._is_javascript_scheme">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">_is_javascript_scheme</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">s</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._is_javascript_scheme" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean._is_javascript_scheme">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">_is_javascript_scheme</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">s</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._is_javascript_scheme" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean._is_possibly_malicious_scheme">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">_is_possibly_malicious_scheme</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">pos</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">endpos</span><span class="o">=</span><span class="default_value">9223372036854775807</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._is_possibly_malicious_scheme" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean._is_possibly_malicious_scheme">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">_is_possibly_malicious_scheme</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">9223372036854775807</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._is_possibly_malicious_scheme" title="Permalink to this definition"></a></dt>
<dd><p>Scan through string looking for a match, and return a corresponding match object instance.</p>
<p>Return None if no position in the string matches.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean._link_text">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">_link_text</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">link_regexes</span></em>, <em class="sig-param"><span class="n">avoid_hosts</span></em>, <em class="sig-param"><span class="n">factory</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._link_text" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean._link_text">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">_link_text</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">link_regexes</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">avoid_hosts</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">factory</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._link_text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean._looks_like_tag_content">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">_looks_like_tag_content</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">pos</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">endpos</span><span class="o">=</span><span class="default_value">9223372036854775807</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._looks_like_tag_content" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean._looks_like_tag_content">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">_looks_like_tag_content</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">9223372036854775807</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._looks_like_tag_content" title="Permalink to this definition"></a></dt>
<dd><p>Scan through string looking for a match, and return a corresponding match object instance.</p>
<p>Return None if no position in the string matches.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean._replace_css_import">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">_replace_css_import</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">repl</span></em>, <em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">count</span><span class="o">=</span><span class="default_value">0</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._replace_css_import" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean._replace_css_import">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">_replace_css_import</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">repl</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">count</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._replace_css_import" title="Permalink to this definition"></a></dt>
<dd><p>Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean._replace_css_javascript">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">_replace_css_javascript</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">repl</span></em>, <em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">count</span><span class="o">=</span><span class="default_value">0</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._replace_css_javascript" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean._replace_css_javascript">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">_replace_css_javascript</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">repl</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">count</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._replace_css_javascript" title="Permalink to this definition"></a></dt>
<dd><p>Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean._substitute_whitespace">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">_substitute_whitespace</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">repl</span></em>, <em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">count</span><span class="o">=</span><span class="default_value">0</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._substitute_whitespace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean._substitute_whitespace">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">_substitute_whitespace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">repl</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">count</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean._substitute_whitespace" title="Permalink to this definition"></a></dt>
<dd><p>Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean.autolink">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">autolink</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">link_regexes</span><span class="o">=</span><span class="default_value">[re.compile('(?P<body>https?://(?P<host>[a-z0-9._-]+)(?:/[/\\-_.,a-z0-9%&?;=~]*)?(?:\\([/\\-_.,a-z0-9%&?;=~]*\\))?)', re.IGNORECASE), re.compile('mailto:(?P<body>[a-z0-9._-]+@(?P<host>[a-z0-9_.-]+[a-z]))', re.IGNORECASE)]</span></em>, <em class="sig-param"><span class="n">avoid_elements</span><span class="o">=</span><span class="default_value">['textarea', 'pre', 'code', 'head', 'select', 'a']</span></em>, <em class="sig-param"><span class="n">avoid_hosts</span><span class="o">=</span><span class="default_value">[re.compile('^localhost', re.IGNORECASE), re.compile('\\bexample\\.(?:com|org|net)$', re.IGNORECASE), re.compile('^127\\.0\\.0\\.1$')]</span></em>, <em class="sig-param"><span class="n">avoid_classes</span><span class="o">=</span><span class="default_value">['nolink']</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.autolink" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.autolink">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">autolink</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">link_regexes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">[re.compile('(?P<body>https?://(?P<host>[a-z0-9._-]+)(?:/[/\\-_.,a-z0-9%&?;=~]*)?(?:\\([/\\-_.,a-z0-9%&?;=~]*\\))?)',</span> <span class="pre">re.IGNORECASE),</span> <span class="pre">re.compile('mailto:(?P<body>[a-z0-9._-]+@(?P<host>[a-z0-9_.-]+[a-z]))',</span> <span class="pre">re.IGNORECASE)]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">avoid_elements</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">['textarea',</span> <span class="pre">'pre',</span> <span class="pre">'code',</span> <span class="pre">'head',</span> <span class="pre">'select',</span> <span class="pre">'a']</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">avoid_hosts</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">[re.compile('^localhost',</span> <span class="pre">re.IGNORECASE),</span> <span class="pre">re.compile('\\bexample\\.(?:com|org|net)$',</span> <span class="pre">re.IGNORECASE),</span> <span class="pre">re.compile('^127\\.0\\.0\\.1$')]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">avoid_classes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">['nolink']</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.autolink" title="Permalink to this definition"></a></dt>
<dd><p>Turn any URLs into links.</p>
<p>It will search for links identified by the given regular
expressions (by default mailto and http(s) links).</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean.autolink_html">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">autolink_html</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.autolink_html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.autolink_html">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">autolink_html</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.autolink_html" title="Permalink to this definition"></a></dt>
<dd><p>Turn any URLs into links.</p>
<p>It will search for links identified by the given regular
expressions (by default mailto and http(s) links).</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean.clean_html">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">clean_html</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.clean_html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.clean_html">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">clean_html</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.clean_html" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean.word_break">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">word_break</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">max_width</span><span class="o">=</span><span class="default_value">40</span></em>, <em class="sig-param"><span class="n">avoid_elements</span><span class="o">=</span><span class="default_value">['pre', 'textarea', 'code']</span></em>, <em class="sig-param"><span class="n">avoid_classes</span><span class="o">=</span><span class="default_value">['nobreak']</span></em>, <em class="sig-param"><span class="n">break_character</span><span class="o">=</span><span class="default_value">'\u200b'</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.word_break" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.word_break">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">word_break</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_width</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">40</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">avoid_elements</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">['pre',</span> <span class="pre">'textarea',</span> <span class="pre">'code']</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">avoid_classes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">['nobreak']</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">break_character</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'\u200b'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.word_break" title="Permalink to this definition"></a></dt>
<dd><p>Breaks any long words found in the body of the text (not attributes).</p>
<p>Doesn’t effect any of the tags in avoid_elements, by default
<code class="docutils literal notranslate"><span class="pre"><textarea></span></code> and <code class="docutils literal notranslate"><span class="pre"><pre></span></code></p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.clean.word_break_html">
-<code class="sig-prename descclassname">lxml.html.clean.</code><code class="sig-name descname">word_break_html</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.word_break_html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.clean.word_break_html">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.clean.</span></span><span class="sig-name descname"><span class="pre">word_break_html</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.clean.word_break_html" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html.defs.html" class="btn btn-neutral float-right" title="lxml.html.defs module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html.builder.html" class="btn btn-neutral float-left" title="lxml.html.builder module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html.builder.html" class="btn btn-neutral float-left" title="lxml.html.builder module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html.defs.html" class="btn btn-neutral float-right" title="lxml.html.defs module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html.defs module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html.defs module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html.diff module" href="lxml.html.diff.html" />
<link rel="prev" title="lxml.html.clean module" href="lxml.html.clean.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul class="current">
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li><a href="lxml.html.html">lxml.html package</a> »</li>
-
<li>lxml.html.defs module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html.defs.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.html.defs">
-<span id="lxml-html-defs-module"></span><h1>lxml.html.defs module<a class="headerlink" href="#module-lxml.html.defs" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.html.defs">
+<span id="lxml-html-defs-module"></span><h1>lxml.html.defs module<a class="headerlink" href="#module-lxml.html.defs" title="Permalink to this headline"></a></h1>
<p>Data taken from <a class="reference external" href="https://www.w3.org/TR/html401/index/elements.html">https://www.w3.org/TR/html401/index/elements.html</a>
and <a class="reference external" href="https://www.w3.org/community/webed/wiki/HTML/New_HTML5_Elements">https://www.w3.org/community/webed/wiki/HTML/New_HTML5_Elements</a>
for html5_tags.</p>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html.diff.html" class="btn btn-neutral float-right" title="lxml.html.diff module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html.clean.html" class="btn btn-neutral float-left" title="lxml.html.clean module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html.clean.html" class="btn btn-neutral float-left" title="lxml.html.clean module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html.diff.html" class="btn btn-neutral float-right" title="lxml.html.diff module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html.diff module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html.diff module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html.formfill module" href="lxml.html.formfill.html" />
<link rel="prev" title="lxml.html.defs module" href="lxml.html.defs.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul class="current">
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li><a href="lxml.html.html">lxml.html package</a> »</li>
-
<li>lxml.html.diff module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html.diff.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.html.diff">
-<span id="lxml-html-diff-module"></span><h1>lxml.html.diff module<a class="headerlink" href="#module-lxml.html.diff" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.html.diff">
+<span id="lxml-html-diff-module"></span><h1>lxml.html.diff module<a class="headerlink" href="#module-lxml.html.diff" title="Permalink to this headline"></a></h1>
<dl class="py exception">
-<dt id="lxml.html.diff.NoDeletes">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">NoDeletes</code><a class="headerlink" href="#lxml.html.diff.NoDeletes" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.NoDeletes">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">NoDeletes</span></span><a class="headerlink" href="#lxml.html.diff.NoDeletes" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></p>
<p>Raised when the document no longer contains any pending deletes
(DEL_START/DEL_END)</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.diff.DEL_END">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">DEL_END</code><a class="headerlink" href="#lxml.html.diff.DEL_END" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.DEL_END">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">DEL_END</span></span><a class="headerlink" href="#lxml.html.diff.DEL_END" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.diff.DEL_START">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">DEL_START</code><a class="headerlink" href="#lxml.html.diff.DEL_START" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.DEL_START">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">DEL_START</span></span><a class="headerlink" href="#lxml.html.diff.DEL_START" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.diff.InsensitiveSequenceMatcher">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">InsensitiveSequenceMatcher</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">isjunk</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">a</span><span class="o">=</span><span class="default_value">''</span></em>, <em class="sig-param"><span class="n">b</span><span class="o">=</span><span class="default_value">''</span></em>, <em class="sig-param"><span class="n">autojunk</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.InsensitiveSequenceMatcher" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.InsensitiveSequenceMatcher">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">InsensitiveSequenceMatcher</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">isjunk</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">a</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">b</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">autojunk</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.InsensitiveSequenceMatcher" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">difflib.SequenceMatcher</span></code></p>
<p>Acts like SequenceMatcher, but tries not to find very small equal
blocks amidst large spans of changes</p>
<dl class="py method">
-<dt id="lxml.html.diff.InsensitiveSequenceMatcher.get_matching_blocks">
-<code class="sig-name descname">get_matching_blocks</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.InsensitiveSequenceMatcher.get_matching_blocks" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.InsensitiveSequenceMatcher.get_matching_blocks">
+<span class="sig-name descname"><span class="pre">get_matching_blocks</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.InsensitiveSequenceMatcher.get_matching_blocks" title="Permalink to this definition"></a></dt>
<dd><p>Return list of triples describing matching subsequences.</p>
<p>Each triple is of the form (i, j, n), and means that
a[i:i+n] == b[j:j+n]. The triples are monotonically increasing in
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.diff.InsensitiveSequenceMatcher.threshold">
-<code class="sig-name descname">threshold</code><em class="property"> = 2</em><a class="headerlink" href="#lxml.html.diff.InsensitiveSequenceMatcher.threshold" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.InsensitiveSequenceMatcher.threshold">
+<span class="sig-name descname"><span class="pre">threshold</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2</span></em><a class="headerlink" href="#lxml.html.diff.InsensitiveSequenceMatcher.threshold" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.diff.href_token">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">href_token</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">pre_tags</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">post_tags</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">trailing_whitespace</span><span class="o">=</span><span class="default_value">''</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.href_token" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.href_token">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">href_token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pre_tags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">post_tags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trailing_whitespace</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.href_token" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.html.diff.token" title="lxml.html.diff.token"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.diff.token</span></code></a></p>
<p>Represents the href in an anchor tag. Unlike other words, we only
show the href when it changes.</p>
<dl class="py method">
-<dt id="lxml.html.diff.href_token.html">
-<code class="sig-name descname">html</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.href_token.html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.href_token.html">
+<span class="sig-name descname"><span class="pre">html</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.href_token.html" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.diff.href_token.hide_when_equal">
-<code class="sig-name descname">hide_when_equal</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.diff.href_token.hide_when_equal" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.href_token.hide_when_equal">
+<span class="sig-name descname"><span class="pre">hide_when_equal</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.diff.href_token.hide_when_equal" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.diff.tag_token">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">tag_token</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tag</span></em>, <em class="sig-param"><span class="n">data</span></em>, <em class="sig-param"><span class="n">html_repr</span></em>, <em class="sig-param"><span class="n">pre_tags</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">post_tags</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">trailing_whitespace</span><span class="o">=</span><span class="default_value">''</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.tag_token" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.tag_token">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">tag_token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">html_repr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pre_tags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">post_tags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trailing_whitespace</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.tag_token" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.html.diff.token" title="lxml.html.diff.token"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.diff.token</span></code></a></p>
<p>Represents a token that is actually a tag. Currently this is just
the <img> tag, which takes up visible space just like a word but
is only represented in a document by a tag.</p>
<dl class="py method">
-<dt id="lxml.html.diff.tag_token.html">
-<code class="sig-name descname">html</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.tag_token.html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.tag_token.html">
+<span class="sig-name descname"><span class="pre">html</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.tag_token.html" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.diff.token">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">token</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">pre_tags</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">post_tags</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">trailing_whitespace</span><span class="o">=</span><span class="default_value">''</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.token" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.token">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pre_tags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">post_tags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trailing_whitespace</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.token" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></p>
<p>Represents a diffable token, generally a word that is displayed to
the user. Opening tags are attached to this token when they are
equivalent to a similar word that does not have a trailing
space.</p>
<dl class="py method">
-<dt id="lxml.html.diff.token.html">
-<code class="sig-name descname">html</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.token.html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.token.html">
+<span class="sig-name descname"><span class="pre">html</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.token.html" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.diff.token.hide_when_equal">
-<code class="sig-name descname">hide_when_equal</code><em class="property"> = False</em><a class="headerlink" href="#lxml.html.diff.token.hide_when_equal" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.token.hide_when_equal">
+<span class="sig-name descname"><span class="pre">hide_when_equal</span></span><em class="property"> <span class="pre">=</span> <span class="pre">False</span></em><a class="headerlink" href="#lxml.html.diff.token.hide_when_equal" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff._contains_block_level_tag">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">_contains_block_level_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff._contains_block_level_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff._contains_block_level_tag">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">_contains_block_level_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff._contains_block_level_tag" title="Permalink to this definition"></a></dt>
<dd><p>True if the element contains any block-level elements, like <p>, <td>, etc.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff._fixup_ins_del_tags">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">_fixup_ins_del_tags</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">doc</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff._fixup_ins_del_tags" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff._fixup_ins_del_tags">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">_fixup_ins_del_tags</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">doc</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff._fixup_ins_del_tags" title="Permalink to this definition"></a></dt>
<dd><p>fixup_ins_del_tags that works on an lxml document in-place</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff._merge_element_contents">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">_merge_element_contents</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff._merge_element_contents" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff._merge_element_contents">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">_merge_element_contents</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff._merge_element_contents" title="Permalink to this definition"></a></dt>
<dd><p>Removes an element, but merges its contents into its place, e.g.,
given <p>Hi <i>there!</i></p>, if you remove the <i> element you get
<p>Hi there!</p></p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff._move_el_inside_block">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">_move_el_inside_block</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">tag</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff._move_el_inside_block" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff._move_el_inside_block">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">_move_el_inside_block</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff._move_el_inside_block" title="Permalink to this definition"></a></dt>
<dd><p>helper for _fixup_ins_del_tags; actually takes the <ins> etc tags
and moves them inside any block-level tags.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.cleanup_delete">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">cleanup_delete</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">chunks</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.cleanup_delete" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.cleanup_delete">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">cleanup_delete</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">chunks</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.cleanup_delete" title="Permalink to this definition"></a></dt>
<dd><p>Cleans up any DEL_START/DEL_END markers in the document, replacing
them with <del></del>. To do this while keeping the document
valid, it may need to drop some tags (either start or end tags).</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.cleanup_html">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">cleanup_html</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.cleanup_html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.cleanup_html">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">cleanup_html</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.cleanup_html" title="Permalink to this definition"></a></dt>
<dd><p>This ‘cleans’ the HTML, meaning that any page structure is removed
(only the contents of <body> are used, if there is any <body).
Also <ins> and <del> tags are removed.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.compress_merge_back">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">compress_merge_back</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tokens</span></em>, <em class="sig-param"><span class="n">tok</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.compress_merge_back" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.compress_merge_back">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">compress_merge_back</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokens</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tok</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.compress_merge_back" title="Permalink to this definition"></a></dt>
<dd><p>Merge tok into the last element of tokens (modifying the list of
tokens in-place).</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.compress_tokens">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">compress_tokens</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tokens</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.compress_tokens" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.compress_tokens">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">compress_tokens</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokens</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.compress_tokens" title="Permalink to this definition"></a></dt>
<dd><p>Combine adjacent tokens when there is no HTML between the tokens,
and they share an annotation</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.copy_annotations">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">copy_annotations</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">src</span></em>, <em class="sig-param"><span class="n">dest</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.copy_annotations" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.copy_annotations">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">copy_annotations</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">src</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dest</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.copy_annotations" title="Permalink to this definition"></a></dt>
<dd><p>Copy annotations from the tokens listed in src to the tokens in dest</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.default_markup">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">default_markup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em>, <em class="sig-param"><span class="n">version</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.default_markup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.default_markup">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">default_markup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">version</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.default_markup" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.end_tag">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">end_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.end_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.end_tag">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">end_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.end_tag" title="Permalink to this definition"></a></dt>
<dd><p>The text representation of an end tag for a tag. Includes
trailing whitespace when appropriate.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.expand_tokens">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">expand_tokens</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tokens</span></em>, <em class="sig-param"><span class="n">equal</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.expand_tokens" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.expand_tokens">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">expand_tokens</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokens</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">equal</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.expand_tokens" title="Permalink to this definition"></a></dt>
<dd><p>Given a list of tokens, return a generator of the chunks of
text for the data in the tokens.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.fixup_chunks">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">fixup_chunks</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">chunks</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.fixup_chunks" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.fixup_chunks">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">fixup_chunks</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">chunks</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.fixup_chunks" title="Permalink to this definition"></a></dt>
<dd><p>This function takes a list of chunks and produces a list of tokens.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.fixup_ins_del_tags">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">fixup_ins_del_tags</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.fixup_ins_del_tags" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.fixup_ins_del_tags">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">fixup_ins_del_tags</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.fixup_ins_del_tags" title="Permalink to this definition"></a></dt>
<dd><p>Given an html string, move any <ins> or <del> tags inside of any
block-level elements, e.g. transform <ins><p>word</p></ins> to
<p><ins>word</ins></p></p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.flatten_el">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">flatten_el</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">include_hrefs</span></em>, <em class="sig-param"><span class="n">skip_tag</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.flatten_el" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.flatten_el">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">flatten_el</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">include_hrefs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">skip_tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.flatten_el" title="Permalink to this definition"></a></dt>
<dd><p>Takes an lxml element el, and generates all the text chunks for
that tag. Each start tag is a chunk, each word is a chunk, and each
end tag is a chunk.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.html_annotate">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">html_annotate</code><span class="sig-paren">(</span><em class="sig-param">doclist</em>, <em class="sig-param">markup=<cyfunction default_markup></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.html_annotate" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.html_annotate">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">html_annotate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">doclist</span></em>, <em class="sig-param"><span class="pre">markup=<cyfunction</span> <span class="pre">default_markup></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.html_annotate" title="Permalink to this definition"></a></dt>
<dd><p>doclist should be ordered from oldest to newest, like:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">version1</span> <span class="o">=</span> <span class="s1">'Hello World'</span>
<span class="gp">>>> </span><span class="n">version2</span> <span class="o">=</span> <span class="s1">'Goodbye World'</span>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.html_annotate_merge_annotations">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">html_annotate_merge_annotations</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tokens_old</span></em>, <em class="sig-param"><span class="n">tokens_new</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.html_annotate_merge_annotations" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.html_annotate_merge_annotations">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">html_annotate_merge_annotations</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokens_old</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokens_new</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.html_annotate_merge_annotations" title="Permalink to this definition"></a></dt>
<dd><p>Merge the annotations from tokens_old into tokens_new, when the
tokens in the new document already existed in the old document.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.htmldiff">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">htmldiff</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">old_html</span></em>, <em class="sig-param"><span class="n">new_html</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.htmldiff" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.htmldiff">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">htmldiff</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">old_html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">new_html</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.htmldiff" title="Permalink to this definition"></a></dt>
<dd><p>Do a diff of the old and new document. The documents are HTML
<em>fragments</em> (str/UTF8 or unicode), they are not complete documents
(i.e., no <html> tag).</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.htmldiff_tokens">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">htmldiff_tokens</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html1_tokens</span></em>, <em class="sig-param"><span class="n">html2_tokens</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.htmldiff_tokens" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.htmldiff_tokens">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">htmldiff_tokens</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html1_tokens</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">html2_tokens</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.htmldiff_tokens" title="Permalink to this definition"></a></dt>
<dd><p>Does a diff on the tokens themselves, returning a list of text
chunks (not tokens).</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.is_end_tag">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">is_end_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tok</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.is_end_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.is_end_tag">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">is_end_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tok</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.is_end_tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.is_start_tag">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">is_start_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tok</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.is_start_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.is_start_tag">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">is_start_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tok</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.is_start_tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.is_word">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">is_word</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tok</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.is_word" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.is_word">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">is_word</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tok</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.is_word" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.locate_unbalanced_end">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">locate_unbalanced_end</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">unbalanced_end</span></em>, <em class="sig-param"><span class="n">pre_delete</span></em>, <em class="sig-param"><span class="n">post_delete</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.locate_unbalanced_end" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.locate_unbalanced_end">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">locate_unbalanced_end</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">unbalanced_end</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pre_delete</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">post_delete</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.locate_unbalanced_end" title="Permalink to this definition"></a></dt>
<dd><p>like locate_unbalanced_start, except handling end tags and
possibly moving the point earlier in the document.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.locate_unbalanced_start">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">locate_unbalanced_start</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">unbalanced_start</span></em>, <em class="sig-param"><span class="n">pre_delete</span></em>, <em class="sig-param"><span class="n">post_delete</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.locate_unbalanced_start" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.locate_unbalanced_start">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">locate_unbalanced_start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">unbalanced_start</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pre_delete</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">post_delete</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.locate_unbalanced_start" title="Permalink to this definition"></a></dt>
<dd><p>pre_delete and post_delete implicitly point to a place in the
document (where the two were split). This moves that point (by
popping items from one and pushing them onto the other). It moves
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.markup_serialize_tokens">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">markup_serialize_tokens</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tokens</span></em>, <em class="sig-param"><span class="n">markup_func</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.markup_serialize_tokens" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.markup_serialize_tokens">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">markup_serialize_tokens</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokens</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">markup_func</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.markup_serialize_tokens" title="Permalink to this definition"></a></dt>
<dd><p>Serialize the list of tokens into a list of text chunks, calling
markup_func around text to add annotations.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.merge_delete">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">merge_delete</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">del_chunks</span></em>, <em class="sig-param"><span class="n">doc</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.merge_delete" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.merge_delete">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">merge_delete</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">del_chunks</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">doc</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.merge_delete" title="Permalink to this definition"></a></dt>
<dd><p>Adds the text chunks in del_chunks to the document doc (another
list of text chunks) with marker to show it is a delete.
cleanup_delete later resolves these markers into <del> tags.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.merge_insert">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">merge_insert</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">ins_chunks</span></em>, <em class="sig-param"><span class="n">doc</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.merge_insert" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.merge_insert">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">merge_insert</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ins_chunks</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">doc</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.merge_insert" title="Permalink to this definition"></a></dt>
<dd><p>doc is the already-handled document (as a list of text chunks);
here we add <ins>ins_chunks</ins> to the end of that.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.parse_html">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">parse_html</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="n">cleanup</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.parse_html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.parse_html">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">parse_html</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cleanup</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.parse_html" title="Permalink to this definition"></a></dt>
<dd><p>Parses an HTML fragment, returning an lxml element. Note that the HTML will be
wrapped in a <div> tag that was not in the original document.</p>
<p>If cleanup is true, make sure there’s no <head> or <body>, and get
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.serialize_html_fragment">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">serialize_html_fragment</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">skip_outer</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.serialize_html_fragment" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.serialize_html_fragment">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">serialize_html_fragment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">skip_outer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.serialize_html_fragment" title="Permalink to this definition"></a></dt>
<dd><p>Serialize a single lxml element as HTML. The serialized form
includes the elements tail.</p>
<p>If skip_outer is true, then don’t serialize the outermost tag</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.split_delete">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">split_delete</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">chunks</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.split_delete" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.split_delete">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">split_delete</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">chunks</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.split_delete" title="Permalink to this definition"></a></dt>
<dd><p>Returns (stuff_before_DEL_START, stuff_inside_DEL_START_END,
stuff_after_DEL_END). Returns the first case found (there may be
more DEL_STARTs in stuff_after_DEL_END). Raises NoDeletes if
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.split_trailing_whitespace">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">split_trailing_whitespace</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">word</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.split_trailing_whitespace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.split_trailing_whitespace">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">split_trailing_whitespace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">word</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.split_trailing_whitespace" title="Permalink to this definition"></a></dt>
<dd><blockquote>
<div><p>This function takes a word, such as ‘test</p>
</div></blockquote>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.split_unbalanced">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">split_unbalanced</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">chunks</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.split_unbalanced" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.split_unbalanced">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">split_unbalanced</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">chunks</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.split_unbalanced" title="Permalink to this definition"></a></dt>
<dd><p>Return (unbalanced_start, balanced, unbalanced_end), where each is
a list of text and tag chunks.</p>
<p>unbalanced_start is a list of all the tags that are opened, but
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.split_words">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">split_words</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">text</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.split_words" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.split_words">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">split_words</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.split_words" title="Permalink to this definition"></a></dt>
<dd><p>Splits some text into words. Includes trailing whitespace
on each word when appropriate.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.start_tag">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">start_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.start_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.start_tag">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">start_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.start_tag" title="Permalink to this definition"></a></dt>
<dd><p>The text representation of the start tag for a tag.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.tokenize">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">tokenize</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="n">include_hrefs</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.tokenize" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.tokenize">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">tokenize</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">include_hrefs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.tokenize" title="Permalink to this definition"></a></dt>
<dd><p>Parse the given HTML and returns token objects (words with attached tags).</p>
<p>This parses only the content of a page; anything in the head is
ignored, and the <head> and <body> elements are themselves
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.diff.tokenize_annotated">
-<code class="sig-prename descclassname">lxml.html.diff.</code><code class="sig-name descname">tokenize_annotated</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">doc</span></em>, <em class="sig-param"><span class="n">annotation</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.tokenize_annotated" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.diff.tokenize_annotated">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.diff.</span></span><span class="sig-name descname"><span class="pre">tokenize_annotated</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">doc</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">annotation</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.diff.tokenize_annotated" title="Permalink to this definition"></a></dt>
<dd><p>Tokenize a document and add an annotation attribute to each token</p>
</dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html.formfill.html" class="btn btn-neutral float-right" title="lxml.html.formfill module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html.defs.html" class="btn btn-neutral float-left" title="lxml.html.defs module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html.defs.html" class="btn btn-neutral float-left" title="lxml.html.defs module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html.formfill.html" class="btn btn-neutral float-right" title="lxml.html.formfill module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html.formfill module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html.formfill module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html.html5parser module" href="lxml.html.html5parser.html" />
<link rel="prev" title="lxml.html.diff module" href="lxml.html.diff.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul class="current">
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li><a href="lxml.html.html">lxml.html package</a> »</li>
-
<li>lxml.html.formfill module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html.formfill.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.html.formfill">
-<span id="lxml-html-formfill-module"></span><h1>lxml.html.formfill module<a class="headerlink" href="#module-lxml.html.formfill" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.html.formfill">
+<span id="lxml-html-formfill-module"></span><h1>lxml.html.formfill module<a class="headerlink" href="#module-lxml.html.formfill" title="Permalink to this headline"></a></h1>
<dl class="py exception">
-<dt id="lxml.html.formfill.FormNotFound">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">FormNotFound</code><a class="reference internal" href="_modules/lxml/html/formfill.html#FormNotFound"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill.FormNotFound" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.FormNotFound">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">FormNotFound</span></span><a class="reference internal" href="_modules/lxml/html/formfill.html#FormNotFound"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill.FormNotFound" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">LookupError</span></code></p>
<p>Raised when no form can be found</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.formfill.DefaultErrorCreator">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">DefaultErrorCreator</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#DefaultErrorCreator"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.DefaultErrorCreator">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">DefaultErrorCreator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#DefaultErrorCreator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="py attribute">
-<dt id="lxml.html.formfill.DefaultErrorCreator.block_inside">
-<code class="sig-name descname">block_inside</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.block_inside" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.DefaultErrorCreator.block_inside">
+<span class="sig-name descname"><span class="pre">block_inside</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.block_inside" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.formfill.DefaultErrorCreator.default_message">
-<code class="sig-name descname">default_message</code><em class="property"> = 'Invalid'</em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.default_message" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.DefaultErrorCreator.default_message">
+<span class="sig-name descname"><span class="pre">default_message</span></span><em class="property"> <span class="pre">=</span> <span class="pre">'Invalid'</span></em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.default_message" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.formfill.DefaultErrorCreator.error_block_class">
-<code class="sig-name descname">error_block_class</code><em class="property"> = 'error-block'</em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.error_block_class" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.DefaultErrorCreator.error_block_class">
+<span class="sig-name descname"><span class="pre">error_block_class</span></span><em class="property"> <span class="pre">=</span> <span class="pre">'error-block'</span></em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.error_block_class" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.formfill.DefaultErrorCreator.error_container_tag">
-<code class="sig-name descname">error_container_tag</code><em class="property"> = 'div'</em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.error_container_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.DefaultErrorCreator.error_container_tag">
+<span class="sig-name descname"><span class="pre">error_container_tag</span></span><em class="property"> <span class="pre">=</span> <span class="pre">'div'</span></em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.error_container_tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.formfill.DefaultErrorCreator.error_message_class">
-<code class="sig-name descname">error_message_class</code><em class="property"> = 'error-message'</em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.error_message_class" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.DefaultErrorCreator.error_message_class">
+<span class="sig-name descname"><span class="pre">error_message_class</span></span><em class="property"> <span class="pre">=</span> <span class="pre">'error-message'</span></em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.error_message_class" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.formfill.DefaultErrorCreator.insert_before">
-<code class="sig-name descname">insert_before</code><em class="property"> = True</em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.insert_before" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.DefaultErrorCreator.insert_before">
+<span class="sig-name descname"><span class="pre">insert_before</span></span><em class="property"> <span class="pre">=</span> <span class="pre">True</span></em><a class="headerlink" href="#lxml.html.formfill.DefaultErrorCreator.insert_before" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._add_class">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_add_class</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">class_name</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_add_class"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._add_class" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._add_class">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_add_class</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">class_name</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_add_class"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._add_class" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._check">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_check</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">check</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_check"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._check" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._check">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_check</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_check"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._check" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._fill_form">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_fill_form</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">values</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_fill_form"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._fill_form" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._fill_form">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_fill_form</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_fill_form"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._fill_form" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._fill_multiple">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_fill_multiple</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">input</span></em>, <em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_fill_multiple"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._fill_multiple" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._fill_multiple">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_fill_multiple</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_fill_multiple"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._fill_multiple" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._fill_single">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_fill_single</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">input</span></em>, <em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_fill_single"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._fill_single" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._fill_single">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_fill_single</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_fill_single"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._fill_single" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._find_elements_for_name">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_find_elements_for_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">form</span></em>, <em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">error</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_find_elements_for_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._find_elements_for_name" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._find_elements_for_name">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_find_elements_for_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">form</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">error</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_find_elements_for_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._find_elements_for_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._find_form">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_find_form</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">form_id</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">form_index</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_find_form"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._find_form" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._find_form">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_find_form</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">form_id</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">form_index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_find_form"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._find_form" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._find_form_ids">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_find_form_ids</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_find_form_ids"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._find_form_ids" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._find_form_ids">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_find_form_ids</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_find_form_ids"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._find_form_ids" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._insert_error">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_insert_error</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">error</span></em>, <em class="sig-param"><span class="n">error_class</span></em>, <em class="sig-param"><span class="n">error_creator</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_insert_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._insert_error" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._insert_error">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_insert_error</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">error</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">error_class</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">error_creator</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_insert_error"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._insert_error" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._select">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_select</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">select</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_select"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._select" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._select">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_select</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">select</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_select"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._select" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill._takes_multiple">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">_takes_multiple</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">input</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_takes_multiple"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill._takes_multiple" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill._takes_multiple">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">_takes_multiple</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#_takes_multiple"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill._takes_multiple" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill.fill_form">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">fill_form</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em>, <em class="sig-param"><span class="n">values</span></em>, <em class="sig-param"><span class="n">form_id</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">form_index</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#fill_form"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill.fill_form" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.fill_form">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">fill_form</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">values</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">form_id</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">form_index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#fill_form"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill.fill_form" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill.fill_form_html">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">fill_form_html</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="n">values</span></em>, <em class="sig-param"><span class="n">form_id</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">form_index</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#fill_form_html"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill.fill_form_html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.fill_form_html">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">fill_form_html</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">values</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">form_id</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">form_index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#fill_form_html"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill.fill_form_html" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill.insert_errors">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">insert_errors</code><span class="sig-paren">(</span><em class="sig-param">el</em>, <em class="sig-param">errors</em>, <em class="sig-param">form_id=None</em>, <em class="sig-param">form_index=None</em>, <em class="sig-param">error_class='error'</em>, <em class="sig-param">error_creator=<lxml.html.formfill.DefaultErrorCreator object></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#insert_errors"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill.insert_errors" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.insert_errors">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">insert_errors</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">el</span></em>, <em class="sig-param"><span class="pre">errors</span></em>, <em class="sig-param"><span class="pre">form_id=None</span></em>, <em class="sig-param"><span class="pre">form_index=None</span></em>, <em class="sig-param"><span class="pre">error_class='error'</span></em>, <em class="sig-param"><span class="pre">error_creator=<lxml.html.formfill.DefaultErrorCreator</span> <span class="pre">object></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#insert_errors"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill.insert_errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.formfill.insert_errors_html">
-<code class="sig-prename descclassname">lxml.html.formfill.</code><code class="sig-name descname">insert_errors_html</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="n">values</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#insert_errors_html"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.formfill.insert_errors_html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.formfill.insert_errors_html">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.formfill.</span></span><span class="sig-name descname"><span class="pre">insert_errors_html</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">values</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html/formfill.html#insert_errors_html"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.formfill.insert_errors_html" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html.html5parser.html" class="btn btn-neutral float-right" title="lxml.html.html5parser module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html.diff.html" class="btn btn-neutral float-left" title="lxml.html.diff module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html.diff.html" class="btn btn-neutral float-left" title="lxml.html.diff module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html.html5parser.html" class="btn btn-neutral float-right" title="lxml.html.html5parser module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html package — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
-
-
-
-
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html package — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html.ElementSoup module" href="lxml.html.ElementSoup.html" />
<link rel="prev" title="lxml package" href="lxml.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li>lxml.html package</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="lxml-html-package">
-<h1>lxml.html package<a class="headerlink" href="#lxml-html-package" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="submodules">
-<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+
+ <section id="lxml-html-package">
+<h1>lxml.html package<a class="headerlink" href="#lxml-html-package" title="Permalink to this headline"></a></h1>
+<section id="submodules">
+<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="lxml.html.ElementSoup.html">lxml.html.ElementSoup module</a></li>
<li class="toctree-l1"><a class="reference internal" href="lxml.html.soupparser.html">lxml.html.soupparser module</a></li>
</ul>
</div>
-</div>
-<div class="section" id="module-lxml.html">
-<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-lxml.html" title="Permalink to this headline">¶</a></h2>
+</section>
+<section id="module-lxml.html">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-lxml.html" title="Permalink to this headline"></a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">lxml.html</span></code> tool set for HTML handling.</p>
<dl class="py class">
-<dt id="lxml.html.CheckboxGroup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">CheckboxGroup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">iterable</span><span class="o">=</span><span class="default_value">()</span></em>, <em class="sig-param"><span class="o">/</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#CheckboxGroup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.CheckboxGroup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.CheckboxGroup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">CheckboxGroup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">iterable</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">()</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">/</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#CheckboxGroup"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.CheckboxGroup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p>
<p>Represents a group of checkboxes (<code class="docutils literal notranslate"><span class="pre"><input</span> <span class="pre">type=checkbox></span></code>) that
have the same name.</p>
returns a set-like object that you can add to or remove from to
check and uncheck checkboxes. You can also use <code class="docutils literal notranslate"><span class="pre">.value_options</span></code>
to get the possible values.</p>
-<dl class="py method">
-<dt id="lxml.html.CheckboxGroup.value">
-<em class="property">property </em><code class="sig-name descname">value</code><a class="headerlink" href="#lxml.html.CheckboxGroup.value" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.CheckboxGroup.value">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#lxml.html.CheckboxGroup.value" title="Permalink to this definition"></a></dt>
<dd><p>Return a set-like object that can be modified to check or
uncheck individual checkboxes according to their value.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.CheckboxGroup.value_options">
-<em class="property">property </em><code class="sig-name descname">value_options</code><a class="headerlink" href="#lxml.html.CheckboxGroup.value_options" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.CheckboxGroup.value_options">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">value_options</span></span><a class="headerlink" href="#lxml.html.CheckboxGroup.value_options" title="Permalink to this definition"></a></dt>
<dd><p>Returns a list of all the possible values.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.CheckboxValues">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">CheckboxValues</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">group</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#CheckboxValues"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.CheckboxValues" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.CheckboxValues">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">CheckboxValues</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">group</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#CheckboxValues"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.CheckboxValues" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.html._setmixin.html#lxml.html._setmixin.SetMixin" title="lxml.html._setmixin.SetMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html._setmixin.SetMixin</span></code></a></p>
<p>Represents the values of the checked checkboxes in a group of
checkboxes with the same name.</p>
<dl class="py method">
-<dt id="lxml.html.CheckboxValues.add">
-<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#CheckboxValues.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.CheckboxValues.add" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.CheckboxValues.add">
+<span class="sig-name descname"><span class="pre">add</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#CheckboxValues.add"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.CheckboxValues.add" title="Permalink to this definition"></a></dt>
<dd><p>Add an element.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.CheckboxValues.remove">
-<code class="sig-name descname">remove</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#CheckboxValues.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.CheckboxValues.remove" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.CheckboxValues.remove">
+<span class="sig-name descname"><span class="pre">remove</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#CheckboxValues.remove"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.CheckboxValues.remove" title="Permalink to this definition"></a></dt>
<dd><p>Remove an element. If not a member, raise a KeyError.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.CheckboxValues._abc_impl">
-<code class="sig-name descname">_abc_impl</code><em class="property"> = <_abc_data object></em><a class="headerlink" href="#lxml.html.CheckboxValues._abc_impl" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.CheckboxValues._abc_impl">
+<span class="sig-name descname"><span class="pre">_abc_impl</span></span><em class="property"> <span class="pre">=</span> <span class="pre"><_abc._abc_data</span> <span class="pre">object></span></em><a class="headerlink" href="#lxml.html.CheckboxValues._abc_impl" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.Classes">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">Classes</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">attributes</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.Classes" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.Classes">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">Classes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">attributes</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.Classes" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">collections.abc.MutableSet</span></code></p>
<p>Provides access to an element’s class attribute as a set-like collection.
Usage:</p>
</pre></div>
</div>
<dl class="py method">
-<dt id="lxml.html.Classes.add">
-<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.Classes.add" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.Classes.add">
+<span class="sig-name descname"><span class="pre">add</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes.add"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.Classes.add" title="Permalink to this definition"></a></dt>
<dd><p>Add a class.</p>
<p>This has no effect if the class is already present.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.Classes.discard">
-<code class="sig-name descname">discard</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes.discard"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.Classes.discard" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.Classes.discard">
+<span class="sig-name descname"><span class="pre">discard</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes.discard"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.Classes.discard" title="Permalink to this definition"></a></dt>
<dd><p>Remove a class if it is currently present.</p>
<p>If the class is not present, do nothing.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.Classes.remove">
-<code class="sig-name descname">remove</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.Classes.remove" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.Classes.remove">
+<span class="sig-name descname"><span class="pre">remove</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes.remove"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.Classes.remove" title="Permalink to this definition"></a></dt>
<dd><p>Remove a class; it must currently be present.</p>
<p>If the class is not present, raise a KeyError.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.Classes.toggle">
-<code class="sig-name descname">toggle</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes.toggle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.Classes.toggle" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.Classes.toggle">
+<span class="sig-name descname"><span class="pre">toggle</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes.toggle"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.Classes.toggle" title="Permalink to this definition"></a></dt>
<dd><p>Add a class name if it isn’t there yet, or remove it if it exists.</p>
<p>Returns true if the class was added (and is now enabled) and
false if it was removed (and is now disabled).</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.Classes.update">
-<code class="sig-name descname">update</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">values</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.Classes.update" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.Classes.update">
+<span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Classes.update"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.Classes.update" title="Permalink to this definition"></a></dt>
<dd><p>Add all names from ‘values’.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.Classes._abc_impl">
-<code class="sig-name descname">_abc_impl</code><em class="property"> = <_abc_data object></em><a class="headerlink" href="#lxml.html.Classes._abc_impl" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.Classes._abc_impl">
+<span class="sig-name descname"><span class="pre">_abc_impl</span></span><em class="property"> <span class="pre">=</span> <span class="pre"><_abc._abc_data</span> <span class="pre">object></span></em><a class="headerlink" href="#lxml.html.Classes._abc_impl" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.FieldsDict">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">FieldsDict</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inputs</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#FieldsDict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.FieldsDict" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.FieldsDict">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">FieldsDict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#FieldsDict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.FieldsDict" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">collections.abc.MutableMapping</span></code></p>
<dl class="py method">
-<dt id="lxml.html.FieldsDict.keys">
-<code class="sig-name descname">keys</code><span class="sig-paren">(</span><span class="sig-paren">)</span> → a set-like object providing a view on D’s keys<a class="reference internal" href="_modules/lxml/html.html#FieldsDict.keys"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.FieldsDict.keys" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.FieldsDict.keys">
+<span class="sig-name descname"><span class="pre">keys</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">a</span> <span class="pre">set-like</span> <span class="pre">object</span> <span class="pre">providing</span> <span class="pre">a</span> <span class="pre">view</span> <span class="pre">on</span> <span class="pre">D's</span> <span class="pre">keys</span></span></span><a class="reference internal" href="_modules/lxml/html.html#FieldsDict.keys"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.FieldsDict.keys" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.FieldsDict._abc_impl">
-<code class="sig-name descname">_abc_impl</code><em class="property"> = <_abc_data object></em><a class="headerlink" href="#lxml.html.FieldsDict._abc_impl" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.FieldsDict._abc_impl">
+<span class="sig-name descname"><span class="pre">_abc_impl</span></span><em class="property"> <span class="pre">=</span> <span class="pre"><_abc._abc_data</span> <span class="pre">object></span></em><a class="headerlink" href="#lxml.html.FieldsDict._abc_impl" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.FormElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">FormElement</code><a class="reference internal" href="_modules/lxml/html.html#FormElement"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.FormElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.FormElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">FormElement</span></span><a class="reference internal" href="_modules/lxml/html.html#FormElement"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.FormElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.html.HtmlElement" title="lxml.html.HtmlElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.HtmlElement</span></code></a></p>
<p>Represents a <form> element.</p>
<dl class="py method">
-<dt id="lxml.html.FormElement._name">
-<code class="sig-name descname">_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#FormElement._name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.FormElement._name" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.FormElement._name">
+<span class="sig-name descname"><span class="pre">_name</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#FormElement._name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.FormElement._name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.html.FormElement.form_values">
-<code class="sig-name descname">form_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#FormElement.form_values"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.FormElement.form_values" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.FormElement.form_values">
+<span class="sig-name descname"><span class="pre">form_values</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#FormElement.form_values"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.FormElement.form_values" title="Permalink to this definition"></a></dt>
<dd><p>Return a list of tuples of the field values for the form.
This is suitable to be passed to <code class="docutils literal notranslate"><span class="pre">urllib.urlencode()</span></code>.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.FormElement.action">
-<em class="property">property </em><code class="sig-name descname">action</code><a class="headerlink" href="#lxml.html.FormElement.action" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.FormElement.action">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">action</span></span><a class="headerlink" href="#lxml.html.FormElement.action" title="Permalink to this definition"></a></dt>
<dd><p>Get/set the form’s <code class="docutils literal notranslate"><span class="pre">action</span></code> attribute.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.FormElement.fields">
-<em class="property">property </em><code class="sig-name descname">fields</code><a class="headerlink" href="#lxml.html.FormElement.fields" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.FormElement.fields">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">fields</span></span><a class="headerlink" href="#lxml.html.FormElement.fields" title="Permalink to this definition"></a></dt>
<dd><p>Dictionary-like object that represents all the fields in this
form. You can set values in this dictionary to effect the
form.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.FormElement.inputs">
-<em class="property">property </em><code class="sig-name descname">inputs</code><a class="headerlink" href="#lxml.html.FormElement.inputs" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.FormElement.inputs">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">inputs</span></span><a class="headerlink" href="#lxml.html.FormElement.inputs" title="Permalink to this definition"></a></dt>
<dd><p>Returns an accessor for all the input elements in the form.</p>
<p>See <cite>InputGetter</cite> for more information about the object.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.FormElement.method">
-<em class="property">property </em><code class="sig-name descname">method</code><a class="headerlink" href="#lxml.html.FormElement.method" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.FormElement.method">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">method</span></span><a class="headerlink" href="#lxml.html.FormElement.method" title="Permalink to this definition"></a></dt>
<dd><p>Get/set the form’s method. Always returns a capitalized
string, and defaults to <code class="docutils literal notranslate"><span class="pre">'GET'</span></code></p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.HTMLParser">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">HTMLParser</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HTMLParser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HTMLParser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HTMLParser">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">HTMLParser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HTMLParser"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HTMLParser" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.HTMLParser" title="lxml.etree.HTMLParser"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.HTMLParser</span></code></a></p>
<p>An HTML parser that is configured to return lxml.html Element
objects.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.HtmlComment">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">HtmlComment</code><a class="reference internal" href="_modules/lxml/html.html#HtmlComment"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlComment" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlComment">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">HtmlComment</span></span><a class="reference internal" href="_modules/lxml/html.html#HtmlComment"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlComment" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.CommentBase" title="lxml.etree.CommentBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.CommentBase</span></code></a>, <a class="reference internal" href="#lxml.html.HtmlMixin" title="lxml.html.HtmlMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.HtmlMixin</span></code></a></p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.HtmlElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">HtmlElement</code><a class="reference internal" href="_modules/lxml/html.html#HtmlElement"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">HtmlElement</span></span><a class="reference internal" href="_modules/lxml/html.html#HtmlElement"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.ElementBase" title="lxml.etree.ElementBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.ElementBase</span></code></a>, <a class="reference internal" href="#lxml.html.HtmlMixin" title="lxml.html.HtmlMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.HtmlMixin</span></code></a></p>
<dl class="py method">
-<dt id="lxml.html.HtmlElement.cssselect">
-<code class="sig-name descname">cssselect</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">expr</span></em>, <em class="sig-param"><span class="n">translator</span><span class="o">=</span><span class="default_value">'html'</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.HtmlElement.cssselect" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlElement.cssselect">
+<span class="sig-name descname"><span class="pre">cssselect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">expr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translator</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'html'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.HtmlElement.cssselect" title="Permalink to this definition"></a></dt>
<dd><p>Run the CSS expression on this element and its children,
returning a list of the results.</p>
<p>Equivalent to lxml.cssselect.CSSSelect(expr, translator=’html’)(self)
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlElement.set">
-<code class="sig-name descname">set</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">value</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.HtmlElement.set" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlElement.set">
+<span class="sig-name descname"><span class="pre">set</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.HtmlElement.set" title="Permalink to this definition"></a></dt>
<dd><p>Sets an element attribute. If no value is provided, or if the value is None,
creates a ‘boolean’ attribute without value, e.g. “<form novalidate></form>”
for <code class="docutils literal notranslate"><span class="pre">form.set('novalidate')</span></code>.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.HtmlElementClassLookup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">HtmlElementClassLookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">classes</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">mixins</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlElementClassLookup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlElementClassLookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlElementClassLookup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">HtmlElementClassLookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">classes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mixins</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlElementClassLookup"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlElementClassLookup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.CustomElementClassLookup" title="lxml.etree.CustomElementClassLookup"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.CustomElementClassLookup</span></code></a></p>
<p>A lookup scheme for HTML Element classes.</p>
<p>To create a lookup instance with different Element classes, pass a tag
The special key ‘*’ denotes a Mixin class that should be mixed into all
Element classes.</p>
<dl class="py method">
-<dt id="lxml.html.HtmlElementClassLookup.lookup">
-<code class="sig-name descname">lookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">type</span></em>, <em class="sig-param"><span class="n">doc</span></em>, <em class="sig-param"><span class="n">namespace</span></em>, <em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlElementClassLookup.lookup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlElementClassLookup.lookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlElementClassLookup.lookup">
+<span class="sig-name descname"><span class="pre">lookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">doc</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespace</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlElementClassLookup.lookup"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlElementClassLookup.lookup" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.HtmlElementClassLookup._default_element_classes">
-<code class="sig-name descname">_default_element_classes</code><em class="property"> = {'form': <class 'lxml.html.FormElement'>, 'input': <class 'lxml.html.InputElement'>, 'label': <class 'lxml.html.LabelElement'>, 'select': <class 'lxml.html.SelectElement'>, 'textarea': <class 'lxml.html.TextareaElement'>}</em><a class="headerlink" href="#lxml.html.HtmlElementClassLookup._default_element_classes" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlElementClassLookup._default_element_classes">
+<span class="sig-name descname"><span class="pre">_default_element_classes</span></span><em class="property"> <span class="pre">=</span> <span class="pre">{'form':</span> <span class="pre"><class</span> <span class="pre">'lxml.html.FormElement'>,</span> <span class="pre">'input':</span> <span class="pre"><class</span> <span class="pre">'lxml.html.InputElement'>,</span> <span class="pre">'label':</span> <span class="pre"><class</span> <span class="pre">'lxml.html.LabelElement'>,</span> <span class="pre">'select':</span> <span class="pre"><class</span> <span class="pre">'lxml.html.SelectElement'>,</span> <span class="pre">'textarea':</span> <span class="pre"><class</span> <span class="pre">'lxml.html.TextareaElement'>}</span></em><a class="headerlink" href="#lxml.html.HtmlElementClassLookup._default_element_classes" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.HtmlEntity">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">HtmlEntity</code><a class="reference internal" href="_modules/lxml/html.html#HtmlEntity"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlEntity" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlEntity">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">HtmlEntity</span></span><a class="reference internal" href="_modules/lxml/html.html#HtmlEntity"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlEntity" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.EntityBase" title="lxml.etree.EntityBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.EntityBase</span></code></a>, <a class="reference internal" href="#lxml.html.HtmlMixin" title="lxml.html.HtmlMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.HtmlMixin</span></code></a></p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.HtmlMixin">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">HtmlMixin</code><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">HtmlMixin</span></span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.cssselect">
-<code class="sig-name descname">cssselect</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">expr</span></em>, <em class="sig-param"><span class="n">translator</span><span class="o">=</span><span class="default_value">'html'</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.cssselect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.cssselect" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.cssselect">
+<span class="sig-name descname"><span class="pre">cssselect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">expr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translator</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'html'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.cssselect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.cssselect" title="Permalink to this definition"></a></dt>
<dd><p>Run the CSS expression on this element and its children,
returning a list of the results.</p>
<p>Equivalent to lxml.cssselect.CSSSelect(expr, translator=’html’)(self)
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.drop_tag">
-<code class="sig-name descname">drop_tag</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.drop_tag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.drop_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.drop_tag">
+<span class="sig-name descname"><span class="pre">drop_tag</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.drop_tag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.drop_tag" title="Permalink to this definition"></a></dt>
<dd><p>Remove the tag, but not its children or text. The children and text
are merged into the parent.</p>
<p>Example:</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.drop_tree">
-<code class="sig-name descname">drop_tree</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.drop_tree"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.drop_tree" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.drop_tree">
+<span class="sig-name descname"><span class="pre">drop_tree</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.drop_tree"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.drop_tree" title="Permalink to this definition"></a></dt>
<dd><p>Removes this element from the tree, including its children and
text. The tail text is joined to the previous element or
parent.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.find_class">
-<code class="sig-name descname">find_class</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">class_name</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.find_class"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.find_class" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.find_class">
+<span class="sig-name descname"><span class="pre">find_class</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">class_name</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.find_class"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.find_class" title="Permalink to this definition"></a></dt>
<dd><p>Find any elements with the given class name.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.find_rel_links">
-<code class="sig-name descname">find_rel_links</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">rel</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.find_rel_links"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.find_rel_links" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.find_rel_links">
+<span class="sig-name descname"><span class="pre">find_rel_links</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rel</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.find_rel_links"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.find_rel_links" title="Permalink to this definition"></a></dt>
<dd><p>Find any links like <code class="docutils literal notranslate"><span class="pre"><a</span> <span class="pre">rel="{rel}">...</a></span></code>; returns a list of elements.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.get_element_by_id">
-<code class="sig-name descname">get_element_by_id</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">id</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">default</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.get_element_by_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.get_element_by_id" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.get_element_by_id">
+<span class="sig-name descname"><span class="pre">get_element_by_id</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">id</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">default</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.get_element_by_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.get_element_by_id" title="Permalink to this definition"></a></dt>
<dd><p>Get the first element in a document with the given id. If none is
found, return the default argument if provided or raise KeyError
otherwise.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.iterlinks">
-<code class="sig-name descname">iterlinks</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.iterlinks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.iterlinks" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.iterlinks">
+<span class="sig-name descname"><span class="pre">iterlinks</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.iterlinks"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.iterlinks" title="Permalink to this definition"></a></dt>
<dd><p>Yield (element, attribute, link, pos), where attribute may be None
(indicating the link is in the text). <code class="docutils literal notranslate"><span class="pre">pos</span></code> is the position
where the link occurs; often 0, but sometimes something else in
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.make_links_absolute">
-<code class="sig-name descname">make_links_absolute</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">resolve_base_href</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">handle_failures</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.make_links_absolute"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.make_links_absolute" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.make_links_absolute">
+<span class="sig-name descname"><span class="pre">make_links_absolute</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">resolve_base_href</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">handle_failures</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.make_links_absolute"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.make_links_absolute" title="Permalink to this definition"></a></dt>
<dd><p>Make all links in the document absolute, given the
<code class="docutils literal notranslate"><span class="pre">base_url</span></code> for the document (the full URL where the document
came from), or if no <code class="docutils literal notranslate"><span class="pre">base_url</span></code> is given, then the <code class="docutils literal notranslate"><span class="pre">.base_url</span></code>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.resolve_base_href">
-<code class="sig-name descname">resolve_base_href</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">handle_failures</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.resolve_base_href"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.resolve_base_href" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.resolve_base_href">
+<span class="sig-name descname"><span class="pre">resolve_base_href</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">handle_failures</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.resolve_base_href"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.resolve_base_href" title="Permalink to this definition"></a></dt>
<dd><p>Find any <code class="docutils literal notranslate"><span class="pre"><base</span> <span class="pre">href></span></code> tag in the document, and apply its
values to all links found in the document. Also remove the
tag once it has been applied.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.rewrite_links">
-<code class="sig-name descname">rewrite_links</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">link_repl_func</span></em>, <em class="sig-param"><span class="n">resolve_base_href</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">base_href</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.rewrite_links"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.rewrite_links" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.rewrite_links">
+<span class="sig-name descname"><span class="pre">rewrite_links</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">link_repl_func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">resolve_base_href</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_href</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.rewrite_links"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.rewrite_links" title="Permalink to this definition"></a></dt>
<dd><p>Rewrite all the links in the document. For each link
<code class="docutils literal notranslate"><span class="pre">link_repl_func(link)</span></code> will be called, and the return value
will replace the old link.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.set">
-<code class="sig-name descname">set</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">value</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.set"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.set" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.set">
+<span class="sig-name descname"><span class="pre">set</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.set"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.set" title="Permalink to this definition"></a></dt>
<dd><p>Sets an element attribute. If no value is provided, or if the value is None,
creates a ‘boolean’ attribute without value, e.g. “<form novalidate></form>”
for <code class="docutils literal notranslate"><span class="pre">form.set('novalidate')</span></code>.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.HtmlMixin.text_content">
-<code class="sig-name descname">text_content</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.text_content"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlMixin.text_content" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.text_content">
+<span class="sig-name descname"><span class="pre">text_content</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#HtmlMixin.text_content"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlMixin.text_content" title="Permalink to this definition"></a></dt>
<dd><p>Return the text content of the tag (and the text in any children).</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.HtmlMixin.base_url">
-<em class="property">property </em><code class="sig-name descname">base_url</code><a class="headerlink" href="#lxml.html.HtmlMixin.base_url" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.base_url">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">base_url</span></span><a class="headerlink" href="#lxml.html.HtmlMixin.base_url" title="Permalink to this definition"></a></dt>
<dd><p>Returns the base URL, given when the page was parsed.</p>
<p>Use with <code class="docutils literal notranslate"><span class="pre">urlparse.urljoin(el.base_url,</span> <span class="pre">href)</span></code> to get
absolute URLs.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.HtmlMixin.body">
-<em class="property">property </em><code class="sig-name descname">body</code><a class="headerlink" href="#lxml.html.HtmlMixin.body" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.body">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">body</span></span><a class="headerlink" href="#lxml.html.HtmlMixin.body" title="Permalink to this definition"></a></dt>
<dd><p>Return the <body> element. Can be called from a child element
to get the document’s head.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.HtmlMixin.classes">
-<em class="property">property </em><code class="sig-name descname">classes</code><a class="headerlink" href="#lxml.html.HtmlMixin.classes" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.classes">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">classes</span></span><a class="headerlink" href="#lxml.html.HtmlMixin.classes" title="Permalink to this definition"></a></dt>
<dd><p>A set-like wrapper around the ‘class’ attribute.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.HtmlMixin.forms">
-<em class="property">property </em><code class="sig-name descname">forms</code><a class="headerlink" href="#lxml.html.HtmlMixin.forms" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.forms">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">forms</span></span><a class="headerlink" href="#lxml.html.HtmlMixin.forms" title="Permalink to this definition"></a></dt>
<dd><p>Return a list of all the forms</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.HtmlMixin.head">
-<em class="property">property </em><code class="sig-name descname">head</code><a class="headerlink" href="#lxml.html.HtmlMixin.head" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.head">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">head</span></span><a class="headerlink" href="#lxml.html.HtmlMixin.head" title="Permalink to this definition"></a></dt>
<dd><p>Returns the <head> element. Can be called from a child
element to get the document’s head.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.HtmlMixin.label">
-<em class="property">property </em><code class="sig-name descname">label</code><a class="headerlink" href="#lxml.html.HtmlMixin.label" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.HtmlMixin.label">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">label</span></span><a class="headerlink" href="#lxml.html.HtmlMixin.label" title="Permalink to this definition"></a></dt>
<dd><p>Get or set any <label> element associated with this element.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.HtmlProcessingInstruction">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">HtmlProcessingInstruction</code><a class="reference internal" href="_modules/lxml/html.html#HtmlProcessingInstruction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.HtmlProcessingInstruction" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.HtmlProcessingInstruction">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">HtmlProcessingInstruction</span></span><a class="reference internal" href="_modules/lxml/html.html#HtmlProcessingInstruction"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.HtmlProcessingInstruction" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.PIBase" title="lxml.etree.PIBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.PIBase</span></code></a>, <a class="reference internal" href="#lxml.html.HtmlMixin" title="lxml.html.HtmlMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.HtmlMixin</span></code></a></p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.InputElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">InputElement</code><a class="reference internal" href="_modules/lxml/html.html#InputElement"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.InputElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.InputElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">InputElement</span></span><a class="reference internal" href="_modules/lxml/html.html#InputElement"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.InputElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.html.InputMixin" title="lxml.html.InputMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.InputMixin</span></code></a>, <a class="reference internal" href="#lxml.html.HtmlElement" title="lxml.html.HtmlElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.HtmlElement</span></code></a></p>
<p>Represents an <code class="docutils literal notranslate"><span class="pre"><input></span></code> element.</p>
<p>You can get the type with <code class="docutils literal notranslate"><span class="pre">.type</span></code> (which is lower-cased and
<p>Checkboxes and radios have the attribute <code class="docutils literal notranslate"><span class="pre">input.checkable</span> <span class="pre">==</span>
<span class="pre">True</span></code> (for all others it is false) and a boolean attribute
<code class="docutils literal notranslate"><span class="pre">.checked</span></code>.</p>
-<dl class="py method">
-<dt id="lxml.html.InputElement.checkable">
-<em class="property">property </em><code class="sig-name descname">checkable</code><a class="headerlink" href="#lxml.html.InputElement.checkable" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.InputElement.checkable">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">checkable</span></span><a class="headerlink" href="#lxml.html.InputElement.checkable" title="Permalink to this definition"></a></dt>
<dd><p>Boolean: can this element be checked?</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.InputElement.checked">
-<em class="property">property </em><code class="sig-name descname">checked</code><a class="headerlink" href="#lxml.html.InputElement.checked" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.InputElement.checked">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">checked</span></span><a class="headerlink" href="#lxml.html.InputElement.checked" title="Permalink to this definition"></a></dt>
<dd><p>Boolean attribute to get/set the presence of the <code class="docutils literal notranslate"><span class="pre">checked</span></code>
attribute.</p>
<p>You can only use this on checkable input types.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.InputElement.type">
-<em class="property">property </em><code class="sig-name descname">type</code><a class="headerlink" href="#lxml.html.InputElement.type" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.InputElement.type">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">type</span></span><a class="headerlink" href="#lxml.html.InputElement.type" title="Permalink to this definition"></a></dt>
<dd><p>Return the type of this element (using the type attribute).</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.InputElement.value">
-<em class="property">property </em><code class="sig-name descname">value</code><a class="headerlink" href="#lxml.html.InputElement.value" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.InputElement.value">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#lxml.html.InputElement.value" title="Permalink to this definition"></a></dt>
<dd><p>Get/set the value of this element, using the <code class="docutils literal notranslate"><span class="pre">value</span></code> attribute.</p>
<p>Also, if this is a checkbox and it has no value, this defaults
to <code class="docutils literal notranslate"><span class="pre">'on'</span></code>. If it is a checkbox or radio that is not
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.InputGetter">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">InputGetter</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">form</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#InputGetter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.InputGetter" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.InputGetter">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">InputGetter</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">form</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#InputGetter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.InputGetter" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>An accessor that represents all the input fields in a form.</p>
<p>You can get fields by name from this, with
won’t return the same thing as if you get all the names, as
checkboxes and radio elements are returned individually.</p>
<dl class="py method">
-<dt id="lxml.html.InputGetter.items">
-<code class="sig-name descname">items</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#InputGetter.items"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.InputGetter.items" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.InputGetter.items">
+<span class="sig-name descname"><span class="pre">items</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#InputGetter.items"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.InputGetter.items" title="Permalink to this definition"></a></dt>
<dd><p>Returns all fields with their names, similar to dict.items().</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.InputGetter.keys">
-<code class="sig-name descname">keys</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#InputGetter.keys"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.InputGetter.keys" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.InputGetter.keys">
+<span class="sig-name descname"><span class="pre">keys</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#InputGetter.keys"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.InputGetter.keys" title="Permalink to this definition"></a></dt>
<dd><p>Returns all unique field names, in document order.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.InputMixin">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">InputMixin</code><a class="reference internal" href="_modules/lxml/html.html#InputMixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.InputMixin" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.InputMixin">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">InputMixin</span></span><a class="reference internal" href="_modules/lxml/html.html#InputMixin"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.InputMixin" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Mix-in for all input elements (input, select, and textarea)</p>
-<dl class="py method">
-<dt id="lxml.html.InputMixin.name">
-<em class="property">property </em><code class="sig-name descname">name</code><a class="headerlink" href="#lxml.html.InputMixin.name" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.InputMixin.name">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#lxml.html.InputMixin.name" title="Permalink to this definition"></a></dt>
<dd><p>Get/set the name of the element</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.LabelElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">LabelElement</code><a class="reference internal" href="_modules/lxml/html.html#LabelElement"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.LabelElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.LabelElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">LabelElement</span></span><a class="reference internal" href="_modules/lxml/html.html#LabelElement"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.LabelElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.html.HtmlElement" title="lxml.html.HtmlElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.HtmlElement</span></code></a></p>
<p>Represents a <code class="docutils literal notranslate"><span class="pre"><label></span></code> element.</p>
<p>Label elements are linked to other elements with their <code class="docutils literal notranslate"><span class="pre">for</span></code>
attribute. You can access this element with <code class="docutils literal notranslate"><span class="pre">label.for_element</span></code>.</p>
-<dl class="py method">
-<dt id="lxml.html.LabelElement.for_element">
-<em class="property">property </em><code class="sig-name descname">for_element</code><a class="headerlink" href="#lxml.html.LabelElement.for_element" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.LabelElement.for_element">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">for_element</span></span><a class="headerlink" href="#lxml.html.LabelElement.for_element" title="Permalink to this definition"></a></dt>
<dd><p>Get/set the element this label points to. Return None if it
can’t be found.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.MultipleSelectOptions">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">MultipleSelectOptions</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">select</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#MultipleSelectOptions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.MultipleSelectOptions" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.MultipleSelectOptions">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">MultipleSelectOptions</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">select</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#MultipleSelectOptions"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.MultipleSelectOptions" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.html._setmixin.html#lxml.html._setmixin.SetMixin" title="lxml.html._setmixin.SetMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html._setmixin.SetMixin</span></code></a></p>
<p>Represents all the selected options in a <code class="docutils literal notranslate"><span class="pre"><select</span> <span class="pre">multiple></span></code> element.</p>
<p>You can add to this set-like option to select an option, or remove
to unselect the option.</p>
<dl class="py method">
-<dt id="lxml.html.MultipleSelectOptions.add">
-<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">item</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#MultipleSelectOptions.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.MultipleSelectOptions.add" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.MultipleSelectOptions.add">
+<span class="sig-name descname"><span class="pre">add</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">item</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#MultipleSelectOptions.add"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.MultipleSelectOptions.add" title="Permalink to this definition"></a></dt>
<dd><p>Add an element.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.html.MultipleSelectOptions.remove">
-<code class="sig-name descname">remove</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">item</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#MultipleSelectOptions.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.MultipleSelectOptions.remove" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.MultipleSelectOptions.remove">
+<span class="sig-name descname"><span class="pre">remove</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">item</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#MultipleSelectOptions.remove"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.MultipleSelectOptions.remove" title="Permalink to this definition"></a></dt>
<dd><p>Remove an element. If not a member, raise a KeyError.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.html.MultipleSelectOptions._abc_impl">
-<code class="sig-name descname">_abc_impl</code><em class="property"> = <_abc_data object></em><a class="headerlink" href="#lxml.html.MultipleSelectOptions._abc_impl" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.MultipleSelectOptions._abc_impl">
+<span class="sig-name descname"><span class="pre">_abc_impl</span></span><em class="property"> <span class="pre">=</span> <span class="pre"><_abc._abc_data</span> <span class="pre">object></span></em><a class="headerlink" href="#lxml.html.MultipleSelectOptions._abc_impl" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
-<dl class="py method">
-<dt id="lxml.html.MultipleSelectOptions.options">
-<em class="property">property </em><code class="sig-name descname">options</code><a class="headerlink" href="#lxml.html.MultipleSelectOptions.options" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.MultipleSelectOptions.options">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">options</span></span><a class="headerlink" href="#lxml.html.MultipleSelectOptions.options" title="Permalink to this definition"></a></dt>
<dd><p>Iterator of all the <code class="docutils literal notranslate"><span class="pre"><option></span></code> elements.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.RadioGroup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">RadioGroup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">iterable</span><span class="o">=</span><span class="default_value">()</span></em>, <em class="sig-param"><span class="o">/</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#RadioGroup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.RadioGroup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.RadioGroup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">RadioGroup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">iterable</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">()</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">/</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#RadioGroup"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.RadioGroup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p>
<p>This object represents several <code class="docutils literal notranslate"><span class="pre"><input</span> <span class="pre">type=radio></span></code> elements
that have the same name.</p>
<p>You can use this like a list, but also use the property
<code class="docutils literal notranslate"><span class="pre">.value</span></code> to check/uncheck inputs. Also you can use
<code class="docutils literal notranslate"><span class="pre">.value_options</span></code> to get the possible values.</p>
-<dl class="py method">
-<dt id="lxml.html.RadioGroup.value">
-<em class="property">property </em><code class="sig-name descname">value</code><a class="headerlink" href="#lxml.html.RadioGroup.value" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.RadioGroup.value">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#lxml.html.RadioGroup.value" title="Permalink to this definition"></a></dt>
<dd><p>Get/set the value, which checks the radio with that value (and
unchecks any other value).</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.RadioGroup.value_options">
-<em class="property">property </em><code class="sig-name descname">value_options</code><a class="headerlink" href="#lxml.html.RadioGroup.value_options" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.RadioGroup.value_options">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">value_options</span></span><a class="headerlink" href="#lxml.html.RadioGroup.value_options" title="Permalink to this definition"></a></dt>
<dd><p>Returns a list of all the possible values.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.SelectElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">SelectElement</code><a class="reference internal" href="_modules/lxml/html.html#SelectElement"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.SelectElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.SelectElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">SelectElement</span></span><a class="reference internal" href="_modules/lxml/html.html#SelectElement"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.SelectElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.html.InputMixin" title="lxml.html.InputMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.InputMixin</span></code></a>, <a class="reference internal" href="#lxml.html.HtmlElement" title="lxml.html.HtmlElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.HtmlElement</span></code></a></p>
<p><code class="docutils literal notranslate"><span class="pre"><select></span></code> element. You can get the name with <code class="docutils literal notranslate"><span class="pre">.name</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">.value</span></code> will be the value of the selected option, unless this
gives the possible values.</p>
<p>The boolean attribute <code class="docutils literal notranslate"><span class="pre">.multiple</span></code> shows if this is a
multi-select.</p>
-<dl class="py method">
-<dt id="lxml.html.SelectElement.multiple">
-<em class="property">property </em><code class="sig-name descname">multiple</code><a class="headerlink" href="#lxml.html.SelectElement.multiple" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.SelectElement.multiple">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">multiple</span></span><a class="headerlink" href="#lxml.html.SelectElement.multiple" title="Permalink to this definition"></a></dt>
<dd><p>Boolean attribute: is there a <code class="docutils literal notranslate"><span class="pre">multiple</span></code> attribute on this element.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.SelectElement.value">
-<em class="property">property </em><code class="sig-name descname">value</code><a class="headerlink" href="#lxml.html.SelectElement.value" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.SelectElement.value">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#lxml.html.SelectElement.value" title="Permalink to this definition"></a></dt>
<dd><p>Get/set the value of this select (the selected option).</p>
<p>If this is a multi-select, this is a set-like object that
represents all the selected options.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.html.SelectElement.value_options">
-<em class="property">property </em><code class="sig-name descname">value_options</code><a class="headerlink" href="#lxml.html.SelectElement.value_options" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.SelectElement.value_options">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">value_options</span></span><a class="headerlink" href="#lxml.html.SelectElement.value_options" title="Permalink to this definition"></a></dt>
<dd><p>All the possible values this select can have (the <code class="docutils literal notranslate"><span class="pre">value</span></code>
attribute of all the <code class="docutils literal notranslate"><span class="pre"><option></span></code> elements.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.TextareaElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">TextareaElement</code><a class="reference internal" href="_modules/lxml/html.html#TextareaElement"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.TextareaElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.TextareaElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">TextareaElement</span></span><a class="reference internal" href="_modules/lxml/html.html#TextareaElement"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.TextareaElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.html.InputMixin" title="lxml.html.InputMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.InputMixin</span></code></a>, <a class="reference internal" href="#lxml.html.HtmlElement" title="lxml.html.HtmlElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.html.HtmlElement</span></code></a></p>
<p><code class="docutils literal notranslate"><span class="pre"><textarea></span></code> element. You can get the name with <code class="docutils literal notranslate"><span class="pre">.name</span></code> and
get/set the value with <code class="docutils literal notranslate"><span class="pre">.value</span></code></p>
-<dl class="py method">
-<dt id="lxml.html.TextareaElement.value">
-<em class="property">property </em><code class="sig-name descname">value</code><a class="headerlink" href="#lxml.html.TextareaElement.value" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.html.TextareaElement.value">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#lxml.html.TextareaElement.value" title="Permalink to this definition"></a></dt>
<dd><p>Get/set the value (which is the contents of this element)</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html.XHTMLParser">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">XHTMLParser</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#XHTMLParser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.XHTMLParser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.XHTMLParser">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">XHTMLParser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#XHTMLParser"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.XHTMLParser" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.XMLParser" title="lxml.etree.XMLParser"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.XMLParser</span></code></a></p>
<p>An XML parser that is configured to return lxml.html Element
objects.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.html._MethodFunc">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_MethodFunc</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">copy=False</em>, <em class="sig-param">source_class=<class 'lxml.html.HtmlMixin'></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_MethodFunc"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._MethodFunc" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._MethodFunc">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_MethodFunc</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">name</span></em>, <em class="sig-param"><span class="pre">copy=False</span></em>, <em class="sig-param"><span class="pre">source_class=<class</span> <span class="pre">'lxml.html.HtmlMixin'></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_MethodFunc"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._MethodFunc" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>An object that represents a method on an element as a function;
the function takes either an element or an HTML string. It
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.Element">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">Element</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Element"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.Element" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.Element">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">Element</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#Element"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.Element" title="Permalink to this definition"></a></dt>
<dd><p>Create a new HTML Element.</p>
<p>This can also be used for XHTML documents.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.__bytes_replace_meta_content_type">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">__bytes_replace_meta_content_type</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">repl</span></em>, <em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">count</span><span class="o">=</span><span class="default_value">0</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.__bytes_replace_meta_content_type" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.__bytes_replace_meta_content_type">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">__bytes_replace_meta_content_type</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">repl</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">count</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.__bytes_replace_meta_content_type" title="Permalink to this definition"></a></dt>
<dd><p>Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.__fix_docstring">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">__fix_docstring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">s</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#__fix_docstring"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.__fix_docstring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.__fix_docstring">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">__fix_docstring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">s</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#__fix_docstring"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.__fix_docstring" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.__str_replace_meta_content_type">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">__str_replace_meta_content_type</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">repl</span></em>, <em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">count</span><span class="o">=</span><span class="default_value">0</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.__str_replace_meta_content_type" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.__str_replace_meta_content_type">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">__str_replace_meta_content_type</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">repl</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">count</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html.__str_replace_meta_content_type" title="Permalink to this definition"></a></dt>
<dd><p>Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html._contains_block_level_tag">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_contains_block_level_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_contains_block_level_tag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._contains_block_level_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._contains_block_level_tag">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_contains_block_level_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_contains_block_level_tag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._contains_block_level_tag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html._element_name">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_element_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">el</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_element_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._element_name" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._element_name">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_element_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">el</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_element_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._element_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html._iter_css_imports">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_iter_css_imports</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">pos</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">endpos</span><span class="o">=</span><span class="default_value">9223372036854775807</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._iter_css_imports" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._iter_css_imports">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_iter_css_imports</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">9223372036854775807</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._iter_css_imports" title="Permalink to this definition"></a></dt>
<dd><p>Return an iterator over all non-overlapping matches for the RE pattern in string.</p>
<p>For each match, the iterator returns a match object.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html._iter_css_urls">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_iter_css_urls</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">pos</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">endpos</span><span class="o">=</span><span class="default_value">9223372036854775807</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._iter_css_urls" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._iter_css_urls">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_iter_css_urls</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">9223372036854775807</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._iter_css_urls" title="Permalink to this definition"></a></dt>
<dd><p>Return an iterator over all non-overlapping matches for the RE pattern in string.</p>
<p>For each match, the iterator returns a match object.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html._looks_like_full_html_bytes">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_looks_like_full_html_bytes</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">pos</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">endpos</span><span class="o">=</span><span class="default_value">9223372036854775807</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._looks_like_full_html_bytes" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._looks_like_full_html_bytes">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_looks_like_full_html_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">9223372036854775807</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._looks_like_full_html_bytes" title="Permalink to this definition"></a></dt>
<dd><p>Matches zero or more characters at the beginning of the string.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html._looks_like_full_html_unicode">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_looks_like_full_html_unicode</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">pos</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">endpos</span><span class="o">=</span><span class="default_value">9223372036854775807</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._looks_like_full_html_unicode" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._looks_like_full_html_unicode">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_looks_like_full_html_unicode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">9223372036854775807</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._looks_like_full_html_unicode" title="Permalink to this definition"></a></dt>
<dd><p>Matches zero or more characters at the beginning of the string.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html._nons">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_nons</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tag</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_nons"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._nons" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._nons">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_nons</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tag</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_nons"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._nons" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html._parse_meta_refresh_url">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_parse_meta_refresh_url</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em>, <em class="sig-param"><span class="n">pos</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">endpos</span><span class="o">=</span><span class="default_value">9223372036854775807</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._parse_meta_refresh_url" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._parse_meta_refresh_url">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_parse_meta_refresh_url</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpos</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">9223372036854775807</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.html._parse_meta_refresh_url" title="Permalink to this definition"></a></dt>
<dd><p>Scan through string looking for a match, and return a corresponding match object instance.</p>
<p>Return None if no position in the string matches.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html._transform_result">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_transform_result</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">typ</span></em>, <em class="sig-param"><span class="n">result</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_transform_result"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._transform_result" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._transform_result">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_transform_result</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">typ</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">result</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_transform_result"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._transform_result" title="Permalink to this definition"></a></dt>
<dd><p>Convert the result back into the input type.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html._unquote_match">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">_unquote_match</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">s</span></em>, <em class="sig-param"><span class="n">pos</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_unquote_match"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html._unquote_match" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html._unquote_match">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">_unquote_match</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">s</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pos</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#_unquote_match"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html._unquote_match" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.document_fromstring">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">document_fromstring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">ensure_head_body</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#document_fromstring"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.document_fromstring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.document_fromstring">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">document_fromstring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ensure_head_body</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#document_fromstring"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.document_fromstring" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.fragment_fromstring">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">fragment_fromstring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="n">create_parent</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#fragment_fromstring"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.fragment_fromstring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.fragment_fromstring">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">fragment_fromstring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">create_parent</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#fragment_fromstring"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.fragment_fromstring" title="Permalink to this definition"></a></dt>
<dd><p>Parses a single HTML element; it is an error if there is more than
one element, or if anything but whitespace precedes or follows the
element.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.fragments_fromstring">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">fragments_fromstring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="n">no_leading_text</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#fragments_fromstring"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.fragments_fromstring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.fragments_fromstring">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">fragments_fromstring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_leading_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#fragments_fromstring"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.fragments_fromstring" title="Permalink to this definition"></a></dt>
<dd><p>Parses several HTML elements, returning a list of elements.</p>
<p>The first item in the list may be a string.
If no_leading_text is true, then it will be an error if there is
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.fromstring">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">fromstring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#fromstring"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.fromstring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.fromstring">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">fromstring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#fromstring"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.fromstring" title="Permalink to this definition"></a></dt>
<dd><p>Parse the html, returning a single element/document.</p>
<p>This tries to minimally parse the chunk of text, without knowing if it
is a fragment or a document.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.html_to_xhtml">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">html_to_xhtml</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">html</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#html_to_xhtml"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.html_to_xhtml" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.html_to_xhtml">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">html_to_xhtml</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">html</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#html_to_xhtml"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.html_to_xhtml" title="Permalink to this definition"></a></dt>
<dd><p>Convert all tags in an HTML tree to XHTML by moving them to the
XHTML namespace.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.open_http_urllib">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">open_http_urllib</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">method</span></em>, <em class="sig-param"><span class="n">url</span></em>, <em class="sig-param"><span class="n">values</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#open_http_urllib"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.open_http_urllib" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.open_http_urllib">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">open_http_urllib</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">method</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">url</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#open_http_urllib"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.open_http_urllib" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.html.open_in_browser">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">open_in_browser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">doc</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#open_in_browser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.open_in_browser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.open_in_browser">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">open_in_browser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">doc</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#open_in_browser"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.open_in_browser" title="Permalink to this definition"></a></dt>
<dd><p>Open the HTML document in a web browser, saving it to a temporary
file to open it. Note that this does not delete the file after
use. This is mainly meant for debugging.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.parse">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">parse</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">filename_or_url</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#parse"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.parse" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.parse">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">parse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename_or_url</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#parse"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.parse" title="Permalink to this definition"></a></dt>
<dd><p>Parse a filename, URL, or file-like object into an HTML document
tree. Note: this returns a tree, not an element. Use
<code class="docutils literal notranslate"><span class="pre">parse(...).getroot()</span></code> to get the document root.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.submit_form">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">submit_form</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">form</span></em>, <em class="sig-param"><span class="n">extra_values</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">open_http</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#submit_form"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.submit_form" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.submit_form">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">submit_form</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">form</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extra_values</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">open_http</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#submit_form"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.submit_form" title="Permalink to this definition"></a></dt>
<dd><p>Helper function to submit a form. Returns a file-like object, as from
<code class="docutils literal notranslate"><span class="pre">urllib.urlopen()</span></code>. This object also has a <code class="docutils literal notranslate"><span class="pre">.geturl()</span></code> function,
which shows the URL if there were any redirects.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.tostring">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">tostring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">doc</span></em>, <em class="sig-param"><span class="n">pretty_print</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">include_meta_content_type</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">encoding</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">method</span><span class="o">=</span><span class="default_value">'html'</span></em>, <em class="sig-param"><span class="n">with_tail</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">doctype</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#tostring"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.tostring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.tostring">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">tostring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">doc</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pretty_print</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">include_meta_content_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">method</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'html'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_tail</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">doctype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#tostring"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.tostring" title="Permalink to this definition"></a></dt>
<dd><p>Return an HTML string representation of the document.</p>
<p>Note: if include_meta_content_type is true this will create a
<code class="docutils literal notranslate"><span class="pre"><meta</span> <span class="pre">http-equiv="Content-Type"</span> <span class="pre">...></span></code> tag in the head;
</dd></dl>
<dl class="py function">
-<dt id="lxml.html.xhtml_to_html">
-<code class="sig-prename descclassname">lxml.html.</code><code class="sig-name descname">xhtml_to_html</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">xhtml</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#xhtml_to_html"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.html.xhtml_to_html" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.html.xhtml_to_html">
+<span class="sig-prename descclassname"><span class="pre">lxml.html.</span></span><span class="sig-name descname"><span class="pre">xhtml_to_html</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">xhtml</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/html.html#xhtml_to_html"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.html.xhtml_to_html" title="Permalink to this definition"></a></dt>
<dd><p>Convert all tags in an XHTML tree to HTML by removing their
XHTML namespace.</p>
</dd></dl>
-</div>
-</div>
+</section>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html.ElementSoup.html" class="btn btn-neutral float-right" title="lxml.html.ElementSoup module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html" class="btn btn-neutral float-left" title="lxml package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html" class="btn btn-neutral float-left" title="lxml package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html.ElementSoup.html" class="btn btn-neutral float-right" title="lxml.html.ElementSoup module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html.html5parser module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html.html5parser module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.html.soupparser module" href="lxml.html.soupparser.html" />
<link rel="prev" title="lxml.html.formfill module" href="lxml.html.formfill.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul class="current">
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li><a href="lxml.html.html">lxml.html package</a> »</li>
-
<li>lxml.html.html5parser module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html.html5parser.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="lxml-html-html5parser-module">
-<h1>lxml.html.html5parser module<a class="headerlink" href="#lxml-html-html5parser-module" title="Permalink to this headline">¶</a></h1>
-</div>
+
+ <section id="lxml-html-html5parser-module">
+<h1>lxml.html.html5parser module<a class="headerlink" href="#lxml-html-html5parser-module" title="Permalink to this headline"></a></h1>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.html.soupparser.html" class="btn btn-neutral float-right" title="lxml.html.soupparser module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html.formfill.html" class="btn btn-neutral float-left" title="lxml.html.formfill module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html.formfill.html" class="btn btn-neutral float-left" title="lxml.html.formfill module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.html.soupparser.html" class="btn btn-neutral float-right" title="lxml.html.soupparser module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.html.soupparser module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.html.soupparser module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.isoschematron package" href="lxml.isoschematron.html" />
<link rel="prev" title="lxml.html.html5parser module" href="lxml.html.html5parser.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul class="current">
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li><a href="lxml.html.html">lxml.html package</a> »</li>
-
<li>lxml.html.soupparser module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.html.soupparser.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="lxml-html-soupparser-module">
-<h1>lxml.html.soupparser module<a class="headerlink" href="#lxml-html-soupparser-module" title="Permalink to this headline">¶</a></h1>
-</div>
+
+ <section id="lxml-html-soupparser-module">
+<h1>lxml.html.soupparser module<a class="headerlink" href="#lxml-html-soupparser-module" title="Permalink to this headline"></a></h1>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.isoschematron.html" class="btn btn-neutral float-right" title="lxml.isoschematron package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html.html5parser.html" class="btn btn-neutral float-left" title="lxml.html.html5parser module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html.html5parser.html" class="btn btn-neutral float-left" title="lxml.html.html5parser module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.isoschematron.html" class="btn btn-neutral float-right" title="lxml.isoschematron package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.isoschematron package — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.isoschematron package — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.ElementInclude module" href="lxml.ElementInclude.html" />
<link rel="prev" title="lxml.html.soupparser module" href="lxml.html.soupparser.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li>lxml.isoschematron package</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.isoschematron.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="lxml-isoschematron-package">
-<h1>lxml.isoschematron package<a class="headerlink" href="#lxml-isoschematron-package" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="module-lxml.isoschematron">
-<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-lxml.isoschematron" title="Permalink to this headline">¶</a></h2>
+
+ <section id="lxml-isoschematron-package">
+<h1>lxml.isoschematron package<a class="headerlink" href="#lxml-isoschematron-package" title="Permalink to this headline"></a></h1>
+<section id="module-lxml.isoschematron">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-lxml.isoschematron" title="Permalink to this headline"></a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">lxml.isoschematron</span></code> package implements ISO Schematron support on top
of the pure-xslt ‘skeleton’ implementation.</p>
<dl class="py class">
-<dt id="lxml.isoschematron.Schematron">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.isoschematron.</code><code class="sig-name descname">Schematron</code><span class="sig-paren">(</span><em class="sig-param">etree=None</em>, <em class="sig-param">file=None</em>, <em class="sig-param">include=True</em>, <em class="sig-param">expand=True</em>, <em class="sig-param">include_params={}</em>, <em class="sig-param">expand_params={}</em>, <em class="sig-param">compile_params={}</em>, <em class="sig-param">store_schematron=False</em>, <em class="sig-param">store_xslt=False</em>, <em class="sig-param">store_report=False</em>, <em class="sig-param">phase=None</em>, <em class="sig-param">error_finder=//svrl:failed-assert</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/isoschematron.html#Schematron"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.isoschematron.Schematron" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.isoschematron.</span></span><span class="sig-name descname"><span class="pre">Schematron</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">etree=None</span></em>, <em class="sig-param"><span class="pre">file=None</span></em>, <em class="sig-param"><span class="pre">include=True</span></em>, <em class="sig-param"><span class="pre">expand=True</span></em>, <em class="sig-param"><span class="pre">include_params={}</span></em>, <em class="sig-param"><span class="pre">expand_params={}</span></em>, <em class="sig-param"><span class="pre">compile_params={}</span></em>, <em class="sig-param"><span class="pre">store_schematron=False</span></em>, <em class="sig-param"><span class="pre">store_xslt=False</span></em>, <em class="sig-param"><span class="pre">store_report=False</span></em>, <em class="sig-param"><span class="pre">phase=None</span></em>, <em class="sig-param"><span class="pre">error_finder=//svrl:failed-assert</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/isoschematron.html#Schematron"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.isoschematron.Schematron" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree._Validator" title="lxml.etree._Validator"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree._Validator</span></code></a></p>
<p>An ISO Schematron validator.</p>
<p>Pass a root Element or an ElementTree to turn it into a validator.
</pre></div>
</div>
<dl class="py method">
-<dt id="lxml.isoschematron.Schematron._extract">
-<code class="sig-name descname">_extract</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/isoschematron.html#Schematron._extract"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.isoschematron.Schematron._extract" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron._extract">
+<span class="sig-name descname"><span class="pre">_extract</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/isoschematron.html#Schematron._extract"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.isoschematron.Schematron._extract" title="Permalink to this definition"></a></dt>
<dd><p>Extract embedded schematron schema from non-schematron host schema.
This method will only be called by __init__ if the given schema document
is not a schematron schema by itself.
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron.ASSERTS_AND_REPORTS">
-<code class="sig-name descname">ASSERTS_AND_REPORTS</code><em class="property"> = //svrl:failed-assert | //svrl:successful-report</em><a class="headerlink" href="#lxml.isoschematron.Schematron.ASSERTS_AND_REPORTS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron.ASSERTS_AND_REPORTS">
+<span class="sig-name descname"><span class="pre">ASSERTS_AND_REPORTS</span></span><em class="property"> <span class="pre">=</span> <span class="pre">//svrl:failed-assert</span> <span class="pre">|</span> <span class="pre">//svrl:successful-report</span></em><a class="headerlink" href="#lxml.isoschematron.Schematron.ASSERTS_AND_REPORTS" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron.ASSERTS_ONLY">
-<code class="sig-name descname">ASSERTS_ONLY</code><em class="property"> = //svrl:failed-assert</em><a class="headerlink" href="#lxml.isoschematron.Schematron.ASSERTS_ONLY" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron.ASSERTS_ONLY">
+<span class="sig-name descname"><span class="pre">ASSERTS_ONLY</span></span><em class="property"> <span class="pre">=</span> <span class="pre">//svrl:failed-assert</span></em><a class="headerlink" href="#lxml.isoschematron.Schematron.ASSERTS_ONLY" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron._compile">
-<code class="sig-name descname">_compile</code><em class="property"> = <lxml.etree.XSLT object></em><a class="headerlink" href="#lxml.isoschematron.Schematron._compile" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron._compile">
+<span class="sig-name descname"><span class="pre">_compile</span></span><em class="property"> <span class="pre">=</span> <span class="pre"><lxml.etree.XSLT</span> <span class="pre">object></span></em><a class="headerlink" href="#lxml.isoschematron.Schematron._compile" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron._domain">
-<code class="sig-name descname">_domain</code><em class="property"> = 28</em><a class="headerlink" href="#lxml.isoschematron.Schematron._domain" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron._domain">
+<span class="sig-name descname"><span class="pre">_domain</span></span><em class="property"> <span class="pre">=</span> <span class="pre">28</span></em><a class="headerlink" href="#lxml.isoschematron.Schematron._domain" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron._error_type">
-<code class="sig-name descname">_error_type</code><em class="property"> = 4000</em><a class="headerlink" href="#lxml.isoschematron.Schematron._error_type" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron._error_type">
+<span class="sig-name descname"><span class="pre">_error_type</span></span><em class="property"> <span class="pre">=</span> <span class="pre">4000</span></em><a class="headerlink" href="#lxml.isoschematron.Schematron._error_type" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron._expand">
-<code class="sig-name descname">_expand</code><em class="property"> = <lxml.etree.XSLT object></em><a class="headerlink" href="#lxml.isoschematron.Schematron._expand" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron._expand">
+<span class="sig-name descname"><span class="pre">_expand</span></span><em class="property"> <span class="pre">=</span> <span class="pre"><lxml.etree.XSLT</span> <span class="pre">object></span></em><a class="headerlink" href="#lxml.isoschematron.Schematron._expand" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron._extract_rng">
-<code class="sig-name descname">_extract_rng</code><em class="property"> = <lxml.etree.XSLT object></em><a class="headerlink" href="#lxml.isoschematron.Schematron._extract_rng" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron._extract_rng">
+<span class="sig-name descname"><span class="pre">_extract_rng</span></span><em class="property"> <span class="pre">=</span> <span class="pre"><lxml.etree.XSLT</span> <span class="pre">object></span></em><a class="headerlink" href="#lxml.isoschematron.Schematron._extract_rng" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron._extract_xsd">
-<code class="sig-name descname">_extract_xsd</code><em class="property"> = <lxml.etree.XSLT object></em><a class="headerlink" href="#lxml.isoschematron.Schematron._extract_xsd" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron._extract_xsd">
+<span class="sig-name descname"><span class="pre">_extract_xsd</span></span><em class="property"> <span class="pre">=</span> <span class="pre"><lxml.etree.XSLT</span> <span class="pre">object></span></em><a class="headerlink" href="#lxml.isoschematron.Schematron._extract_xsd" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron._include">
-<code class="sig-name descname">_include</code><em class="property"> = <lxml.etree.XSLT object></em><a class="headerlink" href="#lxml.isoschematron.Schematron._include" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron._include">
+<span class="sig-name descname"><span class="pre">_include</span></span><em class="property"> <span class="pre">=</span> <span class="pre"><lxml.etree.XSLT</span> <span class="pre">object></span></em><a class="headerlink" href="#lxml.isoschematron.Schematron._include" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron._level">
-<code class="sig-name descname">_level</code><em class="property"> = 2</em><a class="headerlink" href="#lxml.isoschematron.Schematron._level" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron._level">
+<span class="sig-name descname"><span class="pre">_level</span></span><em class="property"> <span class="pre">=</span> <span class="pre">2</span></em><a class="headerlink" href="#lxml.isoschematron.Schematron._level" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.isoschematron.Schematron._validation_errors">
-<code class="sig-name descname">_validation_errors</code><em class="property"> = //svrl:failed-assert</em><a class="headerlink" href="#lxml.isoschematron.Schematron._validation_errors" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron._validation_errors">
+<span class="sig-name descname"><span class="pre">_validation_errors</span></span><em class="property"> <span class="pre">=</span> <span class="pre">//svrl:failed-assert</span></em><a class="headerlink" href="#lxml.isoschematron.Schematron._validation_errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
-<dl class="py method">
-<dt id="lxml.isoschematron.Schematron.schematron">
-<em class="property">property </em><code class="sig-name descname">schematron</code><a class="headerlink" href="#lxml.isoschematron.Schematron.schematron" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron.schematron">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">schematron</span></span><a class="headerlink" href="#lxml.isoschematron.Schematron.schematron" title="Permalink to this definition"></a></dt>
<dd><p>ISO-schematron schema document (None if object has been initialized
with store_schematron=False).</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.isoschematron.Schematron.validation_report">
-<em class="property">property </em><code class="sig-name descname">validation_report</code><a class="headerlink" href="#lxml.isoschematron.Schematron.validation_report" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron.validation_report">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">validation_report</span></span><a class="headerlink" href="#lxml.isoschematron.Schematron.validation_report" title="Permalink to this definition"></a></dt>
<dd><p>ISO-schematron validation result report (None if result-storing has
been turned off).</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.isoschematron.Schematron.validator_xslt">
-<em class="property">property </em><code class="sig-name descname">validator_xslt</code><a class="headerlink" href="#lxml.isoschematron.Schematron.validator_xslt" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.isoschematron.Schematron.validator_xslt">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">validator_xslt</span></span><a class="headerlink" href="#lxml.isoschematron.Schematron.validator_xslt" title="Permalink to this definition"></a></dt>
<dd><p>ISO-schematron skeleton implementation XSLT validator document (None
if object has been initialized with store_xslt=False).</p>
</dd></dl>
</dd></dl>
<dl class="py function">
-<dt id="lxml.isoschematron._stylesheet_param_dict">
-<code class="sig-prename descclassname">lxml.isoschematron.</code><code class="sig-name descname">_stylesheet_param_dict</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">paramsDict</span></em>, <em class="sig-param"><span class="n">kwargsDict</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/isoschematron.html#_stylesheet_param_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.isoschematron._stylesheet_param_dict" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron._stylesheet_param_dict">
+<span class="sig-prename descclassname"><span class="pre">lxml.isoschematron.</span></span><span class="sig-name descname"><span class="pre">_stylesheet_param_dict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">paramsDict</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">kwargsDict</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/isoschematron.html#_stylesheet_param_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.isoschematron._stylesheet_param_dict" title="Permalink to this definition"></a></dt>
<dd><p>Return a copy of paramsDict, updated with kwargsDict entries, wrapped as
stylesheet arguments.
kwargsDict entries with a value of None are ignored.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.isoschematron.stylesheet_params">
-<code class="sig-prename descclassname">lxml.isoschematron.</code><code class="sig-name descname">stylesheet_params</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/isoschematron.html#stylesheet_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#lxml.isoschematron.stylesheet_params" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.isoschematron.stylesheet_params">
+<span class="sig-prename descclassname"><span class="pre">lxml.isoschematron.</span></span><span class="sig-name descname"><span class="pre">stylesheet_params</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/lxml/isoschematron.html#stylesheet_params"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lxml.isoschematron.stylesheet_params" title="Permalink to this definition"></a></dt>
<dd><p>Convert keyword args to a dictionary of stylesheet parameters.
XSL stylesheet parameters must be XPath expressions, i.e.:</p>
<ul class="simple">
Else convert arg to string.</p>
</dd></dl>
-</div>
-</div>
+</section>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.ElementInclude.html" class="btn btn-neutral float-right" title="lxml.ElementInclude module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.html.soupparser.html" class="btn btn-neutral float-left" title="lxml.html.soupparser module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.html.soupparser.html" class="btn btn-neutral float-left" title="lxml.html.soupparser module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.ElementInclude.html" class="btn btn-neutral float-right" title="lxml.ElementInclude module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.objectify module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.objectify module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="lxml.sax module" href="lxml.sax.html" />
<link rel="prev" title="lxml.etree module" href="lxml.etree.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li>lxml.objectify module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.objectify.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.objectify">
-<span id="lxml-objectify-module"></span><h1>lxml.objectify module<a class="headerlink" href="#module-lxml.objectify" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.objectify">
+<span id="lxml-objectify-module"></span><h1>lxml.objectify module<a class="headerlink" href="#module-lxml.objectify" title="Permalink to this headline"></a></h1>
<p>The <code class="docutils literal notranslate"><span class="pre">lxml.objectify</span></code> module implements a Python object API for XML.
It is based on <cite>lxml.etree</cite>.</p>
<dl class="py class">
-<dt id="lxml.objectify.BoolElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">BoolElement</code><a class="headerlink" href="#lxml.objectify.BoolElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.BoolElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">BoolElement</span></span><a class="headerlink" href="#lxml.objectify.BoolElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.objectify.IntElement" title="lxml.objectify.IntElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.objectify.IntElement</span></code></a></p>
<p>Boolean type base on string values: ‘true’ or ‘false’.</p>
<p>Note that this inherits from IntElement to mimic the behaviour of
Python’s bool type.</p>
<dl class="py method">
-<dt id="lxml.objectify.BoolElement._init">
-<code class="sig-name descname">_init</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.BoolElement._init" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.BoolElement._init">
+<span class="sig-name descname"><span class="pre">_init</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.BoolElement._init" title="Permalink to this definition"></a></dt>
<dd><p>Called after object initialisation. Custom subclasses may override
this if they recursively call _init() in the superclasses.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.objectify.BoolElement.pyval">
-<code class="sig-name descname">pyval</code><a class="headerlink" href="#lxml.objectify.BoolElement.pyval" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.BoolElement.pyval">
+<span class="sig-name descname"><span class="pre">pyval</span></span><a class="headerlink" href="#lxml.objectify.BoolElement.pyval" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.ElementMaker">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">ElementMaker</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">namespace</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">nsmap</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">annotate</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">makeelement</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ElementMaker" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ElementMaker">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">ElementMaker</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">namespace</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nsmap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">annotate</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">makeelement</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ElementMaker" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>An ElementMaker that can be used for constructing trees.</p>
<p>Example:</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.FloatElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">FloatElement</code><a class="headerlink" href="#lxml.objectify.FloatElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.FloatElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">FloatElement</span></span><a class="headerlink" href="#lxml.objectify.FloatElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.objectify.NumberElement" title="lxml.objectify.NumberElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.objectify.NumberElement</span></code></a></p>
<dl class="py method">
-<dt id="lxml.objectify.FloatElement._init">
-<code class="sig-name descname">_init</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.FloatElement._init" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.FloatElement._init">
+<span class="sig-name descname"><span class="pre">_init</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.FloatElement._init" title="Permalink to this definition"></a></dt>
<dd><p>Called after object initialisation. Custom subclasses may override
this if they recursively call _init() in the superclasses.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.IntElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">IntElement</code><a class="headerlink" href="#lxml.objectify.IntElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.IntElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">IntElement</span></span><a class="headerlink" href="#lxml.objectify.IntElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.objectify.NumberElement" title="lxml.objectify.NumberElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.objectify.NumberElement</span></code></a></p>
<dl class="py method">
-<dt id="lxml.objectify.IntElement._init">
-<code class="sig-name descname">_init</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.IntElement._init" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.IntElement._init">
+<span class="sig-name descname"><span class="pre">_init</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.IntElement._init" title="Permalink to this definition"></a></dt>
<dd><p>Called after object initialisation. Custom subclasses may override
this if they recursively call _init() in the superclasses.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.LongElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">LongElement</code><a class="headerlink" href="#lxml.objectify.LongElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.LongElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">LongElement</span></span><a class="headerlink" href="#lxml.objectify.LongElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.objectify.NumberElement" title="lxml.objectify.NumberElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.objectify.NumberElement</span></code></a></p>
<dl class="py method">
-<dt id="lxml.objectify.LongElement._init">
-<code class="sig-name descname">_init</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.LongElement._init" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.LongElement._init">
+<span class="sig-name descname"><span class="pre">_init</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.LongElement._init" title="Permalink to this definition"></a></dt>
<dd><p>Called after object initialisation. Custom subclasses may override
this if they recursively call _init() in the superclasses.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.NoneElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">NoneElement</code><a class="headerlink" href="#lxml.objectify.NoneElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.NoneElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">NoneElement</span></span><a class="headerlink" href="#lxml.objectify.NoneElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.objectify.ObjectifiedDataElement" title="lxml.objectify.ObjectifiedDataElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.objectify.ObjectifiedDataElement</span></code></a></p>
<dl class="py attribute">
-<dt id="lxml.objectify.NoneElement.pyval">
-<code class="sig-name descname">pyval</code><a class="headerlink" href="#lxml.objectify.NoneElement.pyval" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.NoneElement.pyval">
+<span class="sig-name descname"><span class="pre">pyval</span></span><a class="headerlink" href="#lxml.objectify.NoneElement.pyval" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.NumberElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">NumberElement</code><a class="headerlink" href="#lxml.objectify.NumberElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.NumberElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">NumberElement</span></span><a class="headerlink" href="#lxml.objectify.NumberElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.objectify.ObjectifiedDataElement" title="lxml.objectify.ObjectifiedDataElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.objectify.ObjectifiedDataElement</span></code></a></p>
<dl class="py method">
-<dt id="lxml.objectify.NumberElement._setValueParser">
-<code class="sig-name descname">_setValueParser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">function</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.NumberElement._setValueParser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.NumberElement._setValueParser">
+<span class="sig-name descname"><span class="pre">_setValueParser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">function</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.NumberElement._setValueParser" title="Permalink to this definition"></a></dt>
<dd><p>Set the function that parses the Python value from a string.</p>
<p>Do not use this unless you know what you are doing.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.objectify.NumberElement.pyval">
-<code class="sig-name descname">pyval</code><a class="headerlink" href="#lxml.objectify.NumberElement.pyval" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.NumberElement.pyval">
+<span class="sig-name descname"><span class="pre">pyval</span></span><a class="headerlink" href="#lxml.objectify.NumberElement.pyval" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.ObjectPath">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">ObjectPath</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">path</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectPath" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectPath">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">ObjectPath</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectPath" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Immutable object that represents a compiled object path.</p>
<p>Example for a path: ‘root.child[1].{other}child[25]’</p>
<dl class="py method">
-<dt id="lxml.objectify.ObjectPath.addattr">
-<code class="sig-name descname">addattr</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">root</span></em>, <em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectPath.addattr" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectPath.addattr">
+<span class="sig-name descname"><span class="pre">addattr</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">root</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectPath.addattr" title="Permalink to this definition"></a></dt>
<dd><p>Append a value to the target element in a subtree.</p>
<p>If any of the children on the path does not exist, it is created.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.objectify.ObjectPath.hasattr">
-<code class="sig-name descname">hasattr</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">root</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectPath.hasattr" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectPath.hasattr">
+<span class="sig-name descname"><span class="pre">hasattr</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">root</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectPath.hasattr" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.objectify.ObjectPath.setattr">
-<code class="sig-name descname">setattr</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">root</span></em>, <em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectPath.setattr" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectPath.setattr">
+<span class="sig-name descname"><span class="pre">setattr</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">root</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectPath.setattr" title="Permalink to this definition"></a></dt>
<dd><p>Set the value of the target element in a subtree.</p>
<p>If any of the children on the path does not exist, it is created.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.objectify.ObjectPath.find">
-<code class="sig-name descname">find</code><a class="headerlink" href="#lxml.objectify.ObjectPath.find" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectPath.find">
+<span class="sig-name descname"><span class="pre">find</span></span><a class="headerlink" href="#lxml.objectify.ObjectPath.find" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.ObjectifiedDataElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">ObjectifiedDataElement</code><a class="headerlink" href="#lxml.objectify.ObjectifiedDataElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectifiedDataElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">ObjectifiedDataElement</span></span><a class="headerlink" href="#lxml.objectify.ObjectifiedDataElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.objectify.ObjectifiedElement" title="lxml.objectify.ObjectifiedElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.objectify.ObjectifiedElement</span></code></a></p>
<p>This is the base class for all data type Elements. Subclasses should
override the ‘pyval’ property and possibly the __str__ method.</p>
<dl class="py method">
-<dt id="lxml.objectify.ObjectifiedDataElement._setText">
-<code class="sig-name descname">_setText</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">s</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifiedDataElement._setText" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectifiedDataElement._setText">
+<span class="sig-name descname"><span class="pre">_setText</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">s</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifiedDataElement._setText" title="Permalink to this definition"></a></dt>
<dd><p>For use in subclasses only. Don’t use unless you know what you are
doing.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.objectify.ObjectifiedDataElement.pyval">
-<code class="sig-name descname">pyval</code><a class="headerlink" href="#lxml.objectify.ObjectifiedDataElement.pyval" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectifiedDataElement.pyval">
+<span class="sig-name descname"><span class="pre">pyval</span></span><a class="headerlink" href="#lxml.objectify.ObjectifiedDataElement.pyval" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.ObjectifiedElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">ObjectifiedElement</code><a class="headerlink" href="#lxml.objectify.ObjectifiedElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectifiedElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">ObjectifiedElement</span></span><a class="headerlink" href="#lxml.objectify.ObjectifiedElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.ElementBase" title="lxml.etree.ElementBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.ElementBase</span></code></a></p>
<p>Main XML Element class.</p>
<p>Element children are accessed as object attributes. Multiple children
<p>Note that you cannot (and must not) instantiate this class or its
subclasses.</p>
<dl class="py method">
-<dt id="lxml.objectify.ObjectifiedElement.addattr">
-<code class="sig-name descname">addattr</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tag</span></em>, <em class="sig-param"><span class="n">value</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifiedElement.addattr" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectifiedElement.addattr">
+<span class="sig-name descname"><span class="pre">addattr</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifiedElement.addattr" title="Permalink to this definition"></a></dt>
<dd><p>Add a child value to the element.</p>
<p>As opposed to append(), it sets a data value, not an element.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.objectify.ObjectifiedElement.countchildren">
-<code class="sig-name descname">countchildren</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifiedElement.countchildren" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectifiedElement.countchildren">
+<span class="sig-name descname"><span class="pre">countchildren</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifiedElement.countchildren" title="Permalink to this definition"></a></dt>
<dd><p>Return the number of children of this element, regardless of their
name.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.objectify.ObjectifiedElement.descendantpaths">
-<code class="sig-name descname">descendantpaths</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">prefix</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifiedElement.descendantpaths" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectifiedElement.descendantpaths">
+<span class="sig-name descname"><span class="pre">descendantpaths</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prefix</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifiedElement.descendantpaths" title="Permalink to this definition"></a></dt>
<dd><p>Returns a list of object path expressions for all descendants.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.objectify.ObjectifiedElement.getchildren">
-<code class="sig-name descname">getchildren</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifiedElement.getchildren" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectifiedElement.getchildren">
+<span class="sig-name descname"><span class="pre">getchildren</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifiedElement.getchildren" title="Permalink to this definition"></a></dt>
<dd><p>Returns a sequence of all direct children. The elements are
returned in document order.</p>
</dd></dl>
<dl class="py attribute">
-<dt id="lxml.objectify.ObjectifiedElement.text">
-<code class="sig-name descname">text</code><a class="headerlink" href="#lxml.objectify.ObjectifiedElement.text" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectifiedElement.text">
+<span class="sig-name descname"><span class="pre">text</span></span><a class="headerlink" href="#lxml.objectify.ObjectifiedElement.text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.ObjectifyElementClassLookup">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">ObjectifyElementClassLookup</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">tree_class</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">empty_data_class</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifyElementClassLookup" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.ObjectifyElementClassLookup">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">ObjectifyElementClassLookup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tree_class</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">empty_data_class</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.ObjectifyElementClassLookup" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.ElementClassLookup" title="lxml.etree.ElementClassLookup"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.ElementClassLookup</span></code></a></p>
<p>Element class lookup method that uses the objectify classes.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.PyType">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">PyType</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">type_check</span></em>, <em class="sig-param"><span class="n">type_class</span></em>, <em class="sig-param"><span class="n">stringify</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.PyType" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.PyType">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">PyType</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">type_check</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">type_class</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stringify</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.PyType" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>User defined type.</p>
<p>Named type that contains a type check function, a type class that
<p>Note that the order in which types are registered matters. The first
matching type will be used.</p>
<dl class="py method">
-<dt id="lxml.objectify.PyType.register">
-<code class="sig-name descname">register</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em>, <em class="sig-param"><span class="n">before</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">after</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.PyType.register" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.PyType.register">
+<span class="sig-name descname"><span class="pre">register</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">before</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">after</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.PyType.register" title="Permalink to this definition"></a></dt>
<dd><p>Register the type.</p>
<p>The additional keyword arguments ‘before’ and ‘after’ accept a
sequence of type names that must appear before/after the new type in
</dd></dl>
<dl class="py method">
-<dt id="lxml.objectify.PyType.unregister">
-<code class="sig-name descname">unregister</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">self</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.PyType.unregister" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.PyType.unregister">
+<span class="sig-name descname"><span class="pre">unregister</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.PyType.unregister" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.objectify.PyType.name">
-<code class="sig-name descname">name</code><a class="headerlink" href="#lxml.objectify.PyType.name" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.PyType.name">
+<span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#lxml.objectify.PyType.name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.objectify.PyType.stringify">
-<code class="sig-name descname">stringify</code><a class="headerlink" href="#lxml.objectify.PyType.stringify" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.PyType.stringify">
+<span class="sig-name descname"><span class="pre">stringify</span></span><a class="headerlink" href="#lxml.objectify.PyType.stringify" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.objectify.PyType.type_check">
-<code class="sig-name descname">type_check</code><a class="headerlink" href="#lxml.objectify.PyType.type_check" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.PyType.type_check">
+<span class="sig-name descname"><span class="pre">type_check</span></span><a class="headerlink" href="#lxml.objectify.PyType.type_check" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.objectify.PyType.xmlSchemaTypes">
-<code class="sig-name descname">xmlSchemaTypes</code><a class="headerlink" href="#lxml.objectify.PyType.xmlSchemaTypes" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.PyType.xmlSchemaTypes">
+<span class="sig-name descname"><span class="pre">xmlSchemaTypes</span></span><a class="headerlink" href="#lxml.objectify.PyType.xmlSchemaTypes" title="Permalink to this definition"></a></dt>
<dd><p>The list of XML Schema datatypes this Python type maps to.</p>
<p>Note that this must be set before registering the type!</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.objectify.StringElement">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">StringElement</code><a class="headerlink" href="#lxml.objectify.StringElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.StringElement">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">StringElement</span></span><a class="headerlink" href="#lxml.objectify.StringElement" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#lxml.objectify.ObjectifiedDataElement" title="lxml.objectify.ObjectifiedDataElement"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.objectify.ObjectifiedDataElement</span></code></a></p>
<p>String data class.</p>
<p>Note that this class does <em>not</em> support the sequence protocol of strings:
len(), iter(), str_attr[0], str_attr[0:1], etc. are <em>not</em> supported.
Instead, use the .text attribute to get a ‘real’ string.</p>
<dl class="py method">
-<dt id="lxml.objectify.StringElement.strlen">
-<code class="sig-name descname">strlen</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.StringElement.strlen" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.StringElement.strlen">
+<span class="sig-name descname"><span class="pre">strlen</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.StringElement.strlen" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
-<dt id="lxml.objectify.StringElement.pyval">
-<code class="sig-name descname">pyval</code><a class="headerlink" href="#lxml.objectify.StringElement.pyval" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.StringElement.pyval">
+<span class="sig-name descname"><span class="pre">pyval</span></span><a class="headerlink" href="#lxml.objectify.StringElement.pyval" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.DataElement">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">DataElement</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">_value</span></em>, <em class="sig-param"><span class="n">attrib</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">nsmap</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">_pytype</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">_xsi</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_attributes</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.DataElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.DataElement">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">DataElement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">_value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrib</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nsmap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_pytype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_xsi</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_attributes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.DataElement" title="Permalink to this definition"></a></dt>
<dd><p>Create a new element from a Python value and XML attributes taken from
keyword arguments or a dictionary passed as second argument.</p>
<p>Automatically adds a ‘pytype’ attribute for the Python type of the value,
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.Element">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">Element</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">_tag</span></em>, <em class="sig-param"><span class="n">attrib</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">nsmap</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">_pytype</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">_attributes</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.Element" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.Element">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">Element</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">_tag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrib</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nsmap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_pytype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_attributes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.Element" title="Permalink to this definition"></a></dt>
<dd><p>Objectify specific version of the lxml.etree Element() factory that
always creates a structural (tree) element.</p>
<p>NOTE: requires parser based element class lookup activated in lxml.etree!</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.XML">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">XML</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">xml</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.XML" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.XML">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">XML</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">xml</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.XML" title="Permalink to this definition"></a></dt>
<dd><p>Objectify specific version of the lxml.etree XML() literal factory
that uses the objectify parser.</p>
<p>You can pass a different parser as second argument.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.__checkBool">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">__checkBool</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">s</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.__checkBool" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.__checkBool">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">__checkBool</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">s</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.__checkBool" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.__lower_bool">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">__lower_bool</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">b</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.__lower_bool" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.__lower_bool">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">__lower_bool</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">b</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.__lower_bool" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.__parseBool">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">__parseBool</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">s</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.__parseBool" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.__parseBool">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">__parseBool</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">s</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.__parseBool" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.__unpickleElementTree">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">__unpickleElementTree</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.__unpickleElementTree" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.__unpickleElementTree">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">__unpickleElementTree</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.__unpickleElementTree" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.annotate">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">annotate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element_or_tree</span></em>, <em class="sig-param"><span class="n">ignore_old</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">ignore_xsi</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">empty_pytype</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">empty_type</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">annotate_xsi</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">annotate_pytype</span><span class="o">=</span><span class="default_value">1</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.annotate" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.annotate">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">annotate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element_or_tree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_old</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_xsi</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">empty_pytype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">empty_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">annotate_xsi</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">annotate_pytype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.annotate" title="Permalink to this definition"></a></dt>
<dd><p>Recursively annotates the elements of an XML tree with ‘xsi:type’
and/or ‘py:pytype’ attributes.</p>
<p>If the ‘ignore_old’ keyword argument is True (the default), current
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.deannotate">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">deannotate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element_or_tree</span></em>, <em class="sig-param"><span class="n">pytype</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">xsi</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">xsi_nil</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">cleanup_namespaces</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.deannotate" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.deannotate">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">deannotate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element_or_tree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pytype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xsi</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xsi_nil</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cleanup_namespaces</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.deannotate" title="Permalink to this definition"></a></dt>
<dd><p>Recursively de-annotate the elements of an XML tree by removing ‘py:pytype’
and/or ‘xsi:type’ attributes and/or ‘xsi:nil’ attributes.</p>
<p>If the ‘pytype’ keyword argument is True (the default), ‘py:pytype’
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.dump">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">dump</code><span class="sig-paren">(</span><em class="sig-param">_Element element not None</em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.dump" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.dump">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">dump</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">_Element</span> <span class="pre">element</span> <span class="pre">not</span> <span class="pre">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.dump" title="Permalink to this definition"></a></dt>
<dd><p>Return a recursively generated string representation of an element.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.enable_recursive_str">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">enable_recursive_str</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">on</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.enable_recursive_str" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.enable_recursive_str">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">enable_recursive_str</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">on</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.enable_recursive_str" title="Permalink to this definition"></a></dt>
<dd><p>Enable a recursively generated tree representation for str(element),
based on objectify.dump(element).</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.fromstring">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">fromstring</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">xml</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.fromstring" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.fromstring">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">fromstring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">xml</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.fromstring" title="Permalink to this definition"></a></dt>
<dd><p>Objectify specific version of the lxml.etree fromstring() function
that uses the objectify parser.</p>
<p>You can pass a different parser as second argument.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.getRegisteredTypes">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">getRegisteredTypes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.getRegisteredTypes" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.getRegisteredTypes">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">getRegisteredTypes</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.getRegisteredTypes" title="Permalink to this definition"></a></dt>
<dd><p>Returns a list of the currently registered PyType objects.</p>
<p>To add a new type, retrieve this list and call unregister() for all
entries. Then add the new type at a suitable position (possibly replacing
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.makeparser">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">makeparser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">remove_blank_text</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kw</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.makeparser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.makeparser">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">makeparser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">remove_blank_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.makeparser" title="Permalink to this definition"></a></dt>
<dd><p>Create a new XML parser for objectify trees.</p>
<p>You can pass all keyword arguments that are supported by
<code class="docutils literal notranslate"><span class="pre">etree.XMLParser()</span></code>. Note that this parser defaults to removing
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.parse">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">parse</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">f</span></em>, <em class="sig-param"><span class="n">parser</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">base_url</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.parse" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.parse">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">parse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.parse" title="Permalink to this definition"></a></dt>
<dd><p>Parse a file or file-like object with the objectify parser.</p>
<p>You can pass a different parser as second argument.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">base_url</span></code> keyword allows setting a URL for the document
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.pyannotate">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">pyannotate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element_or_tree</span></em>, <em class="sig-param"><span class="n">ignore_old</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">ignore_xsi</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">empty_pytype</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.pyannotate" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.pyannotate">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">pyannotate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element_or_tree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_old</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_xsi</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">empty_pytype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.pyannotate" title="Permalink to this definition"></a></dt>
<dd><p>Recursively annotates the elements of an XML tree with ‘pytype’
attributes.</p>
<p>If the ‘ignore_old’ keyword argument is True (the default), current ‘pytype’
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.pytypename">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">pytypename</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.pytypename" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.pytypename">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">pytypename</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.pytypename" title="Permalink to this definition"></a></dt>
<dd><p>Find the name of the corresponding PyType for a Python object.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.set_default_parser">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">set_default_parser</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">new_parser</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.set_default_parser" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.set_default_parser">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">set_default_parser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">new_parser</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.set_default_parser" title="Permalink to this definition"></a></dt>
<dd><p>Replace the default parser used by objectify’s Element() and
fromstring() functions.</p>
<p>The new parser must be an etree.XMLParser.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.set_pytype_attribute_tag">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">set_pytype_attribute_tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">attribute_tag</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.set_pytype_attribute_tag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.set_pytype_attribute_tag">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">set_pytype_attribute_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">attribute_tag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.set_pytype_attribute_tag" title="Permalink to this definition"></a></dt>
<dd><p>Change name and namespace of the XML attribute that holds Python type
information.</p>
<p>Do not use this unless you know what you are doing.</p>
</dd></dl>
<dl class="py function">
-<dt id="lxml.objectify.xsiannotate">
-<code class="sig-prename descclassname">lxml.objectify.</code><code class="sig-name descname">xsiannotate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element_or_tree</span></em>, <em class="sig-param"><span class="n">ignore_old</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">ignore_pytype</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">empty_type</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.xsiannotate" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.objectify.xsiannotate">
+<span class="sig-prename descclassname"><span class="pre">lxml.objectify.</span></span><span class="sig-name descname"><span class="pre">xsiannotate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element_or_tree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_old</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_pytype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">empty_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.objectify.xsiannotate" title="Permalink to this definition"></a></dt>
<dd><p>Recursively annotates the elements of an XML tree with ‘xsi:type’
attributes.</p>
<p>If the ‘ignore_old’ keyword argument is True (the default), current
elements. Pass ‘string’, for example, to make string values the default.</p>
</dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
- <a href="lxml.sax.html" class="btn btn-neutral float-right" title="lxml.sax module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
-
-
- <a href="lxml.etree.html" class="btn btn-neutral float-left" title="lxml.etree module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.etree.html" class="btn btn-neutral float-left" title="lxml.etree module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="lxml.sax.html" class="btn btn-neutral float-right" title="lxml.sax module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>lxml.sax module — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-
-
-
-
-
-
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>lxml.sax module — lxml documentation</title>
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="prev" title="lxml.objectify module" href="lxml.objectify.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="lxml.html">lxml package</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li><a href="lxml.html">lxml package</a> »</li>
-
<li>lxml.sax module</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
<a href="_sources/lxml.sax.rst.txt" rel="nofollow"> View page source</a>
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
- <div class="section" id="module-lxml.sax">
-<span id="lxml-sax-module"></span><h1>lxml.sax module<a class="headerlink" href="#module-lxml.sax" title="Permalink to this headline">¶</a></h1>
+
+ <section id="module-lxml.sax">
+<span id="lxml-sax-module"></span><h1>lxml.sax module<a class="headerlink" href="#module-lxml.sax" title="Permalink to this headline"></a></h1>
<p>SAX-based adapter to copy trees from/to the Python standard library.</p>
<p>Use the <cite>ElementTreeContentHandler</cite> class to build an ElementTree from
SAX events.</p>
the SAX events of an ElementTree against a SAX ContentHandler.</p>
<p>See <a class="reference external" href="https://lxml.de/sax.html">https://lxml.de/sax.html</a></p>
<dl class="py exception">
-<dt id="lxml.sax.SaxError">
-<em class="property">exception </em><code class="sig-prename descclassname">lxml.sax.</code><code class="sig-name descname">SaxError</code><a class="headerlink" href="#lxml.sax.SaxError" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.SaxError">
+<em class="property"><span class="pre">exception</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.sax.</span></span><span class="sig-name descname"><span class="pre">SaxError</span></span><a class="headerlink" href="#lxml.sax.SaxError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="lxml.etree.html#lxml.etree.LxmlError" title="lxml.etree.LxmlError"><code class="xref py py-class docutils literal notranslate"><span class="pre">lxml.etree.LxmlError</span></code></a></p>
<p>General SAX error.</p>
</dd></dl>
<dl class="py class">
-<dt id="lxml.sax.ElementTreeContentHandler">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.sax.</code><code class="sig-name descname">ElementTreeContentHandler</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">makeelement</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.sax.</span></span><span class="sig-name descname"><span class="pre">ElementTreeContentHandler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">makeelement</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">xml.sax.handler.ContentHandler</span></code></p>
<p>Build an lxml ElementTree from SAX events.</p>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler._buildTag">
-<code class="sig-name descname">_buildTag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">ns_name_tuple</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler._buildTag" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler._buildTag">
+<span class="sig-name descname"><span class="pre">_buildTag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ns_name_tuple</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler._buildTag" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler._get_etree">
-<code class="sig-name descname">_get_etree</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler._get_etree" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler._get_etree">
+<span class="sig-name descname"><span class="pre">_get_etree</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler._get_etree" title="Permalink to this definition"></a></dt>
<dd><p>Contains the generated ElementTree after parsing is finished.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.characters">
-<code class="sig-name descname">characters</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.characters" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.characters">
+<span class="sig-name descname"><span class="pre">characters</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.characters" title="Permalink to this definition"></a></dt>
<dd><p>Receive notification of character data.</p>
<p>The Parser will call this method to report each chunk of
character data. SAX parsers may return all contiguous
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.endDocument">
-<code class="sig-name descname">endDocument</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.endDocument" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.endDocument">
+<span class="sig-name descname"><span class="pre">endDocument</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.endDocument" title="Permalink to this definition"></a></dt>
<dd><p>Receive notification of the end of a document.</p>
<p>The SAX parser will invoke this method only once, and it will
be the last method invoked during the parse. The parser shall
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.endElement">
-<code class="sig-name descname">endElement</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.endElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.endElement">
+<span class="sig-name descname"><span class="pre">endElement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.endElement" title="Permalink to this definition"></a></dt>
<dd><p>Signals the end of an element in non-namespace mode.</p>
<p>The name parameter contains the name of the element type, just
as with the startElement event.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.endElementNS">
-<code class="sig-name descname">endElementNS</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">ns_name</span></em>, <em class="sig-param"><span class="n">qname</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.endElementNS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.endElementNS">
+<span class="sig-name descname"><span class="pre">endElementNS</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ns_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">qname</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.endElementNS" title="Permalink to this definition"></a></dt>
<dd><p>Signals the end of an element in namespace mode.</p>
<p>The name parameter contains the name of the element type, just
as with the startElementNS event.</p>
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.endPrefixMapping">
-<code class="sig-name descname">endPrefixMapping</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">prefix</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.endPrefixMapping" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.endPrefixMapping">
+<span class="sig-name descname"><span class="pre">endPrefixMapping</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prefix</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.endPrefixMapping" title="Permalink to this definition"></a></dt>
<dd><p>End the scope of a prefix-URI mapping.</p>
<p>See startPrefixMapping for details. This event will always
occur after the corresponding endElement event, but the order
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.ignorableWhitespace">
-<code class="sig-name descname">ignorableWhitespace</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.ignorableWhitespace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.ignorableWhitespace">
+<span class="sig-name descname"><span class="pre">ignorableWhitespace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.ignorableWhitespace" title="Permalink to this definition"></a></dt>
<dd><p>Receive notification of ignorable whitespace in element content.</p>
<p>Validating Parsers must use this method to report each chunk
of ignorable whitespace (see the W3C XML 1.0 recommendation,
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.processingInstruction">
-<code class="sig-name descname">processingInstruction</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">target</span></em>, <em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.processingInstruction" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.processingInstruction">
+<span class="sig-name descname"><span class="pre">processingInstruction</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.processingInstruction" title="Permalink to this definition"></a></dt>
<dd><p>Receive notification of a processing instruction.</p>
<p>The Parser will invoke this method once for each processing
instruction found: note that processing instructions may occur
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.setDocumentLocator">
-<code class="sig-name descname">setDocumentLocator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">locator</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.setDocumentLocator" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.setDocumentLocator">
+<span class="sig-name descname"><span class="pre">setDocumentLocator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">locator</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.setDocumentLocator" title="Permalink to this definition"></a></dt>
<dd><p>Called by the parser to give the application a locator for
locating the origin of document events.</p>
<p>SAX parsers are strongly encouraged (though not absolutely
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.startDocument">
-<code class="sig-name descname">startDocument</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.startDocument" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.startDocument">
+<span class="sig-name descname"><span class="pre">startDocument</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.startDocument" title="Permalink to this definition"></a></dt>
<dd><p>Receive notification of the beginning of a document.</p>
<p>The SAX parser will invoke this method only once, before any
other methods in this interface or in DTDHandler (except for
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.startElement">
-<code class="sig-name descname">startElement</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">attributes</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.startElement" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.startElement">
+<span class="sig-name descname"><span class="pre">startElement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attributes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.startElement" title="Permalink to this definition"></a></dt>
<dd><p>Signals the start of an element in non-namespace mode.</p>
<p>The name parameter contains the raw XML 1.0 name of the
element type as a string and the attrs parameter holds an
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.startElementNS">
-<code class="sig-name descname">startElementNS</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">ns_name</span></em>, <em class="sig-param"><span class="n">qname</span></em>, <em class="sig-param"><span class="n">attributes</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.startElementNS" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.startElementNS">
+<span class="sig-name descname"><span class="pre">startElementNS</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ns_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">qname</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attributes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.startElementNS" title="Permalink to this definition"></a></dt>
<dd><p>Signals the start of an element in namespace mode.</p>
<p>The name parameter contains the name of the element type as a
(uri, localname) tuple, the qname parameter the raw XML 1.0
</dd></dl>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.startPrefixMapping">
-<code class="sig-name descname">startPrefixMapping</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">prefix</span></em>, <em class="sig-param"><span class="n">uri</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.startPrefixMapping" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.startPrefixMapping">
+<span class="sig-name descname"><span class="pre">startPrefixMapping</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prefix</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">uri</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.startPrefixMapping" title="Permalink to this definition"></a></dt>
<dd><p>Begin the scope of a prefix-URI Namespace mapping.</p>
<p>The information from this event is not necessary for normal
Namespace processing: the SAX XML reader will automatically
not guaranteed.</p>
</dd></dl>
-<dl class="py method">
-<dt id="lxml.sax.ElementTreeContentHandler.etree">
-<em class="property">property </em><code class="sig-name descname">etree</code><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.etree" title="Permalink to this definition">¶</a></dt>
+<dl class="py property">
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeContentHandler.etree">
+<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">etree</span></span><a class="headerlink" href="#lxml.sax.ElementTreeContentHandler.etree" title="Permalink to this definition"></a></dt>
<dd><p>Contains the generated ElementTree after parsing is finished.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
-<dt id="lxml.sax.ElementTreeProducer">
-<em class="property">class </em><code class="sig-prename descclassname">lxml.sax.</code><code class="sig-name descname">ElementTreeProducer</code><a class="headerlink" href="#lxml.sax.ElementTreeProducer" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeProducer">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">lxml.sax.</span></span><span class="sig-name descname"><span class="pre">ElementTreeProducer</span></span><a class="headerlink" href="#lxml.sax.ElementTreeProducer" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Produces SAX events for an element and children.</p>
<dl class="py method">
-<dt id="lxml.sax.ElementTreeProducer.saxify">
-<code class="sig-name descname">saxify</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeProducer.saxify" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.ElementTreeProducer.saxify">
+<span class="sig-name descname"><span class="pre">saxify</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.ElementTreeProducer.saxify" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
-<dt id="lxml.sax.__pyx_unpickle_ElementTreeProducer">
-<code class="sig-prename descclassname">lxml.sax.</code><code class="sig-name descname">__pyx_unpickle_ElementTreeProducer</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">__pyx_type</span></em>, <em class="sig-param"><span class="n">__pyx_checksum</span></em>, <em class="sig-param"><span class="n">__pyx_state</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.__pyx_unpickle_ElementTreeProducer" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.__pyx_unpickle_ElementTreeProducer">
+<span class="sig-prename descclassname"><span class="pre">lxml.sax.</span></span><span class="sig-name descname"><span class="pre">__pyx_unpickle_ElementTreeProducer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">__pyx_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">__pyx_checksum</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">__pyx_state</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.__pyx_unpickle_ElementTreeProducer" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
-<dt id="lxml.sax.saxify">
-<code class="sig-prename descclassname">lxml.sax.</code><code class="sig-name descname">saxify</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">element_or_tree</span></em>, <em class="sig-param"><span class="n">content_handler</span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.saxify" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="lxml.sax.saxify">
+<span class="sig-prename descclassname"><span class="pre">lxml.sax.</span></span><span class="sig-name descname"><span class="pre">saxify</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element_or_tree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_handler</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#lxml.sax.saxify" title="Permalink to this definition"></a></dt>
<dd><p>One-shot helper to generate SAX events from an XML tree and fire
them against a SAX ContentHandler.</p>
</dd></dl>
-</div>
+</section>
</div>
-
</div>
- <footer>
-
- <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-
-
- <a href="lxml.objectify.html" class="btn btn-neutral float-left" title="lxml.objectify module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
-
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="lxml.objectify.html" class="btn btn-neutral float-left" title="lxml.objectify module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Python Module Index — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
+ <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li>Python Module Index</li>
-
-
<li class="wy-breadcrumbs-aside">
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<h1>Python Module Index</h1>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
- </script>
-
-
-
-
-
+ </script>
</body>
</html>
\ No newline at end of file
-
-
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Search — lxml documentation</title>
-
-
-
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
-
-
-
-
-
-
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
-
- <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
- <script src="_static/language_data.js"></script>
-
- <script type="text/javascript" src="_static/js/theme.js"></script>
-
-
- <script type="text/javascript" src="_static/searchtools.js"></script>
+ <script src="_static/js/theme.js"></script>
+ <script src="_static/searchtools.js"></script>
+ <script src="_static/language_data.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="#" />
</head>
-<body class="wy-body-for-nav">
-
-
+<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
-
-
-
- <a href="index.html" class="icon icon-home" alt="Documentation Home"> lxml
-
-
-
-
+ <a href="index.html" class="icon icon-home"> lxml
<img src="_static/python-xml.png" class="logo" alt="Logo"/>
-
</a>
-
-
-
-
<div class="version">
- 4.6.2
+ 4.6.4
</div>
-
-
-
-
<div role="search">
<form id="rtd-search-form" class="wy-form" action="#" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="area" value="default" />
</form>
</div>
-
-
- </div>
-
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="lxml.html">lxml package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="lxml.html.html">lxml.html package</a><ul>
</li>
</ul>
-
-
</div>
-
</div>
</nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">lxml</a>
-
</nav>
-
<div class="wy-nav-content">
-
<div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
+ <div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
-
<li><a href="index.html" class="icon icon-home"></a> »</li>
-
<li>Search</li>
-
-
<li class="wy-breadcrumbs-aside">
-
-
-
</li>
-
</ul>
-
-
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
-
+
<noscript>
<div id="fallback" class="admonition warning">
<p class="last">
</div>
</div>
-
</div>
<footer>
-
<hr/>
<div role="contentinfo">
- <p>
-
- © Copyright 2020, lxml dev team
-
- </p>
+ <p>© Copyright 2020, lxml dev team.</p>
</div>
-
-
-
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
-
- <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
-
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
-</footer>
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
</div>
</div>
-
</section>
-
</div>
-
-
- <script type="text/javascript">
+ <script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
-
-
-
-
-
- <script type="text/javascript">
+ <script>
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
- <script type="text/javascript" id="searchindexloader"></script>
+ <script id="searchindexloader"></script>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>How to build lxml from source</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="how-to-build-lxml-from-source">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu current" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">How to build lxml from source</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu current" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">How to build lxml from source</h1>
<p>To build lxml from source, you need libxml2 and libxslt properly
installed, <em>including the header files</em>. These are likely shipped in
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>The public C-API of lxml.etree</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="the-public-c-api-of-lxml-etree">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu current" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">The public C-API of lxml.etree</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu current" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">The public C-API of lxml.etree</h1>
<p>As of version 1.1, lxml.etree provides a public C-API. This allows external
C extensions to efficiently access public functions and classes of lxml,
without going through the Python API.</p>
<p>The API is described in the file <a class="reference external" href="https://github.com/lxml/lxml/blob/master/src/lxml/includes/etreepublic.pxd">etreepublic.pxd</a>, which is directly
-c-importable by extension modules implemented in <a class="reference external" href="http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/">Pyrex</a> or <a class="reference external" href="http://cython.org">Cython</a>.</p>
+c-importable by extension modules implemented in <a class="reference external" href="https://cython.org">Cython</a>.</p>
<div class="contents topic" id="contents">
<p class="topic-title">Contents</p>
<ul class="simple">
</div>
<div class="section" id="writing-external-modules-in-cython">
<h1>Writing external modules in Cython</h1>
-<p>This is the easiest way of extending lxml at the C level. A <a class="reference external" href="http://cython.org">Cython</a>
-(or <a class="reference external" href="http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/">Pyrex</a>) module should start like this:</p>
+<p>This is the easiest way of extending lxml at the C level. A <a class="reference external" href="https://cython.org">Cython</a>
+module should start like this:</p>
<pre class="literal-block">
# My Cython extension
<p>If you really feel like it, you can also interface with lxml.etree straight
from C code. All you have to do is include the header file for the public
API, import the <tt class="docutils literal">lxml.etree</tt> module and then call the import function:</p>
-<div class="syntax"><pre><span></span><span class="cm">/* My C extension */</span>
+<div class="syntax"><pre><span></span><span class="cm">/* My C extension */</span><span class="w"></span>
-<span class="cm">/* common includes */</span>
-<span class="cp">#include</span> <span class="cpf">"Python.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"stdio.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"string.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"stdarg.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"libxml/xmlversion.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"libxml/encoding.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"libxml/hash.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"libxml/tree.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"libxml/xmlIO.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"libxml/xmlsave.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"libxml/globals.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"libxml/xmlstring.h"</span><span class="cp"></span>
+<span class="cm">/* common includes */</span><span class="w"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"Python.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"stdio.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"string.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"stdarg.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"libxml/xmlversion.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"libxml/encoding.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"libxml/hash.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"libxml/tree.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"libxml/xmlIO.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"libxml/xmlsave.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"libxml/globals.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"libxml/xmlstring.h"</span><span class="cp"></span>
-<span class="cm">/* lxml.etree specific includes */</span>
-<span class="cp">#include</span> <span class="cpf">"lxml-version.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"etree_defs.h"</span><span class="cp"></span>
-<span class="cp">#include</span> <span class="cpf">"etree.h"</span><span class="cp"></span>
+<span class="cm">/* lxml.etree specific includes */</span><span class="w"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"lxml-version.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"etree_defs.h"</span><span class="cp"></span>
+<span class="cp">#include</span><span class="w"> </span><span class="cpf">"etree.h"</span><span class="cp"></span>
-<span class="cm">/* setup code */</span>
-<span class="n">import_lxml__etree</span><span class="p">()</span>
+<span class="cm">/* setup code */</span><span class="w"></span>
+<span class="n">import_lxml__etree</span><span class="p">()</span><span class="w"></span>
</pre></div>
<p>Note that including <tt class="docutils literal">etree.h</tt> does not automatically include the
header files it requires. Note also that the above list of common
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
-<title>lxml changelog</title>
-<link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
-<div class="document" id="lxml-changelog">
-<h1 class="title">lxml changelog</h1>
-
-<div class="section" id="id1">
-<h1>4.6.3 (2021-03-21)</h1>
-<div class="section" id="bugs-fixed">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>A vulnerability (CVE-2021-28957) was discovered in the HTML Cleaner by Kevin Chung,
-which allowed JavaScript to pass through. The cleaner now removes the HTML5
-<tt class="docutils literal">formaction</tt> attribute.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id2">
-<h1>4.6.2 (2020-11-26)</h1>
-<div class="section" id="id3">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>A vulnerability (CVE-2020-27783) was discovered in the HTML Cleaner by Yaniv Nizry,
-which allowed JavaScript to pass through. The cleaner now removes more sneaky
-"style" content.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id4">
-<h1>4.6.1 (2020-10-18)</h1>
-<div class="section" id="id5">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>A vulnerability was discovered in the HTML Cleaner by Yaniv Nizry, which allowed
-JavaScript to pass through. The cleaner now removes more sneaky "style" content.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id6">
-<h1>4.6.0 (2020-10-17)</h1>
-<div class="section" id="features-added">
-<h2>Features added</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/310">GH#310</a>: <tt class="docutils literal">lxml.html.InputGetter</tt> supports <tt class="docutils literal">__len__()</tt> to count the number of input fields.
-Patch by Aidan Woolley.</li>
-<li><tt class="docutils literal">lxml.html.InputGetter</tt> has a new <tt class="docutils literal">.items()</tt> method to ease processing all input fields.</li>
-<li><tt class="docutils literal">lxml.html.InputGetter.keys()</tt> now returns the field names in document order.</li>
-<li>GH-309: The API documentation is now generated using <tt class="docutils literal"><span class="pre">sphinx-apidoc</span></tt>.
-Patch by Chris Mayo.</li>
-</ul>
-</div>
-<div class="section" id="id7">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1869455">LP#1869455</a>: C14N 2.0 serialisation failed for unprefixed attributes
-when a default namespace was defined.</li>
-<li><tt class="docutils literal">TreeBuilder.close()</tt> raised <tt class="docutils literal">AssertionError</tt> in some error cases where it
-should have raised <tt class="docutils literal">XMLSyntaxError</tt>. It now raises a combined exception to
-keep up backwards compatibility, while switching to <tt class="docutils literal">XMLSyntaxError</tt> as an
-interface.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id8">
-<h1>4.5.2 (2020-07-09)</h1>
-<div class="section" id="id9">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">Cleaner()</tt> now validates that only known configuration options can be set.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1882606">LP#1882606</a>: <tt class="docutils literal">Cleaner.clean_html()</tt> discarded comments and PIs regardless of the
-corresponding configuration option, if <tt class="docutils literal">remove_unknown_tags</tt> was set.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1880251">LP#1880251</a>: Instead of globally overwriting the document loader in libxml2, lxml now
-sets it per parser run, which improves the interoperability with other users of libxml2
-such as libxmlsec.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1881960">LP#1881960</a>: Fix build in CPython 3.10 by using Cython 0.29.21.</li>
-<li>The setup options "--with-xml2-config" and "--with-xslt-config" were accidentally renamed
-to "--xml2-config" and "--xslt-config" in 4.5.1 and are now available again.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id10">
-<h1>4.5.1 (2020-05-19)</h1>
-<div class="section" id="id11">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1570388">LP#1570388</a>: Fix failures when serialising documents larger than 2GB in some cases.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1865141">LP#1865141</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/298">GH#298</a>: <tt class="docutils literal">QName</tt> values were not accepted by the <tt class="docutils literal">el.iter()</tt> method.
-Patch by xmo-odoo.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1863413">LP#1863413</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/297">GH#297</a>: The build failed to detect libraries on Linux that are only
-configured via pkg-config.
-Patch by Hugh McMaster.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id12">
-<h1>4.5.0 (2020-01-29)</h1>
-<div class="section" id="id13">
-<h2>Features added</h2>
-<ul class="simple">
-<li>A new function <tt class="docutils literal">indent()</tt> was added to insert tail whitespace for pretty-printing
-an XML tree.</li>
-</ul>
-</div>
-<div class="section" id="id14">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1857794">LP#1857794</a>: Tail text of nodes that get removed from a document using item
-deletion disappeared silently instead of sticking with the node that was removed.</li>
-</ul>
-</div>
-<div class="section" id="other-changes">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>MacOS builds are 64-bit-only by default.
-Set CFLAGS and LDFLAGS explicitly to override it.</li>
-<li>Linux/MacOS Binary wheels now use libxml2 2.9.10 and libxslt 1.1.34.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1840234">LP#1840234</a>: The package version number is now available as <tt class="docutils literal">lxml.__version__</tt>.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id15">
-<h1>4.4.3 (2020-01-28)</h1>
-<div class="section" id="id16">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1844674">LP#1844674</a>: <tt class="docutils literal">itertext()</tt> was missing tail text of comments and PIs since 4.4.0.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id17">
-<h1>4.4.2 (2019-11-25)</h1>
-<div class="section" id="id18">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1835708">LP#1835708</a>: <tt class="docutils literal">ElementInclude</tt> incorrectly rejected repeated non-recursive
-includes as recursive.
-Patch by Rainer Hausdorf.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id19">
-<h1>4.4.1 (2019-08-11)</h1>
-<div class="section" id="id20">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1838252">LP#1838252</a>: The order of an OrderedDict was lost in 4.4.0 when passing it as
-attrib mapping during element creation.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1838521">LP#1838521</a>: The package metadata now lists the supported Python versions.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id21">
-<h1>4.4.0 (2019-07-27)</h1>
-<div class="section" id="id22">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">Element.clear()</tt> accepts a new keyword argument <tt class="docutils literal">keep_tail=True</tt> to clear
-everything but the tail text. This is helpful in some document-style use cases
-and for clearing the current element in <tt class="docutils literal">iterparse()</tt> and pull parsing.</li>
-<li>When creating attributes or namespaces from a dict in Python 3.6+, lxml now
-preserves the original insertion order of that dict, instead of always sorting
-the items by name. A similar change was made for ElementTree in CPython 3.8.
-See <a class="reference external" href="https://bugs.python.org/issue34160">https://bugs.python.org/issue34160</a></li>
-<li>Integer elements in <tt class="docutils literal">lxml.objectify</tt> implement the <tt class="docutils literal">__index__()</tt> special method.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/269">GH#269</a>: Read-only elements in XSLT were missing the <tt class="docutils literal">nsmap</tt> property.
-Original patch by Jan Pazdziora.</li>
-<li>ElementInclude can now restrict the maximum inclusion depth via a <tt class="docutils literal">max_depth</tt>
-argument to prevent content explosion. It is limited to 6 by default.</li>
-<li>The <tt class="docutils literal">target</tt> object of the XMLParser can have <tt class="docutils literal">start_ns()</tt> and <tt class="docutils literal">end_ns()</tt>
-callback methods to listen to namespace declarations.</li>
-<li>The <tt class="docutils literal">TreeBuilder</tt> has new arguments <tt class="docutils literal">comment_factory</tt> and <tt class="docutils literal">pi_factory</tt> to
-pass factories for creating comments and processing instructions, as well as
-flag arguments <tt class="docutils literal">insert_comments</tt> and <tt class="docutils literal">insert_pis</tt> to discard them from the
-tree when set to false.</li>
-<li>A <a class="reference external" href="https://www.w3.org/TR/xml-c14n2/">C14N 2.0</a> implementation was added as
-<tt class="docutils literal">etree.canonicalize()</tt>, a corresponding <tt class="docutils literal">C14NWriterTarget</tt> class, and
-a <tt class="docutils literal">c14n2</tt> serialisation method.</li>
-</ul>
-</div>
-<div class="section" id="id23">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>When writing to file paths that contain the URL escape character '%', the file
-path could wrongly be mangled by URL unescaping and thus write to a different
-file or directory. Code that writes to file paths that are provided by untrusted
-sources, but that must work with previous versions of lxml, should best either
-reject paths that contain '%' characters, or otherwise make sure that the path
-does not contain maliciously injected '%XX' URL hex escapes for paths like '../'.</li>
-<li>Assigning to Element child slices with negative step could insert the slice at
-the wrong position, starting too far on the left.</li>
-<li>Assigning to Element child slices with overly large step size could take very
-long, regardless of the length of the actual slice.</li>
-<li>Assigning to Element child slices of the wrong size could sometimes fail to
-raise a ValueError (like a list assignment would) and instead assign outside
-of the original slice bounds or leave parts of it unreplaced.</li>
-<li>The <tt class="docutils literal">comment</tt> and <tt class="docutils literal">pi</tt> events in <tt class="docutils literal">iterwalk()</tt> were never triggered, and
-instead, comments and processing instructions in the tree were reported as
-<tt class="docutils literal">start</tt> elements. Also, when walking an ElementTree (as opposed to its root
-element), comments and PIs outside of the root element are now reported.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1827833">LP#1827833</a>: The RelaxNG compact syntax support was broken with recent versions
-of <tt class="docutils literal">rnc2rng</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1758553">LP#1758553</a>: The HTML elements <tt class="docutils literal">source</tt> and <tt class="docutils literal">track</tt> were added to the list
-of empty tags in <tt class="docutils literal">lxml.html.defs</tt>.</li>
-<li>Registering a prefix other than "xml" for the XML namespace is now rejected.</li>
-<li>Failing to write XSLT output to a file could raise a misleading exception.
-It now raises <tt class="docutils literal">IOError</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id24">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Support for Python 3.4 was removed.</li>
-<li>When using <tt class="docutils literal"><span class="pre">Element.find*()</span></tt> with prefix-namespace mappings, the empty string
-is now accepted to define a default namespace, in addition to the previously
-supported <tt class="docutils literal">None</tt> prefix. Empty strings are more convenient since they keep
-all prefix keys in a namespace dict strings, which simplifies sorting etc.</li>
-<li>The <tt class="docutils literal">ElementTree.write_c14n()</tt> method has been deprecated in favour of the
-long preferred <tt class="docutils literal">ElementTree.write(f, <span class="pre">method="c14n")</span></tt>. It will be removed
-in a future release.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id25">
-<h1>4.3.5 (2019-07-27)</h1>
-<ul class="simple">
-<li>Rebuilt with Cython 0.29.13 to support Python 3.8.</li>
-</ul>
-</div>
-<div class="section" id="id26">
-<h1>4.3.4 (2019-06-10)</h1>
-<ul class="simple">
-<li>Rebuilt with Cython 0.29.10 to support Python 3.8.</li>
-</ul>
-</div>
-<div class="section" id="id27">
-<h1>4.3.3 (2019-03-26)</h1>
-<div class="section" id="id28">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fix leak of output buffer and unclosed files in <tt class="docutils literal">_XSLTResultTree.write_output()</tt>.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id29">
-<h1>4.3.2 (2019-02-29)</h1>
-<div class="section" id="id30">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in 4.3.1 when appending a child subtree with certain text nodes.</li>
-</ul>
-</div>
-<div class="section" id="id31">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Built with Cython 0.29.6.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id32">
-<h1>4.3.1 (2019-02-08)</h1>
-<div class="section" id="id33">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1814522">LP#1814522</a>: Crash when appending a child subtree that contains unsubstituted
-entity references.</li>
-</ul>
-</div>
-<div class="section" id="id34">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Built with Cython 0.29.5.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id35">
-<h1>4.3.0 (2019-01-04)</h1>
-<div class="section" id="id36">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The module <tt class="docutils literal">lxml.sax</tt> is compiled using Cython in order to speed it up.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/267">GH#267</a>: <tt class="docutils literal">lxml.sax.ElementTreeProducer</tt> now preserves the namespace prefixes.
-If two prefixes point to the same URI, the first prefix in alphabetical order
-is used. Patch by Lennart Regebro.</li>
-<li>Updated ISO-Schematron implementation to 2013 version (now MIT licensed)
-and the corresponding schema to the 2016 version (with optional "properties").</li>
-</ul>
-</div>
-<div class="section" id="id37">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/270">GH#270</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/271">GH#271</a>: Support for Python 2.6 and 3.3 was removed.
-Patch by hugovk.</li>
-<li>The minimum dependency versions were raised to libxml2 2.9.2 and libxslt 1.1.27,
-which were released in 2014 and 2012 respectively.</li>
-<li>Built with Cython 0.29.2.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id38">
-<h1>4.2.6 (2019-01-02)</h1>
-<div class="section" id="id39">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1799755">LP#1799755</a>: Fix a DeprecationWarning in Py3.7+.</li>
-<li>Import warnings in Python 3.6+ were resolved.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id40">
-<h1>4.2.5 (2018-09-09)</h1>
-<div class="section" id="id41">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Javascript URLs that used URL escaping were not removed by the HTML cleaner.
-Security problem found by Omar Eissa. (CVE-2018-19787)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id42">
-<h1>4.2.4 (2018-08-03)</h1>
-<div class="section" id="id43">
-<h2>Features added</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/259">GH#259</a>: Allow using <tt class="docutils literal"><span class="pre">pkg-config</span></tt> for build configuration.
-Patch by Patrick Griffis.</li>
-</ul>
-</div>
-<div class="section" id="id44">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1773749">LP#1773749</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/268">GH#268</a>: Crash when moving an element to another document with
-<tt class="docutils literal">Element.insert()</tt>.
-Patch by Alexander Weggerle.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id45">
-<h1>4.2.3 (2018-06-27)</h1>
-<div class="section" id="id46">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Reverted <a class="reference external" href="https://github.com/lxml/lxml/issues/265">GH#265</a>: lxml links against zlib as a shared library again.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id47">
-<h1>4.2.2 (2018-06-22)</h1>
-<div class="section" id="id48">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/266">GH#266</a>: Fix sporadic crash during GC when parse-time schema validation is used
-and the parser participates in a reference cycle.
-Original patch by Julien Greard.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/265">GH#265</a>: lxml no longer links against zlib as a shared library, only on static builds.
-Patch by Nehal J Wani.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id50">
-<h1>4.2.1 (2018-03-21)</h1>
-<div class="section" id="id51">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1755825">LP#1755825</a>: <tt class="docutils literal">iterwalk()</tt> failed to return the 'start' event for the initial
-element if a tag selector is used.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1756314">LP#1756314</a>: Failure to import 4.2.0 into PyPy due to a missing library symbol.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1727864">LP#1727864</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/258">GH#258</a>: Add "-isysroot" linker option on MacOS as needed by XCode 9.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id52">
-<h1>4.2.0 (2018-03-13)</h1>
-<div class="section" id="id53">
-<h2>Features added</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/255">GH#255</a>: <tt class="docutils literal">SelectElement.value</tt> returns more standard-compliant and
-browser-like defaults for non-multi-selects. If no option is selected, the
-value of the first option is returned (instead of None). If multiple options
-are selected, the value of the last one is returned (instead of that of the
-first one). If no options are present (not standard-compliant)
-<tt class="docutils literal">SelectElement.value</tt> still returns <tt class="docutils literal">None</tt>.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/261">GH#261</a>: The <tt class="docutils literal">HTMLParser()</tt> now supports the <tt class="docutils literal">huge_tree</tt> option.
-Patch by stranac.</li>
-</ul>
-</div>
-<div class="section" id="id54">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: Some XSLT messages were not captured by the transform error log.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1737825">LP#1737825</a>: Crash at shutdown after an interrupted iterparse run with XMLSchema
-validation.</li>
-</ul>
-</div>
-<div class="section" id="id55">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id56">
-<h1>4.1.1 (2017-11-04)</h1>
-<ul class="simple">
-<li>Rebuild with Cython 0.27.3 to improve support for Py3.7.</li>
-</ul>
-</div>
-<div class="section" id="id57">
-<h1>4.1.0 (2017-10-13)</h1>
-<div class="section" id="id58">
-<h2>Features added</h2>
-<ul class="simple">
-<li>ElementPath supports text predicates for current node, like "[.='text']".</li>
-<li>ElementPath allows spaces in predicates.</li>
-<li>Custom Element classes and XPath functions can now be registered with a
-decorator rather than explicit dict assignments.</li>
-<li>Static Linux wheels are now built with link time optimisation (LTO) enabled.
-This should have a beneficial impact on the overall performance by providing
-a tighter compiler integration between lxml and libxml2/libxslt.</li>
-</ul>
-</div>
-<div class="section" id="id59">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1722776">LP#1722776</a>: Requesting non-Element objects like comments from a document with
-<tt class="docutils literal">PythonElementClassLookup</tt> could fail with a TypeError.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id60">
-<h1>4.0.0 (2017-09-17)</h1>
-<div class="section" id="id61">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The ElementPath implementation is now compiled using Cython,
-which speeds up the <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods quite significantly.</li>
-<li>The modules <tt class="docutils literal">lxml.builder</tt>, <tt class="docutils literal">lxml.html.diff</tt> and <tt class="docutils literal">lxml.html.clean</tt>
-are also compiled using Cython in order to speed them up.</li>
-<li><tt class="docutils literal">xmlfile()</tt> supports async coroutines using <tt class="docutils literal">async with</tt> and <tt class="docutils literal">await</tt>.</li>
-<li><tt class="docutils literal">iterwalk()</tt> has a new method <tt class="docutils literal">skip_subtree()</tt> that prevents walking into
-the descendants of the current element.</li>
-<li><tt class="docutils literal">RelaxNG.from_rnc_string()</tt> accepts a <tt class="docutils literal">base_url</tt> argument to
-allow relative resource lookups.</li>
-<li>The XSLT result object has a new method <tt class="docutils literal">.write_output(file)</tt> that serialises
-output data into a file according to the <tt class="docutils literal"><xsl:output></tt> configuration.</li>
-</ul>
-</div>
-<div class="section" id="id62">
-<h2>Bugs fixed</h2>
-<ul>
-<li><p class="first"><a class="reference external" href="https://github.com/lxml/lxml/issues/251">GH#251</a>: HTML comments were handled incorrectly by the soupparser.
-Patch by mozbugbox.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1654544">LP#1654544</a>: The html5parser no longer passes the <tt class="docutils literal">useChardet</tt> option
-if the input is a Unicode string, unless explicitly requested. When parsing
-files, the default is to enable it when a URL or file path is passed (because
-the file is then opened in binary mode), and to disable it when reading from
-a file(-like) object.</p>
-<p>Note: This is a backwards incompatible change of the default configuration.
-If your code parses byte strings/streams and depends on character detection,
-please pass the option <tt class="docutils literal">guess_charset=True</tt> explicitly, which already worked
-in older lxml versions.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1703810">LP#1703810</a>: <tt class="docutils literal">etree.fromstring()</tt> failed to parse UTF-32 data with BOM.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1526522">LP#1526522</a>: Some RelaxNG errors were not reported in the error log.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1567526">LP#1567526</a>: Empty and plain text input raised a TypeError in soupparser.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1710429">LP#1710429</a>: Uninitialised variable usage in HTML diff.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1415643">LP#1415643</a>: The closing tags context manager in <tt class="docutils literal">xmlfile()</tt> could continue
-to output end tags even after writing failed with an exception.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1465357">LP#1465357</a>: <tt class="docutils literal">xmlfile.write()</tt> now accepts and ignores None as input argument.</p>
-</li>
-<li><p class="first">Compilation under Py3.7-pre failed due to a modified function signature.</p>
-</li>
-</ul>
-</div>
-<div class="section" id="id63">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The main module source files were renamed from <tt class="docutils literal"><span class="pre">lxml.*.pyx</span></tt> to plain
-<tt class="docutils literal">*.pyx</tt> (e.g. <tt class="docutils literal">etree.pyx</tt>) to simplify their handling in the build
-process. Care was taken to keep the old header files as fallbacks for
-code that compiles against the public C-API of lxml, but it might still
-be worth validating that third-party code does not notice this change.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id64">
-<h1>3.8.0 (2017-06-03)</h1>
-<div class="section" id="id65">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">ElementTree.write()</tt> has a new option <tt class="docutils literal">doctype</tt> that writes out a
-doctype string before the serialisation, in the same way as <tt class="docutils literal">tostring()</tt>.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/220">GH#220</a>: <tt class="docutils literal">xmlfile</tt> allows switching output methods at an element level.
-Patch by Burak Arslan.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1595781">LP#1595781</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/240">GH#240</a>: added a PyCapsule Python API and C-level API for
-passing externally generated libxml2 documents into lxml.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/244">GH#244</a>: error log entries have a new property <tt class="docutils literal">path</tt> with an XPath
-expression (if known, None otherwise) that points to the tree element
-responsible for the error. Patch by Bob Kline.</li>
-<li>The namespace prefix mapping that can be used in ElementPath now injects
-a default namespace when passing a None prefix.</li>
-</ul>
-</div>
-<div class="section" id="id66">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/238">GH#238</a>: Character escapes were not hex-encoded in the <tt class="docutils literal">xmlfile</tt> serialiser.
-Patch by matejcik.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/229">GH#229</a>: fix for externally created XML documents. Patch by Theodore Dubois.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1665241">LP#1665241</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/228">GH#228</a>: Form data handling in lxml.html no longer strips the
-option values specified in form attributes but only the text values.
-Patch by Ashish Kulkarni.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: revert previous fix for XSLT error logging as it breaks
-multi-threaded XSLT processing.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1673355">LP#1673355</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/233">GH#233</a>: <tt class="docutils literal">fromstring()</tt> html5parser failed to parse byte strings.</li>
-</ul>
-</div>
-<div class="section" id="id68">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The previously undocumented <tt class="docutils literal">docstring</tt> option in <tt class="docutils literal">ElementTree.write()</tt>
-produces a deprecation warning and will eventually be removed.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id69">
-<h1>3.7.4 (2017-??-??)</h1>
-<div class="section" id="id70">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: revert previous fix for XSLT error logging as it breaks
-multi-threaded XSLT processing.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1673355">LP#1673355</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/233">GH#233</a>: <tt class="docutils literal">fromstring()</tt> html5parser failed to parse byte strings.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id74">
-<h1>3.7.3 (2017-02-18)</h1>
-<div class="section" id="id75">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/218">GH#218</a> was ineffective in Python 3.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/222">GH#222</a>: <tt class="docutils literal">lxml.html.submit_form()</tt> failed in Python 3.
-Patch by Jakub Wilk.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id76">
-<h1>3.7.2 (2017-01-08)</h1>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/220">GH#220</a>: <tt class="docutils literal">xmlfile</tt> allows switching output methods at an element level.
-Patch by Burak Arslan.</li>
-</ul>
-<div class="section" id="id78">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Work around installation problems in recent Python 2.7 versions
-due to FTP download failures.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/219">GH#219</a>: <tt class="docutils literal">xmlfile.element()</tt> was not properly quoting attribute values.
-Patch by Burak Arslan.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/218">GH#218</a>: <tt class="docutils literal">xmlfile.element()</tt> was not properly escaping text content of
-script/style tags. Patch by Burak Arslan.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id80">
-<h1>3.7.1 (2016-12-23)</h1>
-<ul class="simple">
-<li>No source changes, issued only to solve problems with the
-binary packages released for 3.7.0.</li>
-</ul>
-</div>
-<div class="section" id="id81">
-<h1>3.7.0 (2016-12-10)</h1>
-<div class="section" id="id82">
-<h2>Features added</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/217">GH#217</a>: <tt class="docutils literal">XMLSyntaxError</tt> now behaves more like its <tt class="docutils literal">SyntaxError</tt>
-baseclass. Patch by Philipp A.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/216">GH#216</a>: <tt class="docutils literal">HTMLParser()</tt> now supports the same <tt class="docutils literal">collect_ids</tt> parameter
-as <tt class="docutils literal">XMLParser()</tt>. Patch by Burak Arslan.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/210">GH#210</a>: Allow specifying a serialisation method in <tt class="docutils literal">xmlfile.write()</tt>.
-Patch by Burak Arslan.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/203">GH#203</a>: New option <tt class="docutils literal">default_doctype</tt> in <tt class="docutils literal">HTMLParser</tt> that allows
-disabling the automatic doctype creation. Patch by Shadab Zafar.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/201">GH#201</a>: Calling the method <tt class="docutils literal"><span class="pre">.set('attrname')</span></tt> without value argument
-(or <tt class="docutils literal">None</tt>) on HTML elements creates an attribute without value that
-serialises like <tt class="docutils literal"><div <span class="pre">attrname></div></span></tt>. Patch by Daniel Holth.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/197">GH#197</a>: Ignore form input fields in <tt class="docutils literal">form_values()</tt> when they are
-marked as <tt class="docutils literal">disabled</tt> in HTML. Patch by Kristian Klemon.</li>
-</ul>
-</div>
-<div class="section" id="id83">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/206">GH#206</a>: File name and line number were missing from XSLT error messages.
-Patch by Marcus Brinkmann.</li>
-</ul>
-</div>
-<div class="section" id="id84">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Log entries no longer allow anything but plain string objects as message text
-and file name.</li>
-<li><tt class="docutils literal">zlib</tt> is included in the list of statically built libraries.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id85">
-<h1>3.6.4 (2016-08-20)</h1>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/204">GH#204</a>, <a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1614693">LP#1614693</a>: build fix for MacOS-X.</li>
-</ul>
-</div>
-<div class="section" id="id86">
-<h1>3.6.3 (2016-08-18)</h1>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1614603">LP#1614603</a>: change linker flags to build multi-linux wheels</li>
-</ul>
-</div>
-<div class="section" id="id87">
-<h1>3.6.2 (2016-08-18)</h1>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1614603">LP#1614603</a>: release without source changes to provide cleanly built Linux wheels</li>
-</ul>
-</div>
-<div class="section" id="id89">
-<h1>3.6.1 (2016-07-24)</h1>
-<div class="section" id="id90">
-<h2>Features added</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/180">GH#180</a>: Separate option <tt class="docutils literal">inline_style</tt> for Cleaner that only removes <tt class="docutils literal">style</tt>
-attributes instead of all styles. Patch by Christian Pedersen.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/196">GH#196</a>: Windows build support for Python 3.5. Contribution by Maximilian Hils.</li>
-</ul>
-</div>
-<div class="section" id="id91">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/199">GH#199</a>: Exclude <tt class="docutils literal">file</tt> fields from <tt class="docutils literal">FormElement.form_values</tt> (as browsers do).
-Patch by Tomas Divis.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/198">GH#198</a>, <a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1568167">LP#1568167</a>: Try to provide base URL from <tt class="docutils literal">Resolver.resolve_string()</tt>.
-Patch by Michael van Tellingen.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/191">GH#191</a>: More accurate float serialisation in <tt class="docutils literal">objectify.FloatElement</tt>.
-Patch by Holger Joukl.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: Repair XSLT error logging. Patch by Marcus Brinkmann.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id93">
-<h1>3.6.0 (2016-03-17)</h1>
-<div class="section" id="id94">
-<h2>Features added</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/187">GH#187</a>: Now supports (only) version 5.x and later of PyPy.
-Patch by Armin Rigo.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/181">GH#181</a>: Direct support for <tt class="docutils literal">.rnc</tt> files in <cite>RelaxNG()</cite> if <tt class="docutils literal">rnc2rng</tt>
-is installed. Patch by Dirkjan Ochtman.</li>
-</ul>
-</div>
-<div class="section" id="id95">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/189">GH#189</a>: Static builds honour FTP proxy configurations when downloading
-the external libs. Patch by Youhei Sakurai.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/186">GH#186</a>: Soupparser failed to process entities in Python 3.x.
-Patch by Duncan Morris.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/185">GH#185</a>: Rare encoding related <tt class="docutils literal">TypeError</tt> on import was fixed.
-Patch by Petr Demin.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id96">
-<h1>3.5.0 (2015-11-13)</h1>
-<div class="section" id="id97">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Unicode string results failed XPath queries in PyPy.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1497051">LP#1497051</a>: HTML target parser failed to terminate on exceptions
-and continued parsing instead.</li>
-<li>Deprecated API usage in doctestcompare.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="b1-2015-09-18">
-<h1>3.5.0b1 (2015-09-18)</h1>
-<div class="section" id="id98">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">keep_ns_prefixes</tt>
-that does not remove definitions of the provided prefix-namespace
-mapping from the tree.</li>
-<li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">top_nsmap</tt> that
-moves definitions of the provided prefix-namespace mapping to the
-top of the tree.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1490451">LP#1490451</a>: <tt class="docutils literal">Element</tt> objects gained a <tt class="docutils literal">cssselect()</tt> method as
-known from <tt class="docutils literal">lxml.html</tt>. Patch by Simon Sapin.</li>
-<li>API functions and methods behave and look more like Python functions,
-which allows introspection on them etc. One side effect to be aware of
-is that the functions now bind as methods when assigned to a class
-variable. A quick fix is to wrap them in <tt class="docutils literal">staticmethod()</tt> (as for
-normal Python functions).</li>
-<li>ISO-Schematron support gained an option <tt class="docutils literal">error_finder</tt> that allows
-passing a filter function for picking validation errors from reports.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1243600">LP#1243600</a>: Elements in <tt class="docutils literal">lxml.html</tt> gained a <tt class="docutils literal">classes</tt> property
-that provides a set-like interface to the <tt class="docutils literal">class</tt> attribute.
-Original patch by masklinn.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1341964">LP#1341964</a>: The soupparser now handles DOCTYPE declarations, comments
-and processing instructions outside of the root element.
-Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421512">LP#1421512</a>: The <tt class="docutils literal">docinfo</tt> of a tree was made editable to allow
-setting and removing the public ID and system ID of the DOCTYPE.
-Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1442427">LP#1442427</a>: More work-arounds for quirks and bugs in pypy and pypy3.</li>
-<li><tt class="docutils literal">lxml.html.soupparser</tt> now uses BeautifulSoup version 4 instead
-of version 3 if available.</li>
-</ul>
-</div>
-<div class="section" id="id99">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory errors that occur during tree adaptations (e.g. moving subtrees
-to foreign documents) could leave the tree in a crash prone state.</li>
-<li>Calling <tt class="docutils literal">process_children()</tt> in an XSLT extension element without
-an <tt class="docutils literal">output_parent</tt> argument failed with a <tt class="docutils literal">TypeError</tt>.
-Fix by Jens Tröger.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/162">GH#162</a>: Image data in HTML <tt class="docutils literal">data</tt> URLs is considered safe and
-no longer removed by <tt class="docutils literal">lxml.html.clean</tt> JavaScript cleaner.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/166">GH#166</a>: Static build could link libraries in wrong order.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/172">GH#172</a>: Rely a bit more on libxml2 for encoding detection rather than
-rolling our own in some cases. Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/159">GH#159</a>: Validity checks for names and string content were tightened
-to detect the use of illegal characters early. Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421921">LP#1421921</a>: Comments/PIs before the DOCTYPE declaration were not
-serialised. Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/659367">LP#659367</a>: Some HTML DOCTYPE declarations were not serialised.
-Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238503">LP#1238503</a>: lxml.doctestcompare is now consistent with stdlib's doctest
-in how it uses <tt class="docutils literal">+</tt> and <tt class="docutils literal">-</tt> to refer to unexpected and missing output.</li>
-<li>Empty prefixes are explicitly rejected when a namespace mapping is used
-with ElementPath to avoid hiding bugs in user code.</li>
-<li>Several problems with PyPy were fixed by switching to Cython 0.23.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id100">
-<h1>3.4.4 (2015-04-25)</h1>
-<div class="section" id="id101">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>An ElementTree compatibility test added in lxml 3.4.3 that failed in
-Python 3.4+ was removed again.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id102">
-<h1>3.4.3 (2015-04-15)</h1>
-<div class="section" id="id103">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Expression cache in ElementPath was ignored. Fix by Changaco.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1426868">LP#1426868</a>: Passing a default namespace and a prefixed namespace mapping
-as nsmap into <tt class="docutils literal">xmlfile.element()</tt> raised a <tt class="docutils literal">TypeError</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421927">LP#1421927</a>: DOCTYPE system URLs were incorrectly quoted when containing
-double quotes. Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1419354">LP#1419354</a>: meta-redirect URLs were incorrectly processed by
-<tt class="docutils literal">iterlinks()</tt> if preceded by whitespace.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id104">
-<h1>3.4.2 (2015-02-07)</h1>
-<div class="section" id="id105">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1415907">LP#1415907</a>: Crash when creating an XMLSchema from a non-root element
-of an XML document.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1369362">LP#1369362</a>: HTML cleaning failed when hitting processing instructions
-with pseudo-attributes.</li>
-<li><tt class="docutils literal">CDATA()</tt> wrapped content was rejected for tail text.</li>
-<li>CDATA sections were not serialised as tail text of the top-level element.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id106">
-<h1>3.4.1 (2014-11-20)</h1>
-<div class="section" id="id107">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New <tt class="docutils literal">htmlfile</tt> HTML generator to accompany the incremental <tt class="docutils literal">xmlfile</tt>
-serialisation API. Patch by Burak Arslan.</li>
-</ul>
-</div>
-<div class="section" id="id108">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.sax.ElementTreeContentHandler</tt> did not initialise its superclass.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id109">
-<h1>3.4.0 (2014-09-10)</h1>
-<div class="section" id="id110">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">xmlfile(buffered=False)</tt> disables output buffering and flushes the
-content after each API operation (starting/ending element blocks or writes).
-A new method <tt class="docutils literal">xf.flush()</tt> can alternatively be used to explicitly flush
-the output.</li>
-<li><tt class="docutils literal">lxml.html.document_fromstring</tt> has a new option <tt class="docutils literal">ensure_head_body=True</tt>
-which will add an empty head and/or body element to the result document if
-missing.</li>
-<li><tt class="docutils literal">lxml.html.iterlinks</tt> now returns links inside meta refresh tags.</li>
-<li>New <tt class="docutils literal">XMLParser</tt> option <tt class="docutils literal">collect_ids=False</tt> to disable ID hash table
-creation. This can substantially speed up parsing of documents with many
-different IDs that are not used.</li>
-<li>The parser uses per-document hash tables for XML IDs. This reduces the
-load of the global parser dict and speeds up parsing for documents with
-many different IDs.</li>
-<li><tt class="docutils literal">ElementTree.getelementpath(element)</tt> returns a structural ElementPath
-expression for the given element, which can be used for lookups later.</li>
-<li><tt class="docutils literal">xmlfile()</tt> accepts a new argument <tt class="docutils literal">close=True</tt> to close file(-like)
-objects after writing to them. Before, <tt class="docutils literal">xmlfile()</tt> only closed the file
-if it had opened it internally.</li>
-<li>Allow "bytearray" type for ASCII text input.</li>
-</ul>
-</div>
-<div class="section" id="id111">
-<h2>Bugs fixed</h2>
-</div>
-<div class="section" id="id112">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/400588">LP#400588</a>: decoding errors have become hard errors even in recovery mode.
-Previously, they could lead to an internal tree representation in a mixed
-encoding state, which lead to very late errors or even silently incorrect
-behaviour during tree traversal or serialisation.</li>
-<li>Requires Python 2.6, 2.7, 3.2 or later. No longer supports
-Python 2.4, 2.5 and 3.1, use lxml 3.3.x for those.</li>
-<li>Requires libxml2 2.7.0 or later and libxslt 1.1.23 or later,
-use lxml 3.3.x with older versions.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id113">
-<h1>3.3.6 (2014-08-28)</h1>
-<div class="section" id="id114">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Prevent tree cycle creation when adding Elements as siblings.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1361948">LP#1361948</a>: crash when deallocating Element siblings without parent.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1354652">LP#1354652</a>: crash when traversing internally loaded documents in XSLT
-extension functions.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id115">
-<h1>3.3.5 (2014-04-18)</h1>
-<div class="section" id="id116">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>HTML cleaning could fail to strip javascript links that mix control
-characters into the link scheme.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id117">
-<h1>3.3.4 (2014-04-03)</h1>
-<div class="section" id="id118">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Source line numbers above 65535 are available on Elements when
-using libxml2 2.9 or later.</li>
-</ul>
-</div>
-<div class="section" id="id119">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.fragment_fromstring()</tt> failed for bytes input in Py3.</li>
-</ul>
-</div>
-<div class="section" id="id120">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id121">
-<h1>3.3.3 (2014-03-04)</h1>
-<div class="section" id="id122">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1287118">LP#1287118</a>: Crash when using Element subtypes with <tt class="docutils literal">__slots__</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id123">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The internal classes <tt class="docutils literal">_LogEntry</tt> and <tt class="docutils literal">_Attrib</tt> can no longer be
-subclassed from Python code.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id124">
-<h1>3.3.2 (2014-02-26)</h1>
-<div class="section" id="id125">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The properties <tt class="docutils literal">resolvers</tt> and <tt class="docutils literal">version</tt>, as well as the methods
-<tt class="docutils literal">set_element_class_lookup()</tt> and <tt class="docutils literal">makeelement()</tt>, were lost from
-<tt class="docutils literal">iterparse</tt> objects in 3.3.0.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1222132">LP#1222132</a>: instances of <tt class="docutils literal">XMLSchema</tt>, <tt class="docutils literal">Schematron</tt> and <tt class="docutils literal">RelaxNG</tt>
-did not clear their local <tt class="docutils literal">error_log</tt> before running a validation.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238500">LP#1238500</a>: lxml.doctestcompare mixed up "expected" and "actual" in
-attribute values.</li>
-<li>Some file I/O tests were failing in MS-Windows due to non-portable temp
-file usage. Initial patch by Gabi Davar.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/910014">LP#910014</a>: duplicate IDs in a document were not reported by DTD validation.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185332">LP#1185332</a>: <tt class="docutils literal"><span class="pre">tostring(method="html")</span></tt> did not use HTML serialisation
-semantics for trailing tail text. Initial patch by Sylvain Viollon.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1281139">LP#1281139</a>: <tt class="docutils literal">.attrib</tt> value of Comments lost its mutation methods
-in 3.3.0. Even though it is empty and immutable, it should still
-provide the same interface as that returned for Elements.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id126">
-<h1>3.3.1 (2014-02-12)</h1>
-<div class="section" id="id127">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id128">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1014290">LP#1014290</a>: HTML documents parsed with <tt class="docutils literal">parser.feed()</tt> failed to find
-elements during tag iteration.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1273709">LP#1273709</a>: Building in PyPy failed due to missing support for
-<tt class="docutils literal">PyUnicode_Compare()</tt> and <tt class="docutils literal"><span class="pre">PyByteArray_*()</span></tt> in PyPy's C-API.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274413">LP#1274413</a>: Compilation in MSVC failed due to missing "stdint.h" standard
-header file.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274118">LP#1274118</a>: iterparse() failed to parse BOM prefixed files.</li>
-</ul>
-</div>
-<div class="section" id="id129">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id130">
-<h1>3.3.0 (2014-01-26)</h1>
-<div class="section" id="id131">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id132">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The heuristic that distinguishes file paths from URLs was tightened
-to produce less false negatives.</li>
-</ul>
-</div>
-<div class="section" id="id133">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="beta5-2014-01-18">
-<h1>3.3.0beta5 (2014-01-18)</h1>
-<div class="section" id="id134">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The PEP 393 unicode parsing support gained a fallback for wchar strings
-which might still be somewhat common on Windows systems.</li>
-</ul>
-</div>
-<div class="section" id="id135">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Several error handling problems were fixed throughout the code base that
-could previously lead to exceptions being silently swallowed or not
-properly reported.</li>
-<li>The C-API function <tt class="docutils literal">appendChild()</tt> is now deprecated as it does not
-propagate exceptions (its return type is <tt class="docutils literal">void</tt>). The new function
-<tt class="docutils literal">appendChildToElement()</tt> was added as a safe replacement.</li>
-<li>Passing a string into <tt class="docutils literal">fromstringlist()</tt> raises an exception instead of
-parsing the string character by character.</li>
-</ul>
-</div>
-<div class="section" id="id136">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Document cleanup code was simplified using the new GC features in
-Cython 0.20.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta4-2014-01-12">
-<h1>3.3.0beta4 (2014-01-12)</h1>
-<div class="section" id="id137">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id138">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The (empty) value returned by the <tt class="docutils literal">attrib</tt> property of Entity and Comment
-objects was mutable.</li>
-<li>Element class lookup wasn't available for the new pull parsers or when using
-a custom parser target.</li>
-<li>Setting Element attributes on instantiation with both the <tt class="docutils literal">attrib</tt> argument
-and keyword arguments could modify the mapping passed as <tt class="docutils literal">attrib</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1266171">LP#1266171</a>: DTDs instantiated from internal/external subsets (i.e. through
-the docinfo property) lost their attribute declarations.</li>
-</ul>
-</div>
-<div class="section" id="id139">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Built with Cython 0.20pre (gitrev 012ae82eb) to prepare support for
-Python 3.4.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta3-2014-01-02">
-<h1>3.3.0beta3 (2014-01-02)</h1>
-<div class="section" id="id140">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Unicode string parsing was optimised for Python 3.3 (PEP 393).</li>
-</ul>
-</div>
-<div class="section" id="id141">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>HTML parsing of Unicode strings could misdecode the input on some platforms.</li>
-<li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
-</ul>
-</div>
-<div class="section" id="id142">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="beta2-2013-12-20">
-<h1>3.3.0beta2 (2013-12-20)</h1>
-<div class="section" id="id143">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">iterparse()</tt> supports the <tt class="docutils literal">recover</tt> option.</li>
-</ul>
-</div>
-<div class="section" id="id144">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in <tt class="docutils literal">iterparse()</tt> for HTML parsing.</li>
-<li>Crash in target parsing with attributes.</li>
-</ul>
-</div>
-<div class="section" id="id145">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The safety check in the read-only tree implementation (e.g. used by
-<tt class="docutils literal">PythonElementClassLookup</tt>) raises a more appropriate <tt class="docutils literal">ReferenceError</tt>
-for illegal access after tree disposal instead of an <tt class="docutils literal">AssertionError</tt>.
-This should only impact test code that specifically checks the original
-behaviour.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2013-12-12">
-<h1>3.3.0beta1 (2013-12-12)</h1>
-<div class="section" id="id146">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New option <tt class="docutils literal">handle_failures</tt> in <tt class="docutils literal">make_links_absolute()</tt> and
-<tt class="docutils literal">resolve_base_href()</tt> (lxml.html) that enables ignoring or
-discarding links that fail to parse as URLs.</li>
-<li>New parser classes <tt class="docutils literal">XMLPullParser</tt> and <tt class="docutils literal">HTMLPullParser</tt> for
-incremental parsing, as implemented for ElementTree in Python 3.4.</li>
-<li><tt class="docutils literal">iterparse()</tt> enables recovery mode by default for HTML parsing
-(<tt class="docutils literal">html=True</tt>).</li>
-</ul>
-</div>
-<div class="section" id="id147">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1255132">LP#1255132</a>: crash when trying to run validation over non-Element (e.g.
-comment or PI).</li>
-<li>Error messages in the log and in exception messages that originated
-from libxml2 could accidentally be picked up from preceding warnings
-instead of the actual error.</li>
-<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify did not accept a dict as
-argument for adding attributes to the element it's building. This
-works as in lxml.builder now.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
-<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
-to one of its own descendants, instead of running into an infinite
-loop.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
-<li>Compressed plain-text serialisation to file-like objects was broken.</li>
-<li>lxml.html.formfill: Fix textarea form filling.
-The textarea used to be cleared before the new content was set,
-which removed the name attribute.</li>
-</ul>
-</div>
-<div class="section" id="id148">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Some basic API classes use freelists internally for faster
-instantiation. This can speed up some <tt class="docutils literal">iterparse()</tt> scenarios,
-for example.</li>
-<li><tt class="docutils literal">iterparse()</tt> was rewritten to use the new <tt class="docutils literal">*PullParser</tt>
-classes internally instead of being a parser itself.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id149">
-<h1>3.2.5 (2014-01-02)</h1>
-<div class="section" id="id150">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id151">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
-<li>Crash in target parsing with attributes.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1255132">LP#1255132</a>: crash when trying to run validation over non-Element (e.g.
-comment or PI).</li>
-</ul>
-</div>
-<div class="section" id="id153">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id154">
-<h1>3.2.4 (2013-11-07)</h1>
-<div class="section" id="id155">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id156">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory leak when creating an XPath evaluator in a thread.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
-<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
-to one of its own descendants.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
-<li>Compressed plain-text serialisation to file-like objects was broken.</li>
-</ul>
-</div>
-<div class="section" id="id159">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id160">
-<h1>3.2.3 (2013-07-28)</h1>
-<div class="section" id="id161">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fix support for Python 2.4 which was lost in 3.2.2.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id162">
-<h1>3.2.2 (2013-07-28)</h1>
-<div class="section" id="id163">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id164">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185701">LP#1185701</a>: spurious XMLSyntaxError after finishing iterparse().</li>
-<li>Crash in lxml.objectify during xsi annotation.</li>
-</ul>
-</div>
-<div class="section" id="id165">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Return values of user provided element class lookup methods are now
-validated against the type of the XML node they represent to prevent
-API class mismatches.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id166">
-<h1>3.2.1 (2013-05-11)</h1>
-<div class="section" id="id167">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The methods <tt class="docutils literal">apply_templates()</tt> and <tt class="docutils literal">process_children()</tt> of XSLT
-extension elements have gained two new boolean options <tt class="docutils literal">elements_only</tt>
-and <tt class="docutils literal">remove_blank_text</tt> that discard either all strings or whitespace-only
-strings from the result list.</li>
-</ul>
-</div>
-<div class="section" id="id168">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>When moving Elements to another tree, the namespace cleanup mechanism
-no longer drops namespace prefixes from attributes for which it finds
-a default namespace declaration, to prevent them from appearing as
-unnamespaced attributes after serialisation.</li>
-<li>Returning non-type objects from a custom class lookup method could lead
-to a crash.</li>
-<li>Instantiating and using subtypes of Comments and ProcessingInstructions
-crashed.</li>
-</ul>
-</div>
-<div class="section" id="id169">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id170">
-<h1>3.2.0 (2013-04-28)</h1>
-<div class="section" id="id171">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id172">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/690319">LP#690319</a>: Leading whitespace could change the behaviour of the string
-parsing functions in <tt class="docutils literal">lxml.html</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/599318">LP#599318</a>: The string parsing functions in <tt class="docutils literal">lxml.html</tt> are more robust
-in the face of uncommon HTML content like framesets or missing body tags.
-Patch by Stefan Seelmann.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/712941">LP#712941</a>: I/O errors while trying to access files with paths that contain
-non-ASCII characters could raise <tt class="docutils literal">UnicodeDecodeError</tt> instead of properly
-reporting the <tt class="docutils literal">IOError</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/673205">LP#673205</a>: Parsing from in-memory strings disabled network access in the
-default parser and made subsequent attempts to parse from a URL fail.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/971754">LP#971754</a>: lxml.html.clean appends 'nofollow' to 'rel' attributes instead
-of overwriting the current value.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/715687">LP#715687</a>: lxml.html.clean no longer discards scripts that are explicitly
-allowed by the user provided whitelist. Patch by Christine Koppelt.</li>
-</ul>
-</div>
-<div class="section" id="id173">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id174">
-<h1>3.1.2 (2013-04-12)</h1>
-<div class="section" id="id175">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id176">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1136509">LP#1136509</a>: Passing attributes through the namespace-unaware API of
-the sax bridge (i.e. the <tt class="docutils literal">handler.startElement()</tt> method) failed
-with a <tt class="docutils literal">TypeError</tt>. Patch by Mike Bayer.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1123074">LP#1123074</a>: Fix serialisation error in XSLT output when converting
-the result tree to a Unicode string.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/105">GH#105</a>: Replace illegal usage of <tt class="docutils literal">xmlBufLength()</tt> in libxml2 2.9.0
-by properly exported API function <tt class="docutils literal">xmlBufUse()</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id177">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id178">
-<h1>3.1.1 (2013-03-29)</h1>
-<div class="section" id="id179">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id180">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1160386">LP#1160386</a>: Write access to <tt class="docutils literal">lxml.html.FormElement.fields</tt> raised
-an AttributeError in Py3.</li>
-<li>Illegal memory access during cleanup in incremental xmlfile writer.</li>
-</ul>
-</div>
-<div class="section" id="id181">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The externally useless class <tt class="docutils literal">lxml.etree._BaseParser</tt> was removed
-from the module dict.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id182">
-<h1>3.1.0 (2013-02-10)</h1>
-<div class="section" id="id183">
-<h2>Features added</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/89">GH#89</a>: lxml.html.clean allows overriding the set of attributes that it
-considers 'safe'. Patch by Francis Devereux.</li>
-</ul>
-</div>
-<div class="section" id="id184">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1104370">LP#1104370</a>: <tt class="docutils literal">copy.copy(el.attrib)</tt> raised an exception. It now returns
-a copy of the attributes as a plain Python dict.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/95">GH#95</a>: When used with namespace prefixes, the <tt class="docutils literal"><span class="pre">el.find*()</span></tt> methods
-always used the first namespace mapping that was provided for each
-path expression instead of using the one that was actually passed
-in for the current run.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1092521">LP#1092521</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/91">GH#91</a>: Fix undefined C symbol in Python runtimes compiled
-without threading support. Patch by Ulrich Seidl.</li>
-</ul>
-</div>
-<div class="section" id="id185">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="beta1-2012-12-21">
-<h1>3.1beta1 (2012-12-21)</h1>
-<div class="section" id="id186">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New build-time option <tt class="docutils literal"><span class="pre">--with-unicode-strings</span></tt> for Python 2 that
-makes the API always return Unicode strings for names and text
-instead of byte strings for plain ASCII content.</li>
-<li>New incremental XML file writing API <tt class="docutils literal">etree.xmlfile()</tt>.</li>
-<li>E factory in lxml.objectify is callable to simplify the creation of
-tags with non-identifier names without having to resort to getattr().</li>
-</ul>
-</div>
-<div class="section" id="id187">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>When starting from a non-namespaced element in lxml.objectify, searching
-for a child without explicitly specifying a namespace incorrectly found
-namespaced elements with the requested local name, instead of restricting
-the search to non-namespaced children.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/85">GH#85</a>: Deprecation warnings were fixed for Python 3.x.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/33">GH#33</a>: lxml.html.fromstring() failed to accept bytes input in Py3.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1080792">LP#1080792</a>: Static build of libxml2 2.9.0 failed due to missing file.</li>
-</ul>
-</div>
-<div class="section" id="id188">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The externally useless class <tt class="docutils literal">_ObjectifyElementMakerCaller</tt> was
-removed from the module API of lxml.objectify.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1075622">LP#1075622</a>: lxml.builder is faster for adding text to elements with
-many children. Patch by Anders Hammarquist.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id189">
-<h1>3.0.2 (2012-12-14)</h1>
-<div class="section" id="id190">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id191">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fix crash during interpreter shutdown by switching to Cython 0.17.3 for building.</li>
-</ul>
-</div>
-<div class="section" id="id192">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id193">
-<h1>3.0.1 (2012-10-14)</h1>
-<div class="section" id="id194">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id195">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065924">LP#1065924</a>: Element proxies could disappear during garbage collection
-in PyPy without proper cleanup.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/71">GH#71</a>: Failure to work with libxml2 2.6.x.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065139">LP#1065139</a>: static MacOS-X build failed in Py3.</li>
-</ul>
-</div>
-<div class="section" id="id196">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id197">
-<h1>3.0 (2012-10-08)</h1>
-<div class="section" id="id198">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id199">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>End-of-file handling was incorrect in iterparse() when reading from
-a low-level C file stream and failed in libxml2 2.9.0 due to its
-improved consistency checks.</li>
-</ul>
-</div>
-<div class="section" id="id200">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The build no longer uses Cython by default unless the generated C files
-are missing. To use Cython, pass the option "--with-cython". To ignore
-the fatal build error when Cython is required but not available (e.g. to
-run special setup.py commands that do not actually run a build), pass
-"--without-cython".</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2012-09-26">
-<h1>3.0beta1 (2012-09-26)</h1>
-<div class="section" id="id201">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Python level access to (optional) libxml2 memory debugging features
-to simplify debugging of memory leaks etc.</li>
-</ul>
-</div>
-<div class="section" id="id202">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fix a memory leak in XPath by switching to Cython 0.17.1.</li>
-<li>Some tests were adapted to work with PyPy.</li>
-</ul>
-</div>
-<div class="section" id="id203">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The code was adapted to work with the upcoming libxml2 2.9.0 release.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="alpha2-2012-08-23">
-<h1>3.0alpha2 (2012-08-23)</h1>
-<div class="section" id="id204">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The <tt class="docutils literal">.iter()</tt> method of elements now accepts <tt class="docutils literal">tag</tt> arguments like
-<tt class="docutils literal"><span class="pre">"{*}name"</span></tt> to search for elements with a given local name in any
-namespace. With this addition, all combinations of wildcards now work
-as expected:
-<tt class="docutils literal">"{ns}name"</tt>, <tt class="docutils literal"><span class="pre">"{}name"</span></tt>, <tt class="docutils literal"><span class="pre">"{*}name"</span></tt>, <tt class="docutils literal"><span class="pre">"{ns}*"</span></tt>, <tt class="docutils literal"><span class="pre">"{}*"</span></tt>
-and <tt class="docutils literal"><span class="pre">"{*}*"</span></tt>. Note that <tt class="docutils literal">"name"</tt> is equivalent to <tt class="docutils literal"><span class="pre">"{}name"</span></tt>,
-but <tt class="docutils literal">"*"</tt> is <tt class="docutils literal"><span class="pre">"{*}*"</span></tt>.
-The same change applies to the <tt class="docutils literal">.getiterator()</tt>, <tt class="docutils literal">.itersiblings()</tt>,
-<tt class="docutils literal">.iterancestors()</tt>, <tt class="docutils literal">.iterdescendants()</tt>, <tt class="docutils literal">.iterchildren()</tt>
-and <tt class="docutils literal">.itertext()</tt> methods;the <tt class="docutils literal">strip_attributes()</tt>,
-<tt class="docutils literal">strip_elements()</tt> and <tt class="docutils literal">strip_tags()</tt> functions as well as the
-<tt class="docutils literal">iterparse()</tt> class. Patch by Simon Sapin.</li>
-<li>C14N allows specifying the inclusive prefixes to be promoted
-to top-level during exclusive serialisation.</li>
-</ul>
-</div>
-<div class="section" id="id205">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Passing long Unicode strings into the <tt class="docutils literal">feed()</tt> parser interface
-failed to read the entire string.</li>
-</ul>
-</div>
-<div class="section" id="id206">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="alpha1-2012-07-31">
-<h1>3.0alpha1 (2012-07-31)</h1>
-<div class="section" id="id207">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Initial support for building in PyPy (through cpyext).</li>
-<li>DTD objects gained an API that allows read access to their
-declarations.</li>
-<li><tt class="docutils literal">xpathgrep.py</tt> gained support for parsing line-by-line (e.g.
-from grep output) and for surrounding the output with a new root
-tag.</li>
-<li><tt class="docutils literal"><span class="pre">E-factory</span></tt> in <tt class="docutils literal">lxml.builder</tt> accepts subtypes of known data
-types (such as string subtypes) when building elements around them.</li>
-<li>Tree iteration and <tt class="docutils literal">iterparse()</tt> with a selective <tt class="docutils literal">tag</tt>
-argument supports passing a set of tags. Tree nodes will be
-returned by the iterators if they match any of the tags.</li>
-</ul>
-</div>
-<div class="section" id="id208">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods in <tt class="docutils literal">lxml.objectify</tt> no longer use XPath
-internally, which makes them faster in many cases (especially when
-short circuiting after a single or couple of elements) and fixes
-some behavioural differences compared to <tt class="docutils literal">lxml.etree</tt>. Note that
-this means that they no longer support arbitrary XPath expressions
-but only the subset that the <tt class="docutils literal">ElementPath</tt> language supports.
-The previous implementation was also redundant with the normal
-XPath support, which can be used as a replacement.</li>
-<li><tt class="docutils literal"><span class="pre">el.find('*')</span></tt> could accidentally return a comment or processing
-instruction that happened to be in the wrong spot. (Same for the
-other <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods.)</li>
-<li>The error logging is less intrusive and avoids a global setup where
-possible.</li>
-<li>Fixed undefined names in html5lib parser.</li>
-<li><tt class="docutils literal">xpathgrep.py</tt> did not work in Python 3.</li>
-<li><tt class="docutils literal">Element.attrib.update()</tt> did not accept an <tt class="docutils literal">attrib</tt> of
-another Element as parameter.</li>
-<li>For subtypes of <tt class="docutils literal">ElementBase</tt> that make the <tt class="docutils literal">.text</tt> or <tt class="docutils literal">.tail</tt>
-properties immutable (as in objectify, for example), inserting text
-when creating Elements through the E-Factory feature of the class
-constructor would fail with an exception, stating that the text
-cannot be modified.</li>
-</ul>
-</div>
-<div class="section" id="id209">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The code base was overhauled to properly use 'const' where the API
-of libxml2 and libxslt requests it. This also has an impact on the
-public C-API of lxml itself, as defined in <tt class="docutils literal">etreepublic.pxd</tt>, as
-well as the provided declarations in the <tt class="docutils literal">lxml/includes/</tt> directory.
-Code that uses these declarations may have to be adapted. On the
-plus side, this fixes several C compiler warnings, also for user
-code, thus making it easier to spot real problems again.</li>
-<li>The functionality of "lxml.cssselect" was moved into a separate PyPI
-package called "cssselect". To continue using it, you must install
-that package separately. The "lxml.cssselect" module is still
-available and provides the same interface, provided the "cssselect"
-package can be imported at runtime.</li>
-<li>Element attributes passed in as an <tt class="docutils literal">attrib</tt> dict or as keyword
-arguments are now sorted by (namespaced) name before being created
-to make their order predictable for serialisation and iteration.
-Note that adding or deleting attributes afterwards does not take
-that order into account, i.e. setting a new attribute appends it
-after the existing ones.</li>
-<li>Several classes that are for internal use only were removed
-from the <tt class="docutils literal">lxml.etree</tt> module dict:
-<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ResolverContext, _BaseContext,
-_ExsltRegExp, _IterparseContext, _TempStore, _ExceptionContext,
-__ContentOnlyElement, _AttribIterator, _NamespaceRegistry,
-_ClassNamespaceRegistry, _FunctionNamespaceRegistry,
-_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
-_FileReaderContext, _ParserContext, _PythonSaxParserTarget,
-_TargetParserContext, _ReadOnlyProxy, _ReadOnlyPIProxy,
-_ReadOnlyEntityProxy, _ReadOnlyElementProxy, _OpaqueNodeWrapper,
-_OpaqueDocumentWrapper, _ModifyContentOnlyProxy,
-_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
-_AppendOnlyElementProxy, _SaxParserContext, _FilelikeWriter,
-_ParserSchemaValidationContext, _XPathContext,
-_XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam</tt></li>
-<li>Several internal classes can no longer be inherited from:
-<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ExsltRegExp, _ElementUnicodeResult,
-_IterparseContext, _TempStore, _AttribIterator, _ClassNamespaceRegistry,
-_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
-_FileReaderContext, _PythonSaxParserTarget, _TargetParserContext,
-_ReadOnlyPIProxy, _ReadOnlyEntityProxy, _OpaqueDocumentWrapper,
-_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
-_AppendOnlyElementProxy, _FilelikeWriter, _ParserSchemaValidationContext,
-_XPathContext, _XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam,
-_XSLTResultTree, _XSLTProcessingInstruction</tt></li>
-</ul>
-</div>
-</div>
-<div class="section" id="id210">
-<h1>2.3.6 (2012-09-28)</h1>
-<div class="section" id="id211">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id212">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Passing long Unicode strings into the <tt class="docutils literal">feed()</tt> parser interface
-failed to read the entire string.</li>
-</ul>
-</div>
-<div class="section" id="id213">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id214">
-<h1>2.3.5 (2012-07-31)</h1>
-<div class="section" id="id215">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id216">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when merging text nodes in <tt class="docutils literal">element.remove()</tt>.</li>
-<li>Crash in sax/target parser when reporting empty doctype.</li>
-</ul>
-</div>
-<div class="section" id="id217">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id218">
-<h1>2.3.4 (2012-03-26)</h1>
-<div class="section" id="id219">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id220">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when building an nsmap (Element property) with empty
-namespace URIs.</li>
-<li>Crash due to race condition when errors (or user messages) occur
-during threaded XSLT processing.</li>
-<li>XSLT stylesheet compilation could ignore compilation errors.</li>
-</ul>
-</div>
-<div class="section" id="id221">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id222">
-<h1>2.3.3 (2012-01-04)</h1>
-<div class="section" id="id223">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.tostring()</tt> gained new serialisation options
-<tt class="docutils literal">with_tail</tt> and <tt class="docutils literal">doctype</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id224">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fixed a crash when using <tt class="docutils literal">iterparse()</tt> for HTML parsing and
-requesting start events.</li>
-<li>Fixed parsing of more selectors in cssselect. Whitespace before
-pseudo-elements and pseudo-classes is significant as it is a
-descendant combinator.
-"E :pseudo" should parse the same as "E *:pseudo", not "E:pseudo".
-Patch by Simon Sapin.</li>
-<li>lxml.html.diff no longer raises an exception when hitting
-'img' tags without 'src' attribute.</li>
-</ul>
-</div>
-<div class="section" id="id225">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id226">
-<h1>2.3.2 (2011-11-11)</h1>
-<div class="section" id="id227">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.objectify.deannotate()</tt> has a new boolean option
-<tt class="docutils literal">cleanup_namespaces</tt> to remove the objectify namespace
-declarations (and generally clean up the namespace declarations)
-after removing the type annotations.</li>
-<li><tt class="docutils literal">lxml.objectify</tt> gained its own <tt class="docutils literal">SubElement()</tt> function as a
-copy of <tt class="docutils literal">etree.SubElement</tt> to avoid an otherwise redundant import
-of <tt class="docutils literal">lxml.etree</tt> on the user side.</li>
-</ul>
-</div>
-<div class="section" id="id228">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fixed the "descendant" bug in cssselect a second time (after a first
-fix in lxml 2.3.1). The previous change resulted in a serious
-performance regression for the XPath based evaluation of the
-translated expression. Note that this breaks the usage of some of
-the generated XPath expressions as XSLT location paths that
-previously worked in 2.3.1.</li>
-<li>Fixed parsing of some selectors in cssselect. Whitespace after combinators
-">", "+" and "~" is now correctly ignored. Previously it was parsed as
-a descendant combinator. For example, "div> .foo" was parsed the same as
-"div>* .foo" instead of "div>.foo". Patch by Simon Sapin.</li>
-</ul>
-</div>
-<div class="section" id="id229">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id230">
-<h1>2.3.1 (2011-09-25)</h1>
-<div class="section" id="id231">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New option <tt class="docutils literal">kill_tags</tt> in <tt class="docutils literal">lxml.html.clean</tt> to remove specific
-tags and their content (i.e. their whole subtree).</li>
-<li><tt class="docutils literal">pi.get()</tt> and <tt class="docutils literal">pi.attrib</tt> on processing instructions to parse
-pseudo-attributes from the text content of processing instructions.</li>
-<li><tt class="docutils literal">lxml.get_include()</tt> returns a list of include paths that can be
-used to compile external C code against lxml.etree. This is
-specifically required for statically linked lxml builds when code
-needs to compile against the exact same header file versions as lxml
-itself.</li>
-<li><tt class="docutils literal">Resolver.resolve_file()</tt> takes an additional option
-<tt class="docutils literal">close_file</tt> that configures if the file(-like) object will be
-closed after reading or not. By default, the file will be closed,
-as the user is not expected to keep a reference to it.</li>
-</ul>
-</div>
-<div class="section" id="id232">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>HTML cleaning didn't remove 'data:' links.</li>
-<li>The html5lib parser integration now uses the 'official'
-implementation in html5lib itself, which makes it work with newer
-releases of the library.</li>
-<li>In <tt class="docutils literal">lxml.sax</tt>, <tt class="docutils literal">endElementNS()</tt> could incorrectly reject a plain
-tag name when the corresponding start event inferred the same plain
-tag name to be in the default namespace.</li>
-<li>When an open file-like object is passed into <tt class="docutils literal">parse()</tt> or
-<tt class="docutils literal">iterparse()</tt>, the parser will no longer close it after use. This
-reverts a change in lxml 2.3 where all files would be closed. It is
-the users responsibility to properly close the file(-like) object,
-also in error cases.</li>
-<li>Assertion error in lxml.html.cleaner when discarding top-level elements.</li>
-<li>In lxml.cssselect, use the xpath 'A//B' (short for
-'A/descendant-or-self::node()/B') instead of 'A/descendant::B' for
-the css descendant selector ('A B'). This makes a few edge cases
-like <tt class="docutils literal">"div <span class="pre">*:last-child"</span></tt> consistent with the selector behavior in
-WebKit and Firefox, and makes more css expressions valid location
-paths (for use in xsl:template match).</li>
-<li>In lxml.html, non-selected <tt class="docutils literal"><option></tt> tags no longer show up in the
-collected form values.</li>
-<li>Adding/removing <tt class="docutils literal"><option></tt> values to/from a multiple select form
-field properly selects them and unselects them.</li>
-</ul>
-</div>
-<div class="section" id="id233">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Static builds can specify the download directory with the
-<tt class="docutils literal"><span class="pre">--download-dir</span></tt> option.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id234">
-<h1>2.3 (2011-02-06)</h1>
-<div class="section" id="id235">
-<h2>Features added</h2>
-<ul class="simple">
-<li>When looking for children, <tt class="docutils literal">lxml.objectify</tt> takes '{}tag' as
-meaning an empty namespace, as opposed to the parent namespace.</li>
-</ul>
-</div>
-<div class="section" id="id236">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>When finished reading from a file-like object, the parser
-immediately calls its <tt class="docutils literal">.close()</tt> method.</li>
-<li>When finished parsing, <tt class="docutils literal">iterparse()</tt> immediately closes the input
-file.</li>
-<li>Work-around for libxml2 bug that can leave the HTML parser in a
-non-functional state after parsing a severely broken document (fixed
-in libxml2 2.7.8).</li>
-<li><tt class="docutils literal">marque</tt> tag in HTML cleanup code is correctly named <tt class="docutils literal">marquee</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id237">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Some public functions in the Cython-level C-API have more explicit
-return types.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2010-09-06">
-<h1>2.3beta1 (2010-09-06)</h1>
-<div class="section" id="id238">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id239">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in newer libxml2 versions when moving elements between
-documents that had attributes on replaced XInclude nodes.</li>
-<li><tt class="docutils literal">XMLID()</tt> function was missing the optional <tt class="docutils literal">parser</tt> and
-<tt class="docutils literal">base_url</tt> parameters.</li>
-<li>Searching for wildcard tags in <tt class="docutils literal">iterparse()</tt> was broken in Py3.</li>
-<li><tt class="docutils literal">lxml.html.open_in_browser()</tt> didn't work in Python 3 due to the
-use of os.tempnam. It now takes an optional 'encoding' parameter.</li>
-</ul>
-</div>
-<div class="section" id="id240">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="alpha2-2010-07-24">
-<h1>2.3alpha2 (2010-07-24)</h1>
-<div class="section" id="id241">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id242">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in XSLT when generating text-only result documents with a
-stylesheet created in a different thread.</li>
-</ul>
-</div>
-<div class="section" id="id243">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><tt class="docutils literal">repr()</tt> of Element objects shows the hex ID with leading 0x
-(following ElementTree 1.3).</li>
-</ul>
-</div>
-</div>
-<div class="section" id="alpha1-2010-06-19">
-<h1>2.3alpha1 (2010-06-19)</h1>
-<div class="section" id="id244">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Keyword argument <tt class="docutils literal">namespaces</tt> in <tt class="docutils literal">lxml.cssselect.CSSSelector()</tt>
-to pass a prefix-to-namespace mapping for the selector.</li>
-<li>New function <tt class="docutils literal">lxml.etree.register_namespace(prefix, uri)</tt> that
-globally registers a namespace prefix for a namespace that newly
-created Elements in that namespace will use automatically. Follows
-ElementTree 1.3.</li>
-<li>Support 'unicode' string name as encoding parameter in
-<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
-<li>Support 'c14n' serialisation method in <tt class="docutils literal">ElementTree.write()</tt> and
-<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
-<li>The ElementPath expression syntax (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) was extended to
-match the upcoming ElementTree 1.3 that will ship in the standard
-library of Python 3.2/2.7. This includes extended support for
-predicates as well as namespace prefixes (as known from XPath).</li>
-<li>During regular XPath evaluation, various ESXLT functions are
-available within their namespace when using libxslt 1.1.26 or later.</li>
-<li>Support passing a readily configured logger instance into
-<tt class="docutils literal">PyErrorLog</tt>, instead of a logger name.</li>
-<li>On serialisation, the new <tt class="docutils literal">doctype</tt> parameter can be used to
-override the DOCTYPE (internal subset) of the document.</li>
-<li>New parameter <tt class="docutils literal">output_parent</tt> to <tt class="docutils literal">XSLTExtension.apply_templates()</tt>
-to append the resulting content directly to an output element.</li>
-<li><tt class="docutils literal">XSLTExtension.process_children()</tt> to process the content of the
-XSLT extension element itself.</li>
-<li>ISO-Schematron support based on the de-facto Schematron reference
-'skeleton implementation'.</li>
-<li>XSLT objects now take XPath object as <tt class="docutils literal">__call__</tt> stylesheet
-parameters.</li>
-<li>Enable path caching in ElementPath (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) to avoid parsing
-overhead.</li>
-<li>Setting the value of a namespaced attribute always uses a prefixed
-namespace instead of the default namespace even if both declare the
-same namespace URI. This avoids serialisation problems when an
-attribute from a default namespace is set on an element from a
-different namespace.</li>
-<li>XSLT extension elements: support for XSLT context nodes other than
-elements: document root, comments, processing instructions.</li>
-<li>Support for strings (in addition to Elements) in node-sets returned
-by extension functions.</li>
-<li>Forms that lack an <tt class="docutils literal">action</tt> attribute default to the base URL of
-the document on submit.</li>
-<li>XPath attribute result strings have an <tt class="docutils literal">attrname</tt> property.</li>
-<li>Namespace URIs get validated against RFC 3986 at the API level
-(required by the XML namespace specification).</li>
-<li>Target parsers show their target object in the <tt class="docutils literal">.target</tt> property
-(compatible with ElementTree).</li>
-</ul>
-</div>
-<div class="section" id="id245">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>API is hardened against invalid proxy instances to prevent crashes
-due to incorrectly instantiated Element instances.</li>
-<li>Prevent crash when instantiating <tt class="docutils literal">CommentBase</tt> and friends.</li>
-<li>Export ElementTree compatible XML parser class as
-<tt class="docutils literal">XMLTreeBuilder</tt>, as it is called in ET 1.2.</li>
-<li>ObjectifiedDataElements in lxml.objectify were not hashable. They
-now use the hash value of the underlying Python value (string,
-number, etc.) to which they compare equal.</li>
-<li>Parsing broken fragments in lxml.html could fail if the fragment
-contained an orphaned closing '</div>' tag.</li>
-<li>Using XSLT extension elements around the root of the output document
-crashed.</li>
-<li><tt class="docutils literal">lxml.cssselect</tt> did not distinguish between <tt class="docutils literal"><span class="pre">x[attr="val"]</span></tt> and
-<tt class="docutils literal">x <span class="pre">[attr="val"]</span></tt> (with a space). The latter now matches the
-attribute independent of the element.</li>
-<li>Rewriting multiple links inside of HTML text content could end up
-replacing unrelated content as replacements could impact the
-reported position of subsequent matches. Modifications are now
-simplified by letting the <tt class="docutils literal">iterlinks()</tt> generator in <tt class="docutils literal">lxml.html</tt>
-return links in reversed order if they appear inside the same text
-node. Thus, replacements and link-internal modifications no longer
-change the position of links reported afterwards.</li>
-<li>The <tt class="docutils literal">.value</tt> attribute of <tt class="docutils literal">textarea</tt> elements in lxml.html did
-not represent the complete raw value (including child tags etc.). It
-now serialises the complete content on read and replaces the
-complete content by a string on write.</li>
-<li>Target parser didn't call <tt class="docutils literal">.close()</tt> on the target object if
-parsing failed. Now it is guaranteed that <tt class="docutils literal">.close()</tt> will be
-called after parsing, regardless of the outcome.</li>
-</ul>
-</div>
-<div class="section" id="id246">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Official support for Python 3.1.2 and later.</li>
-<li>Static MS Windows builds can now download their dependencies
-themselves.</li>
-<li><tt class="docutils literal">Element.attrib</tt> no longer uses a cyclic reference back to its
-Element object. It therefore no longer requires the garbage
-collector to clean up.</li>
-<li>Static builds include libiconv, in addition to libxml2 and libxslt.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id247">
-<h1>2.2.8 (2010-09-02)</h1>
-<div class="section" id="id248">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in newer libxml2 versions when moving elements between
-documents that had attributes on replaced XInclude nodes.</li>
-<li>Import fix for urljoin in Python 3.1+.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id249">
-<h1>2.2.7 (2010-07-24)</h1>
-<div class="section" id="id250">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in XSLT when generating text-only result documents with a
-stylesheet created in a different thread.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id251">
-<h1>2.2.6 (2010-03-02)</h1>
-<div class="section" id="id252">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fixed several Python 3 regressions by building with Cython 0.11.3.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id253">
-<h1>2.2.5 (2010-02-28)</h1>
-<div class="section" id="id254">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for running XSLT extension elements on the input root node
-(e.g. in a template matching on "/").</li>
-</ul>
-</div>
-<div class="section" id="id255">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in XPath evaluation when reading smart strings from a document
-other than the original context document.</li>
-<li>Support recent versions of html5lib by not requiring its
-<tt class="docutils literal">XHTMLParser</tt> in <tt class="docutils literal">htmlparser.py</tt> anymore.</li>
-<li>Manually instantiating the custom element classes in
-<tt class="docutils literal">lxml.objectify</tt> could crash.</li>
-<li>Invalid XML text characters were not rejected by the API when they
-appeared in unicode strings directly after non-ASCII characters.</li>
-<li>lxml.html.open_http_urllib() did not work in Python 3.</li>
-<li>The functions <tt class="docutils literal">strip_tags()</tt> and <tt class="docutils literal">strip_elements()</tt> in
-<tt class="docutils literal">lxml.etree</tt> did not remove all occurrences of a tag in all cases.</li>
-<li>Crash in XSLT extension elements when the XSLT context node is not
-an element.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id256">
-<h1>2.2.4 (2009-11-11)</h1>
-<div class="section" id="id257">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Static build of libxml2/libxslt was broken.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id258">
-<h1>2.2.3 (2009-10-30)</h1>
-<div class="section" id="id259">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id260">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
-parser.</li>
-<li>Looking up and deleting attributes without a namespace could hit a
-namespaced attribute of the same name instead.</li>
-<li>Late errors during calls to <tt class="docutils literal">SubElement()</tt> (e.g. attribute related
-ones) could leave a partially initialised element in the tree.</li>
-<li>Modifying trees that contain parsed entity references could result
-in an infinite loop.</li>
-<li>ObjectifiedElement.__setattr__ created an empty-string child element when the
-attribute value was rejected as a non-unicode/non-ascii string</li>
-<li>Syntax errors in <tt class="docutils literal">lxml.cssselect</tt> could result in misleading error
-messages.</li>
-<li>Invalid syntax in CSS expressions could lead to an infinite loop in
-the parser of <tt class="docutils literal">lxml.cssselect</tt>.</li>
-<li>CSS special character escapes were not properly handled in
-<tt class="docutils literal">lxml.cssselect</tt>.</li>
-<li>CSS Unicode escapes were not properly decoded in <tt class="docutils literal">lxml.cssselect</tt>.</li>
-<li>Select options in HTML forms that had no explicit <tt class="docutils literal">value</tt>
-attribute were not handled correctly. The HTML standard dictates
-that their value is defined by their text content. This is now
-supported by lxml.html.</li>
-<li>XPath raised a TypeError when finding CDATA sections. This is now
-fully supported.</li>
-<li>Calling <tt class="docutils literal">help(lxml.objectify)</tt> didn't work at the prompt.</li>
-<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify no longer defines the default
-namespaces when annotation is disabled.</li>
-<li>Feed parser failed to honour the 'recover' option on parse errors.</li>
-<li>Diverting the error logging to Python's logging system was broken.</li>
-</ul>
-</div>
-<div class="section" id="id261">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id262">
-<h1>2.2.2 (2009-06-21)</h1>
-<div class="section" id="id263">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New helper functions <tt class="docutils literal">strip_attributes()</tt>, <tt class="docutils literal">strip_elements()</tt>,
-<tt class="docutils literal">strip_tags()</tt> in lxml.etree to remove attributes/subtrees/tags
-from a subtree.</li>
-</ul>
-</div>
-<div class="section" id="id264">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Namespace cleanup on subtree insertions could result in missing
-namespace declarations (and potentially crashes) if the element
-defining a namespace was deleted and the namespace was not used by
-the top element of the inserted subtree but only in deeper subtrees.</li>
-<li>Raising an exception from a parser target callback didn't always
-terminate the parser.</li>
-<li>Only {true, false, 1, 0} are accepted as the lexical representation for
-BoolElement ({True, False, T, F, t, f} not any more), restoring lxml <= 2.0
-behaviour.</li>
-</ul>
-</div>
-<div class="section" id="id265">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id266">
-<h1>2.2.1 (2009-06-02)</h1>
-<div class="section" id="id267">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Injecting default attributes into a document during XML Schema
-validation (also at parse time).</li>
-<li>Pass <tt class="docutils literal">huge_tree</tt> parser option to disable parser security
-restrictions imposed by libxml2 2.7.</li>
-</ul>
-</div>
-<div class="section" id="id268">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The script for statically building libxml2 and libxslt didn't work
-in Py3.</li>
-<li><tt class="docutils literal">XMLSchema()</tt> also passes invalid schema documents on to libxml2
-for parsing (which could lead to a crash before release 2.6.24).</li>
-</ul>
-</div>
-<div class="section" id="id269">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id270">
-<h1>2.2 (2009-03-21)</h1>
-<div class="section" id="id271">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for <tt class="docutils literal">standalone</tt> flag in XML declaration through
-<tt class="docutils literal">tree.docinfo.standalone</tt> and by passing <tt class="docutils literal">standalone=True/False</tt>
-on serialisation.</li>
-</ul>
-</div>
-<div class="section" id="id272">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when parsing an XML Schema with external imports from a
-filename.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta4-2009-02-27">
-<h1>2.2beta4 (2009-02-27)</h1>
-<div class="section" id="id273">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support strings and instantiable Element classes as child arguments
-to the constructor of custom Element classes.</li>
-<li>GZip compression support for serialisation to files and file-like
-objects.</li>
-</ul>
-</div>
-<div class="section" id="id274">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Deep-copying an ElementTree copied neither its sibling PIs and
-comments nor its internal/external DTD subsets.</li>
-<li>Soupparser failed on broken attributes without values.</li>
-<li>Crash in XSLT when overwriting an already defined attribute using
-<tt class="docutils literal">xsl:attribute</tt>.</li>
-<li>Crash bug in exception handling code under Python 3. This was due
-to a problem in Cython, not lxml itself.</li>
-<li><tt class="docutils literal">lxml.html.FormElement._name()</tt> failed for non top-level forms.</li>
-<li><tt class="docutils literal">TAG</tt> special attribute in constructor of custom Element classes
-was evaluated incorrectly.</li>
-</ul>
-</div>
-<div class="section" id="id275">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Official support for Python 3.0.1.</li>
-<li><tt class="docutils literal">Element.findtext()</tt> now returns an empty string instead of None
-for Elements without text content.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta3-2009-02-17">
-<h1>2.2beta3 (2009-02-17)</h1>
-<div class="section" id="id276">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">XSLT.strparam()</tt> class method to wrap quoted string parameters
-that require escaping.</li>
-</ul>
-</div>
-<div class="section" id="id277">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory leak in XPath evaluators.</li>
-<li>Crash when parsing indented XML in one thread and merging it with
-other documents parsed in another thread.</li>
-<li>Setting the <tt class="docutils literal">base</tt> attribute in <tt class="docutils literal">lxml.objectify</tt> from a unicode
-string failed.</li>
-<li>Fixes following changes in Python 3.0.1.</li>
-<li>Minor fixes for Python 3.</li>
-</ul>
-</div>
-<div class="section" id="id278">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The global error log (which is copied into the exception log) is now
-local to a thread, which fixes some race conditions.</li>
-<li>More robust error handling on serialisation.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta2-2009-01-25">
-<h1>2.2beta2 (2009-01-25)</h1>
-<div class="section" id="id279">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Potential memory leak on exception handling. This was due to a
-problem in Cython, not lxml itself.</li>
-<li><tt class="docutils literal">iter_links</tt> (and related link-rewriting functions) in
-<tt class="docutils literal">lxml.html</tt> would interpret CSS like <tt class="docutils literal"><span class="pre">url("link")</span></tt> incorrectly
-(treating the quotation marks as part of the link).</li>
-<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id280">
-<h1>2.1.5 (2009-01-06)</h1>
-<div class="section" id="id281">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Potential memory leak on exception handling. This was due to a
-problem in Cython, not lxml itself.</li>
-<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2008-12-12">
-<h1>2.2beta1 (2008-12-12)</h1>
-<div class="section" id="id282">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Allow <tt class="docutils literal">lxml.html.diff.htmldiff</tt> to accept Element objects, not
-just HTML strings.</li>
-</ul>
-</div>
-<div class="section" id="id283">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when using an XPath evaluator in multiple threads.</li>
-<li>Fixed missing whitespace before <tt class="docutils literal"><span class="pre">Link:...</span></tt> in <tt class="docutils literal">lxml.html.diff</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id284">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Export <tt class="docutils literal">lxml.html.parse</tt>.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id285">
-<h1>2.1.4 (2008-12-12)</h1>
-<div class="section" id="id286">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when using an XPath evaluator in multiple threads.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id287">
-<h1>2.0.11 (2008-12-12)</h1>
-<div class="section" id="id288">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when using an XPath evaluator in multiple threads.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="alpha1-2008-11-23">
-<h1>2.2alpha1 (2008-11-23)</h1>
-<div class="section" id="id289">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for XSLT result tree fragments in XPath/XSLT extension
-functions.</li>
-<li>QName objects have new properties <tt class="docutils literal">namespace</tt> and <tt class="docutils literal">localname</tt>.</li>
-<li>New options for exclusive C14N and C14N without comments.</li>
-<li>Instantiating a custom Element classes creates a new Element.</li>
-</ul>
-</div>
-<div class="section" id="id290">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>XSLT didn't inherit the parse options of the input document.</li>
-<li>0-bytes could slip through the API when used inside of Unicode
-strings.</li>
-<li>With <tt class="docutils literal">lxml.html.clean.autolink</tt>, links with balanced parenthesis,
-that end in a parenthesis, will be linked in their entirety (typical
-with Wikipedia links).</li>
-</ul>
-</div>
-<div class="section" id="id291">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id292">
-<h1>2.1.3 (2008-11-17)</h1>
-<div class="section" id="id293">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id294">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Ref-count leaks when lxml enters a try-except statement while an
-outside exception lives in sys.exc_*(). This was due to a problem in
-Cython, not lxml itself.</li>
-<li>Parser Unicode decoding errors could get swallowed by other
-exceptions.</li>
-<li>Name/import errors in some Python modules.</li>
-<li>Internal DTD subsets that did not specify a system or public ID were
-not serialised and did not appear in the docinfo property of
-ElementTrees.</li>
-<li>Fix a pre-Py3k warning when parsing from a gzip file in Py2.6.</li>
-<li>Test suite fixes for libxml2 2.7.</li>
-<li>Resolver.resolve_string() did not work for non-ASCII byte strings.</li>
-<li>Resolver.resolve_file() was broken.</li>
-<li>Overriding the parser encoding didn't work for many encodings.</li>
-</ul>
-</div>
-<div class="section" id="id295">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id296">
-<h1>2.0.10 (2008-11-17)</h1>
-<div class="section" id="id297">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Ref-count leaks when lxml enters a try-except statement while an
-outside exception lives in sys.exc_*(). This was due to a problem in
-Cython, not lxml itself.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id298">
-<h1>2.1.2 (2008-09-05)</h1>
-<div class="section" id="id299">
-<h2>Features added</h2>
-<ul class="simple">
-<li>lxml.etree now tries to find the absolute path name of files when
-parsing from a file-like object. This helps custom resolvers when
-resolving relative URLs, as lixbml2 can prepend them with the path
-of the source document.</li>
-</ul>
-</div>
-<div class="section" id="id300">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory problem when passing documents between threads.</li>
-<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
-exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
-</ul>
-</div>
-<div class="section" id="id301">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id302">
-<h1>2.0.9 (2008-09-05)</h1>
-<div class="section" id="id303">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory problem when passing documents between threads.</li>
-<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
-exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id304">
-<h1>2.1.1 (2008-07-24)</h1>
-<div class="section" id="id305">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id306">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when parsing XSLT stylesheets in a thread and using them in
-another.</li>
-<li>Encoding problem when including text with ElementInclude under
-Python 3.</li>
-</ul>
-</div>
-<div class="section" id="id307">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id308">
-<h1>2.0.8 (2008-07-24)</h1>
-<div class="section" id="id309">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.rewrite_links()</tt> strips links to work around documents
-with whitespace in URL attributes.</li>
-</ul>
-</div>
-<div class="section" id="id310">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when parsing XSLT stylesheets in a thread and using them in
-another.</li>
-<li>CSS selector parser dropped remaining expression after a function
-with parameters.</li>
-</ul>
-</div>
-<div class="section" id="id311">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id312">
-<h1>2.1 (2008-07-09)</h1>
-<div class="section" id="id313">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Smart strings can be switched off in XPath (<tt class="docutils literal">smart_strings</tt>
-keyword option).</li>
-<li><tt class="docutils literal">lxml.html.rewrite_links()</tt> strips links to work around documents
-with whitespace in URL attributes.</li>
-</ul>
-</div>
-<div class="section" id="id314">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Custom resolvers were not used for XMLSchema includes/imports and
-XInclude processing.</li>
-<li>CSS selector parser dropped remaining expression after a function
-with parameters.</li>
-</ul>
-</div>
-<div class="section" id="id315">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><tt class="docutils literal">objectify.enableRecursiveStr()</tt> was removed, use
-<tt class="docutils literal">objectify.enable_recursive_str()</tt> instead</li>
-<li>Speed-up when running XSLTs on documents from other threads</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id316">
-<h1>2.0.7 (2008-06-20)</h1>
-<div class="section" id="id317">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
-</ul>
-</div>
-<div class="section" id="id318">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Descending dot-separated classes in CSS selectors were not resolved
-correctly.</li>
-<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
-<li>Potential threading problem in XInclude.</li>
-<li>Crash in Element class lookup classes when the __init__() method of
-the super class is not called from Python subclasses.</li>
-</ul>
-</div>
-<div class="section" id="id319">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Non-ASCII characters in attribute values are no longer escaped on
-serialisation.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta3-2008-06-19">
-<h1>2.1beta3 (2008-06-19)</h1>
-<div class="section" id="id320">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Major overhaul of <tt class="docutils literal">tools/xpathgrep.py</tt> script.</li>
-<li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
-<li>Support for parsing from file-like objects that return unicode
-strings.</li>
-<li>New function <tt class="docutils literal">etree.cleanup_namespaces(el)</tt> that removes unused
-namespace declarations from a (sub)tree (experimental).</li>
-<li>XSLT results support the buffer protocol in Python 3.</li>
-<li>Polymorphic functions in <tt class="docutils literal">lxml.html</tt> that accept either a tree or
-a parsable string will return either a UTF-8 encoded byte string, a
-unicode string or a tree, based on the type of the input.
-Previously, the result was always a byte string or a tree.</li>
-<li>Support for Python 2.6 and 3.0 beta.</li>
-<li>File name handling now uses a heuristic to convert between byte
-strings (usually filenames) and unicode strings (usually URLs).</li>
-<li>Parsing from a plain file object frees the GIL under Python 2.x.</li>
-<li>Running <tt class="docutils literal">iterparse()</tt> on a plain file (or filename) frees the GIL
-on reading under Python 2.x.</li>
-<li>Conversion functions <tt class="docutils literal">html_to_xhtml()</tt> and <tt class="docutils literal">xhtml_to_html()</tt> in
-lxml.html (experimental).</li>
-<li>Most features in lxml.html work for XHTML namespaced tag names
-(experimental).</li>
-</ul>
-</div>
-<div class="section" id="id321">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
-<li>Crash in Element class lookup classes when the __init__() method of
-the super class is not called from Python subclasses.</li>
-<li>A number of problems related to unicode/byte string conversion of
-filenames and error messages were fixed.</li>
-<li>Building on MacOS-X now passes the "flat_namespace" option to the C
-compiler, which reportedly prevents build quirks and crashes on this
-platform.</li>
-<li>Windows build was broken.</li>
-<li>Rare crash when serialising to a file object with certain encodings.</li>
-</ul>
-</div>
-<div class="section" id="id322">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Non-ASCII characters in attribute values are no longer escaped on
-serialisation.</li>
-<li>Passing non-ASCII byte strings or invalid unicode strings as .tag,
-namespaces, etc. will result in a ValueError instead of an
-AssertionError (just like the tag well-formedness check).</li>
-<li>Up to several times faster attribute access (i.e. tree traversal) in
-lxml.objectify.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id323">
-<h1>2.0.6 (2008-05-31)</h1>
-<div class="section" id="id324">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id325">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Incorrect evaluation of <tt class="docutils literal"><span class="pre">el.find("tag[child]")</span></tt>.</li>
-<li>Windows build was broken.</li>
-<li>Moving a subtree from a document created in one thread into a
-document of another thread could crash when the rest of the source
-document is deleted while the subtree is still in use.</li>
-<li>Rare crash when serialising to a file object with certain encodings.</li>
-</ul>
-</div>
-<div class="section" id="id326">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>lxml should now build without problems on MacOS-X.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta2-2008-05-02">
-<h1>2.1beta2 (2008-05-02)</h1>
-<div class="section" id="id327">
-<h2>Features added</h2>
-<ul class="simple">
-<li>All parse functions in lxml.html take a <tt class="docutils literal">parser</tt> keyword argument.</li>
-<li>lxml.html has a new parser class <tt class="docutils literal">XHTMLParser</tt> and a module
-attribute <tt class="docutils literal">xhtml_parser</tt> that provide XML parsers that are
-pre-configured for the lxml.html package.</li>
-</ul>
-</div>
-<div class="section" id="id328">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Moving a subtree from a document created in one thread into a
-document of another thread could crash when the rest of the source
-document is deleted while the subtree is still in use.</li>
-<li>Passing an nsmap when creating an Element will no longer strip
-redundantly defined namespace URIs. This prevented the definition
-of more than one prefix for a namespace on the same Element.</li>
-</ul>
-</div>
-<div class="section" id="id329">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>If the default namespace is redundantly defined with a prefix on the
-same Element, the prefix will now be preferred for subelements and
-attributes. This allows users to work around a problem in libxml2
-where attributes from the default namespace could serialise without
-a prefix even when they appear on an Element with a different
-namespace (i.e. they would end up in the wrong namespace).</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id330">
-<h1>2.0.5 (2008-05-01)</h1>
-<div class="section" id="id331">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id332">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Resolving to a filename in custom resolvers didn't work.</li>
-<li>lxml did not honour libxslt's second error state "STOPPED", which
-let some XSLT errors pass silently.</li>
-<li>Memory leak in Schematron with libxml2 >= 2.6.31.</li>
-</ul>
-</div>
-<div class="section" id="id333">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="beta1-2008-04-15">
-<h1>2.1beta1 (2008-04-15)</h1>
-<div class="section" id="id334">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Error logging in Schematron (requires libxml2 2.6.32 or later).</li>
-<li>Parser option <tt class="docutils literal">strip_cdata</tt> for normalising or keeping CDATA
-sections. Defaults to <tt class="docutils literal">True</tt> as before, thus replacing CDATA
-sections by their text content.</li>
-<li><tt class="docutils literal">CDATA()</tt> factory to wrap string content as CDATA section.</li>
-</ul>
-</div>
-<div class="section" id="id335">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Resolving to a filename in custom resolvers didn't work.</li>
-<li>lxml did not honour libxslt's second error state "STOPPED", which
-let some XSLT errors pass silently.</li>
-<li>Memory leak in Schematron with libxml2 >= 2.6.31.</li>
-<li>lxml.etree accepted non well-formed namespace prefix names.</li>
-</ul>
-</div>
-<div class="section" id="id336">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Major cleanup in internal <tt class="docutils literal">moveNodeToDocument()</tt> function, which
-takes care of namespace cleanup when moving elements between
-different namespace contexts.</li>
-<li>New Elements created through the <tt class="docutils literal">makeelement()</tt> method of an HTML
-parser or through lxml.html now end up in a new HTML document
-(doctype HTML 4.01 Transitional) instead of a generic XML document.
-This mostly impacts the serialisation and the availability of a DTD
-context.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id337">
-<h1>2.0.4 (2008-04-13)</h1>
-<div class="section" id="id338">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id339">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Hanging thread in conjunction with GTK threading.</li>
-<li>Crash bug in iterparse when moving elements into other documents.</li>
-<li>HTML elements' <tt class="docutils literal">.cssselect()</tt> method was broken.</li>
-<li><tt class="docutils literal"><span class="pre">ElementTree.find*()</span></tt> didn't accept QName objects.</li>
-</ul>
-</div>
-<div class="section" id="id340">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="alpha1-2008-03-27">
-<h1>2.1alpha1 (2008-03-27)</h1>
-<div class="section" id="id341">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New event types 'comment' and 'pi' in <tt class="docutils literal">iterparse()</tt>.</li>
-<li><tt class="docutils literal">XSLTAccessControl</tt> instances have a property <tt class="docutils literal">options</tt> that
-returns a dict of access configuration options.</li>
-<li>Constant instances <tt class="docutils literal">DENY_ALL</tt> and <tt class="docutils literal">DENY_WRITE</tt> on
-<tt class="docutils literal">XSLTAccessControl</tt> class.</li>
-<li>Extension elements for XSLT (experimental!)</li>
-<li><tt class="docutils literal">Element.base</tt> property returns the xml:base or HTML base URL of
-an Element.</li>
-<li><tt class="docutils literal">docinfo.URL</tt> property is writable.</li>
-</ul>
-</div>
-<div class="section" id="id342">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Default encoding for plain text serialisation was different from
-that of XML serialisation (UTF-8 instead of ASCII).</li>
-</ul>
-</div>
-<div class="section" id="id343">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Minor API speed-ups.</li>
-<li>The benchmark suite now uses tail text in the trees, which makes the
-absolute numbers incomparable to previous results.</li>
-<li>Generating the HTML documentation now requires <a class="reference external" href="http://pygments.org/">Pygments</a>, which is
-used to enable syntax highlighting for the doctest examples.</li>
-</ul>
-<p>Most long-time deprecated functions and methods were removed:</p>
-<ul>
-<li><p class="first"><tt class="docutils literal">etree.clearErrorLog()</tt>, use <tt class="docutils literal">etree.clear_error_log()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.useGlobalPythonLog()</tt>, use
-<tt class="docutils literal">etree.use_global_python_log()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.ElementClassLookup.setFallback()</tt>, use
-<tt class="docutils literal">etree.ElementClassLookup.set_fallback()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.getDefaultParser()</tt>, use <tt class="docutils literal">etree.get_default_parser()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.setDefaultParser()</tt>, use <tt class="docutils literal">etree.set_default_parser()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.setElementClassLookup()</tt>, use
-<tt class="docutils literal">etree.set_element_class_lookup()</tt></p>
-<p>Note that <tt class="docutils literal">parser.setElementClassLookup()</tt> has not been removed
-yet, although <tt class="docutils literal">parser.set_element_class_lookup()</tt> should be used
-instead.</p>
-</li>
-<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespace()</tt>, use
-<tt class="docutils literal">xpath_evaluator.register_namespace()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespaces()</tt>, use
-<tt class="docutils literal">xpath_evaluator.register_namespaces()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">objectify.setPytypeAttributeTag</tt>, use
-<tt class="docutils literal">objectify.set_pytype_attribute_tag</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">objectify.setDefaultParser()</tt>, use
-<tt class="docutils literal">objectify.set_default_parser()</tt></p>
-</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id344">
-<h1>2.0.3 (2008-03-26)</h1>
-<div class="section" id="id345">
-<h2>Features added</h2>
-<ul class="simple">
-<li>soupparser.parse() allows passing keyword arguments on to
-BeautifulSoup.</li>
-<li><tt class="docutils literal">fromstring()</tt> method in <tt class="docutils literal">lxml.html.soupparser</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id346">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.diff</tt> didn't treat empty tags properly (e.g.,
-<tt class="docutils literal"><br></tt>).</li>
-<li>Handle entity replacements correctly in target parser.</li>
-<li>Crash when using <tt class="docutils literal">iterparse()</tt> with XML Schema validation.</li>
-<li>The BeautifulSoup parser (soupparser.py) did not replace entities,
-which made them turn up in text content.</li>
-<li>Attribute assignment of custom PyTypes in objectify could fail to
-correctly serialise the value to a string.</li>
-</ul>
-</div>
-<div class="section" id="id347">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.ElementSoup</tt> was replaced by a new module
-<tt class="docutils literal">lxml.html.soupparser</tt> with a more consistent API. The old module
-remains for compatibility with ElementTree's own ElementSoup module.</li>
-<li>Setting the XSLT_CONFIG and XML2_CONFIG environment variables at
-build time will let setup.py pick up the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> and
-<tt class="docutils literal"><span class="pre">xslt-config</span></tt> scripts from the supplied path name.</li>
-<li>Passing <tt class="docutils literal"><span class="pre">--with-xml2-config=/path/to/xml2-config</span></tt> to setup.py will
-override the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> script that is used to determine the C
-compiler options. The same applies for the <tt class="docutils literal"><span class="pre">--with-xslt-config</span></tt>
-option.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id348">
-<h1>2.0.2 (2008-02-22)</h1>
-<div class="section" id="id349">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support passing <tt class="docutils literal">base_url</tt> to file parser functions to override
-the filename of the file(-like) object.</li>
-</ul>
-</div>
-<div class="section" id="id350">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The prefix for objectify's pytype namespace was missing from the set
-of default prefixes.</li>
-<li>Memory leak in Schematron (fixed only for libxml2 2.6.31+).</li>
-<li>Error type names in RelaxNG were reported incorrectly.</li>
-<li>Slice deletion bug fixed in objectify.</li>
-</ul>
-</div>
-<div class="section" id="id351">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Enabled doctests for some Python modules (especially <tt class="docutils literal">lxml.html</tt>).</li>
-<li>Add a <tt class="docutils literal">method</tt> argument to <tt class="docutils literal">lxml.html.tostring()</tt>
-(<tt class="docutils literal"><span class="pre">method="xml"</span></tt> for XHTML output).</li>
-<li>Make it clearer that methods like <tt class="docutils literal">lxml.html.fromstring()</tt> take a
-<tt class="docutils literal">base_url</tt> argument.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id352">
-<h1>2.0.1 (2008-02-13)</h1>
-<div class="section" id="id353">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Child iteration in <tt class="docutils literal">lxml.pyclasslookup</tt>.</li>
-<li>Loads of new docstrings reflect the signature of functions and
-methods to make them visible in API docs and <tt class="docutils literal">help()</tt></li>
-</ul>
-</div>
-<div class="section" id="id354">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The module <tt class="docutils literal">lxml.html.builder</tt> was duplicated as
-<tt class="docutils literal">lxml.htmlbuilder</tt></li>
-<li>Form elements would return None for <tt class="docutils literal">form.fields.keys()</tt> if there
-was an unnamed input field. Now unnamed input fields are completely
-ignored.</li>
-<li>Setting an element slice in objectify could insert slice-overlapping
-elements at the wrong position.</li>
-</ul>
-</div>
-<div class="section" id="id355">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The generated API documentation was cleaned up and disburdened from
-non-public classes etc.</li>
-<li>The previously public module <tt class="docutils literal">lxml.html.setmixin</tt> was renamed to
-<tt class="docutils literal">lxml.html._setmixin</tt> as it is not an official part of lxml. If
-you want to use it, feel free to copy it over to your own source
-base.</li>
-<li>Passing <tt class="docutils literal"><span class="pre">--with-xslt-config=/path/to/xslt-config</span></tt> to setup.py will
-override the <tt class="docutils literal"><span class="pre">xslt-config</span></tt> script that is used to determine the C
-compiler options.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id356">
-<h1>2.0 (2008-02-01)</h1>
-<div class="section" id="id357">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Passing the <tt class="docutils literal">unicode</tt> type as <tt class="docutils literal">encoding</tt> to <tt class="docutils literal">tostring()</tt> will
-serialise to unicode. The <tt class="docutils literal">tounicode()</tt> function is now
-deprecated.</li>
-<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> can parse from StringIO.</li>
-<li><tt class="docutils literal">makeparser()</tt> function in <tt class="docutils literal">lxml.objectify</tt> to create a new
-parser with the usual objectify setup.</li>
-<li>Plain ASCII XPath string results are no longer forced into unicode
-objects as in 2.0beta1, but are returned as plain strings as before.</li>
-<li>All XPath string results are 'smart' objects that have a
-<tt class="docutils literal">getparent()</tt> method to retrieve their parent Element.</li>
-<li><tt class="docutils literal">with_tail</tt> option in serialiser functions.</li>
-<li>More accurate exception messages in validator creation.</li>
-<li>Parse-time XML schema validation (<tt class="docutils literal">schema</tt> parser keyword).</li>
-<li>XPath string results of the <tt class="docutils literal">text()</tt> function and attribute
-selection make their Element container accessible through a
-<tt class="docutils literal">getparent()</tt> method. As a side-effect, they are now always
-unicode objects (even ASCII strings).</li>
-<li><tt class="docutils literal">XSLT</tt> objects are usable in any thread - at the cost of a deep
-copy if they were not created in that thread.</li>
-<li>Invalid entity names and character references will be rejected by
-the <tt class="docutils literal">Entity()</tt> factory.</li>
-<li><tt class="docutils literal">entity.text</tt> returns the textual representation of the entity,
-e.g. <tt class="docutils literal">&amp;</tt>.</li>
-<li>New properties <tt class="docutils literal">position</tt> and <tt class="docutils literal">code</tt> on ParseError exception (as
-in ET 1.3)</li>
-<li>Rich comparison of <tt class="docutils literal">element.attrib</tt> proxies.</li>
-<li>ElementTree compatible TreeBuilder class.</li>
-<li>Use default prefixes for some common XML namespaces.</li>
-<li><tt class="docutils literal">lxml.html.clean.Cleaner</tt> now allows for a <tt class="docutils literal">host_whitelist</tt>, and
-two overridable methods: <tt class="docutils literal">allow_embedded_url(el, url)</tt> and the
-more general <tt class="docutils literal">allow_element(el)</tt>.</li>
-<li>Extended slicing of Elements as in <tt class="docutils literal"><span class="pre">element[1:-1:2]</span></tt>, both in
-etree and in objectify</li>
-<li>Resolvers can now provide a <tt class="docutils literal">base_url</tt> keyword argument when
-resolving a document as string data.</li>
-<li>When using <tt class="docutils literal">lxml.doctestcompare</tt> you can give the doctest option
-<tt class="docutils literal">NOPARSE_MARKUP</tt> (like <tt class="docutils literal"># doctest: +NOPARSE_MARKUP</tt>) to suppress
-the special checking for one test.</li>
-<li>Separate <tt class="docutils literal">feed_error_log</tt> property for the feed parser interface.
-The normal parser interface and <tt class="docutils literal">iterparse</tt> continue to use
-<tt class="docutils literal">error_log</tt>.</li>
-<li>The normal parsers and the feed parser interface are now separated
-and can be used concurrently on the same parser instance.</li>
-<li><tt class="docutils literal">fromstringlist()</tt> and <tt class="docutils literal">tostringlist()</tt> functions as in
-ElementTree 1.3</li>
-<li><tt class="docutils literal">iterparse()</tt> accepts an <tt class="docutils literal">html</tt> boolean keyword argument for
-parsing with the HTML parser (note that this interface may be
-subject to change)</li>
-<li>Parsers accept an <tt class="docutils literal">encoding</tt> keyword argument that overrides the encoding
-of the parsed documents.</li>
-<li>New C-API function <tt class="docutils literal">hasChild()</tt> to test for children</li>
-<li><tt class="docutils literal">annotate()</tt> function in objectify can annotate with Python types and XSI
-types in one step. Accompanied by <tt class="docutils literal">xsiannotate()</tt> and <tt class="docutils literal">pyannotate()</tt>.</li>
-<li><tt class="docutils literal">ET.write()</tt>, <tt class="docutils literal">tostring()</tt> and <tt class="docutils literal">tounicode()</tt> now accept a keyword
-argument <tt class="docutils literal">method</tt> that can be one of 'xml' (or None), 'html' or 'text' to
-serialise as XML, HTML or plain text content.</li>
-<li><tt class="docutils literal">iterfind()</tt> method on Elements returns an iterator equivalent to
-<tt class="docutils literal">findall()</tt></li>
-<li><tt class="docutils literal">itertext()</tt> method on Elements</li>
-<li>Setting a QName object as value of the .text property or as an attribute
-will resolve its prefix in the respective context</li>
-<li>ElementTree-like parser target interface as described in
-<a class="reference external" href="http://effbot.org/elementtree/elementtree-xmlparser.htm">http://effbot.org/elementtree/elementtree-xmlparser.htm</a></li>
-<li>ElementTree-like feed parser interface on XMLParser and HTMLParser
-(<tt class="docutils literal">feed()</tt> and <tt class="docutils literal">close()</tt> methods)</li>
-<li>Reimplemented <tt class="docutils literal">objectify.E</tt> for better performance and improved
-integration with objectify. Provides extended type support based on
-registered PyTypes.</li>
-<li>XSLT objects now support deep copying</li>
-<li>New <tt class="docutils literal">makeSubElement()</tt> C-API function that allows creating a new
-subelement straight with text, tail and attributes.</li>
-<li>XPath extension functions can now access the current context node
-(<tt class="docutils literal">context.context_node</tt>) and use a context dictionary
-(<tt class="docutils literal">context.eval_context</tt>) from the context provided in their first
-parameter</li>
-<li>HTML tag soup parser based on BeautifulSoup in <tt class="docutils literal">lxml.html.ElementSoup</tt></li>
-<li>New module <tt class="docutils literal">lxml.doctestcompare</tt> by Ian Bicking for writing simplified
-doctests based on XML/HTML output. Use by importing <tt class="docutils literal">lxml.usedoctest</tt> or
-<tt class="docutils literal">lxml.html.usedoctest</tt> from within a doctest.</li>
-<li>New module <tt class="docutils literal">lxml.cssselect</tt> by Ian Bicking for selecting Elements with CSS
-selectors.</li>
-<li>New package <tt class="docutils literal">lxml.html</tt> written by Ian Bicking for advanced HTML
-treatment.</li>
-<li>Namespace class setup is now local to the <tt class="docutils literal">ElementNamespaceClassLookup</tt>
-instance and no longer global.</li>
-<li>Schematron validation (incomplete in libxml2)</li>
-<li>Additional <tt class="docutils literal">stringify</tt> argument to <tt class="docutils literal">objectify.PyType()</tt> takes a
-conversion function to strings to support setting text values from arbitrary
-types.</li>
-<li>Entity support through an <tt class="docutils literal">Entity</tt> factory and element classes. XML
-parsers now have a <tt class="docutils literal">resolve_entities</tt> keyword argument that can be set to
-False to keep entities in the document.</li>
-<li><tt class="docutils literal">column</tt> field on error log entries to accompany the <tt class="docutils literal">line</tt> field</li>
-<li>Error specific messages in XPath parsing and evaluation
-NOTE: for evaluation errors, you will now get an XPathEvalError instead of
-an XPathSyntaxError. To catch both, you can except on <tt class="docutils literal">XPathError</tt></li>
-<li>The regular expression functions in XPath now support passing a node-set
-instead of a string</li>
-<li>Extended type annotation in objectify: new <tt class="docutils literal">xsiannotate()</tt> function</li>
-<li>EXSLT RegExp support in standard XPath (not only XSLT)</li>
-</ul>
-</div>
-<div class="section" id="id358">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Missing import in <tt class="docutils literal">lxml.html.clean</tt>.</li>
-<li>Some Python 2.4-isms prevented lxml from building/running under
-Python 2.3.</li>
-<li>XPath on ElementTrees could crash when selecting the virtual root
-node of the ElementTree.</li>
-<li>Compilation <tt class="docutils literal"><span class="pre">--without-threading</span></tt> was buggy in alpha5/6.</li>
-<li>Memory leak in the <tt class="docutils literal">parse()</tt> function.</li>
-<li>Minor bugs in XSLT error message formatting.</li>
-<li>Result document memory leak in target parser.</li>
-<li>Target parser failed to report comments.</li>
-<li>In the <tt class="docutils literal">lxml.html</tt> <tt class="docutils literal">iter_links</tt> method, links in <tt class="docutils literal"><object></tt>
-tags weren't recognized. (Note: plugin-specific link parameters
-still aren't recognized.) Also, the <tt class="docutils literal"><embed></tt> tag, though not
-standard, is now included in <tt class="docutils literal">lxml.html.defs.special_inline_tags</tt>.</li>
-<li>Using custom resolvers on XSLT stylesheets parsed from a string
-could request ill-formed URLs.</li>
-<li>With <tt class="docutils literal">lxml.doctestcompare</tt> if you do <tt class="docutils literal"><tag <span class="pre">xmlns="..."></span></tt> in your
-output, it will then be namespace-neutral (before the ellipsis was
-treated as a real namespace).</li>
-<li>AttributeError in feed parser on parse errors</li>
-<li>XML feed parser setup problem</li>
-<li>Type annotation for unicode strings in <tt class="docutils literal">DataElement()</tt></li>
-<li>lxml failed to serialise namespace declarations of elements other than the
-root node of a tree</li>
-<li>Race condition in XSLT where the resolver context leaked between concurrent
-XSLT calls</li>
-<li>lxml.etree did not check tag/attribute names</li>
-<li>The XML parser did not report undefined entities as error</li>
-<li>The text in exceptions raised by XML parsers, validators and XPath
-evaluators now reports the first error that occurred instead of the last</li>
-<li>Passing '' as XPath namespace prefix did not raise an error</li>
-<li>Thread safety in XPath evaluators</li>
-</ul>
-</div>
-<div class="section" id="id359">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Exceptions carry only the part of the error log that is related to
-the operation that caused the error.</li>
-<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> now enforce passing the source
-file/filename through the <tt class="docutils literal">file</tt> keyword argument.</li>
-<li>The test suite now skips most doctests under Python 2.3.</li>
-<li><tt class="docutils literal">make clean</tt> no longer removes the .c files (use <tt class="docutils literal">make
-realclean</tt> instead)</li>
-<li>Minor performance tweaks for Element instantiation and subelement
-creation</li>
-<li>Various places in the XPath, XSLT and iteration APIs now require
-keyword-only arguments.</li>
-<li>The argument order in <tt class="docutils literal">element.itersiblings()</tt> was changed to
-match the order used in all other iteration methods. The second
-argument ('preceding') is now a keyword-only argument.</li>
-<li>The <tt class="docutils literal">getiterator()</tt> method on Elements and ElementTrees was
-reverted to return an iterator as it did in lxml 1.x. The ET API
-specification allows it to return either a sequence or an iterator,
-and it traditionally returned a sequence in ET and an iterator in
-lxml. However, it is now deprecated in favour of the <tt class="docutils literal">iter()</tt>
-method, which should be used in new code wherever possible.</li>
-<li>The 'pretty printed' serialisation of ElementTree objects now
-inserts newlines at the root level between processing instructions,
-comments and the root tag.</li>
-<li>A 'pretty printed' serialisation is now terminated with a newline.</li>
-<li>Second argument to <tt class="docutils literal">lxml.etree.Extension()</tt> helper is no longer
-required, third argument is now a keyword-only argument <tt class="docutils literal">ns</tt>.</li>
-<li><tt class="docutils literal">lxml.html.tostring</tt> takes an <tt class="docutils literal">encoding</tt> argument.</li>
-<li>The module source files were renamed to "lxml.*.pyx", such as
-"lxml.etree.pyx". This was changed for consistency with the way
-Pyrex commonly handles package imports. The main effect is that
-classes now know about their fully qualified class name, including
-the package name of their module.</li>
-<li>Keyword-only arguments in some API functions, especially in the
-parsers and serialisers.</li>
-<li>Tag name validation in lxml.etree (and lxml.html) now distinguishes
-between HTML tags and XML tags based on the parser that was used to
-parse or create them. HTML tags no longer reject any non-ASCII
-characters in tag names but only spaces and the special characters
-<tt class="docutils literal"><span class="pre"><>&/"'</span></tt>.</li>
-<li>lxml.etree now emits a warning if you use XPath with libxml2 2.6.27
-(which can crash on certain XPath errors)</li>
-<li>Type annotation in objectify now preserves the already annotated type by
-default to prevent losing type information that is already there.</li>
-<li><tt class="docutils literal">element.getiterator()</tt> returns a list, use <tt class="docutils literal">element.iter()</tt> to retrieve
-an iterator (ElementTree 1.3 compatible behaviour)</li>
-<li>objectify.PyType for None is now called "NoneType"</li>
-<li><tt class="docutils literal">el.getiterator()</tt> renamed to <tt class="docutils literal">el.iter()</tt>, following ElementTree 1.3 -
-original name is still available as alias</li>
-<li>In the public C-API, <tt class="docutils literal">findOrBuildNodeNs()</tt> was replaced by the more
-generic <tt class="docutils literal">findOrBuildNodeNsPrefix</tt></li>
-<li>Major refactoring in XPath/XSLT extension function code</li>
-<li>Network access in parsers disabled by default</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id360">
-<h1>1.3.6 (2007-10-29)</h1>
-<div class="section" id="id361">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Backported decref crash fix from 2.0</li>
-<li>Well hidden free-while-in-use crash bug in ObjectPath</li>
-</ul>
-</div>
-<div class="section" id="id362">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The test suites now run <tt class="docutils literal">gc.collect()</tt> in the <tt class="docutils literal">tearDown()</tt>
-methods. While this makes them take a lot longer to run, it also
-makes it easier to link a specific test to garbage collection
-problems that would otherwise appear in later tests.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id363">
-<h1>1.3.5 (2007-10-22)</h1>
-<div class="section" id="id364">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id365">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>lxml.etree could crash when adding more than 10000 namespaces to a
-document</li>
-<li>lxml failed to serialise namespace declarations of elements other
-than the root node of a tree</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id366">
-<h1>1.3.4 (2007-08-30)</h1>
-<div class="section" id="id367">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The <tt class="docutils literal">ElementMaker</tt> in <tt class="docutils literal">lxml.builder</tt> now accepts the keyword arguments
-<tt class="docutils literal">namespace</tt> and <tt class="docutils literal">nsmap</tt> to set a namespace and nsmap for the Elements it
-creates.</li>
-<li>The <tt class="docutils literal">docinfo</tt> on ElementTree objects has new properties <tt class="docutils literal">internalDTD</tt>
-and <tt class="docutils literal">externalDTD</tt> that return a DTD object for the internal or external
-subset of the document respectively.</li>
-<li>Serialising an ElementTree now includes any internal DTD subsets that are
-part of the document, as well as comments and PIs that are siblings of the
-root node.</li>
-</ul>
-</div>
-<div class="section" id="id368">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Parsing with the <tt class="docutils literal">no_network</tt> option could fail</li>
-</ul>
-</div>
-<div class="section" id="id369">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>lxml now raises a TagNameWarning about tag names containing ':' instead of
-an Error as 1.3.3 did. The reason is that a number of projects currently
-misuse the previous lack of tag name validation to generate namespace
-prefixes without declaring namespaces. Apart from the danger of generating
-broken XML this way, it also breaks most of the namespace-aware tools in
-XML, including XPath, XSLT and validation. lxml 1.3.x will continue to
-support this bug with a Warning, while lxml 2.0 will be strict about
-well-formed tag names (not only regarding ':').</li>
-<li>Serialising an Element no longer includes its comment and PI siblings (only
-ElementTree serialisation includes them).</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id370">
-<h1>1.3.3 (2007-07-26)</h1>
-<div class="section" id="id371">
-<h2>Features added</h2>
-<ul class="simple">
-<li>ElementTree compatible parser <tt class="docutils literal">ETCompatXMLParser</tt> strips processing
-instructions and comments while parsing XML</li>
-<li>Parsers now support stripping PIs (keyword argument 'remove_pis')</li>
-<li><tt class="docutils literal">etree.fromstring()</tt> now supports parsing both HTML and XML, depending on
-the parser you pass.</li>
-<li>Support <tt class="docutils literal">base_url</tt> keyword argument in <tt class="docutils literal">HTML()</tt> and <tt class="docutils literal">XML()</tt></li>
-</ul>
-</div>
-<div class="section" id="id372">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Parsing from Python Unicode strings failed on some platforms</li>
-<li><tt class="docutils literal">Element()</tt> did not raise an exception on tag names containing ':'</li>
-<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
-<tt class="docutils literal">ProcessingInstruction</tt> as tags. It also accepts <tt class="docutils literal">Element</tt> now.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id373">
-<h1>1.3.2 (2007-07-03)</h1>
-<div class="section" id="id374">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id375">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>"deallocating None" crash bug</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id376">
-<h1>1.3.1 (2007-07-02)</h1>
-<div class="section" id="id377">
-<h2>Features added</h2>
-<ul class="simple">
-<li>objectify.DataElement now supports setting values from existing data
-elements (not just plain Python types) and reuses defined namespaces etc.</li>
-<li>E-factory support for lxml.objectify (<tt class="docutils literal">objectify.E</tt>)</li>
-</ul>
-</div>
-<div class="section" id="id378">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Better way to prevent crashes in Element proxy cleanup code</li>
-<li>objectify.DataElement didn't set up None value correctly</li>
-<li>objectify.DataElement didn't check the value against the provided type hints</li>
-<li>Reference-counting bug in <tt class="docutils literal">Element.attrib.pop()</tt></li>
-</ul>
-</div>
-</div>
-<div class="section" id="id379">
-<h1>1.3 (2007-06-24)</h1>
-<div class="section" id="id380">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Module <tt class="docutils literal">lxml.pyclasslookup</tt> module implements an Element class lookup
-scheme that can access the entire tree in read-only mode to help determining
-a suitable Element class</li>
-<li>Parsers take a <tt class="docutils literal">remove_comments</tt> keyword argument that skips over comments</li>
-<li><tt class="docutils literal">parse()</tt> function in <tt class="docutils literal">objectify</tt>, corresponding to <tt class="docutils literal">XML()</tt> etc.</li>
-<li><tt class="docutils literal">Element.addnext(el)</tt> and <tt class="docutils literal">Element.addprevious(el)</tt> methods to support
-adding processing instructions and comments around the root node</li>
-<li><tt class="docutils literal">Element.attrib</tt> was missing <tt class="docutils literal">clear()</tt> and <tt class="docutils literal">pop()</tt> methods</li>
-<li>Extended type annotation in objectify: cleaner annotation namespace setup
-plus new <tt class="docutils literal">deannotate()</tt> function</li>
-<li>Support for custom Element class instantiation in lxml.sax: passing a
-<tt class="docutils literal">makeelement</tt> function to the ElementTreeContentHandler will reuse the
-lookup context of that function</li>
-<li>'.' represents empty ObjectPath (identity)</li>
-<li><tt class="docutils literal">Element.values()</tt> to accompany the existing <tt class="docutils literal">.keys()</tt> and <tt class="docutils literal">.items()</tt></li>
-<li><tt class="docutils literal">collectAttributes()</tt> C-function to build a list of attribute
-keys/values/items for a libxml2 node</li>
-<li><tt class="docutils literal">DTD</tt> validator class (like <tt class="docutils literal">RelaxNG</tt> and <tt class="docutils literal">XMLSchema</tt>)</li>
-<li>HTML generator helpers by Fredrik Lundh in <tt class="docutils literal">lxml.htmlbuilder</tt></li>
-<li><tt class="docutils literal">ElementMaker</tt> XML generator by Fredrik Lundh in <tt class="docutils literal">lxml.builder.E</tt></li>
-<li>Support for pickling <tt class="docutils literal">objectify.ObjectifiedElement</tt> objects to XML</li>
-<li><tt class="docutils literal">update()</tt> method on Element.attrib</li>
-<li>Optimised replacement for libxml2's _xmlReconsiliateNs(). This allows lxml
-a better handling of namespaces when moving elements between documents.</li>
-</ul>
-</div>
-<div class="section" id="id381">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Removing Elements from a tree could make them lose their namespace
-declarations</li>
-<li><tt class="docutils literal">ElementInclude</tt> didn't honour base URL of original document</li>
-<li>Replacing the children slice of an Element would cut off the tails of the
-original children</li>
-<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
-<tt class="docutils literal">ProcessingInstruction</tt> as tags</li>
-<li>API functions now check incoming strings for XML conformity. Zero bytes or
-low ASCII characters are no longer accepted (AssertionError).</li>
-<li>XSLT parsing failed to pass resolver context on to imported documents</li>
-<li>passing '' as namespace prefix in nsmap could be passed through to libxml2</li>
-<li>Objectify couldn't handle prefixed XSD type names in <tt class="docutils literal">xsi:type</tt></li>
-<li>More ET compatible behaviour when writing out XML declarations or not</li>
-<li>More robust error handling in <tt class="docutils literal">iterparse()</tt></li>
-<li>Documents lost their top-level PIs and comments on serialisation</li>
-<li>lxml.sax failed on comments and PIs. Comments are now properly ignored and
-PIs are copied.</li>
-<li>Possible memory leaks in namespace handling when moving elements between
-documents</li>
-</ul>
-</div>
-<div class="section" id="id382">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>major restructuring in the documentation</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id383">
-<h1>1.2.1 (2007-02-27)</h1>
-<div class="section" id="id384">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Build fixes for MS compiler</li>
-<li>Item assignments to special names like <tt class="docutils literal"><span class="pre">element["text"]</span></tt> failed</li>
-<li>Renamed ObjectifiedDataElement.__setText() to _setText() to make it easier
-to access</li>
-<li>The pattern for attribute names in ObjectPath was too restrictive</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id385">
-<h1>1.2 (2007-02-20)</h1>
-<div class="section" id="id386">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Rich comparison of QName objects</li>
-<li>Support for regular expressions in benchmark selection</li>
-<li>get/set emulation (not .attrib!) for attributes on processing instructions</li>
-<li>ElementInclude Python module for ElementTree compatible XInclude processing
-that honours custom resolvers registered with the source document</li>
-<li>ElementTree.parser property holds the parser used to parse the document</li>
-<li>setup.py has been refactored for greater readability and flexibility</li>
-<li>--rpath flag to setup.py to induce automatic linking-in of dynamic library
-runtime search paths has been renamed to --auto-rpath. This makes it
-possible to pass an --rpath directly to distutils; previously this was being
-shadowed.</li>
-</ul>
-</div>
-<div class="section" id="id387">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Element instantiation now uses locks to prevent race conditions with threads</li>
-<li>ElementTree.write() did not raise an exception when the file was not writable</li>
-<li>Error handling could crash under Python <= 2.4.1 - fixed by disabling thread
-support in these environments</li>
-<li>Element.find*() did not accept QName objects as path</li>
-</ul>
-</div>
-<div class="section" id="id388">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>code cleanup: redundant _NodeBase super class merged into _Element class
-Note: although the impact should be zero in most cases, this change breaks
-the compatibility of the public C-API</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id389">
-<h1>1.1.2 (2006-10-30)</h1>
-<div class="section" id="id390">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Data elements in objectify support repr(), which is now used by dump()</li>
-<li>Source distribution now ships with a patched Pyrex</li>
-<li>New C-API function makeElement() to create new elements with text,
-tail, attributes and namespaces</li>
-<li>Reuse original parser flags for XInclude</li>
-<li>Simplified support for handling XSLT processing instructions</li>
-</ul>
-</div>
-<div class="section" id="id391">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Parser resources were not freed before the next parser run</li>
-<li>Open files and XML strings returned by Python resolvers were not
-closed/freed</li>
-<li>Crash in the IDDict returned by XMLDTDID</li>
-<li>Copying Comments and ProcessingInstructions failed</li>
-<li>Memory leak for external URLs in _XSLTProcessingInstruction.parseXSL()</li>
-<li>Memory leak when garbage collecting tailed root elements</li>
-<li>HTML script/style content was not propagated to .text</li>
-<li>Show text xincluded between text nodes correctly in .text and .tail</li>
-<li>'integer * objectify.StringElement' operation was not supported</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id392">
-<h1>1.1.1 (2006-09-21)</h1>
-<div class="section" id="id393">
-<h2>Features added</h2>
-<ul class="simple">
-<li>XSLT profiling support (<tt class="docutils literal">profile_run</tt> keyword)</li>
-<li>countchildren() method on objectify.ObjectifiedElement</li>
-<li>Support custom elements for tree nodes in lxml.objectify</li>
-</ul>
-</div>
-<div class="section" id="id394">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>lxml.objectify failed to support long data values (e.g., "123L")</li>
-<li>Error messages from XSLT did not reach <tt class="docutils literal">XSLT.error_log</tt></li>
-<li>Factories objectify.Element() and objectify.DataElement() were missing
-<tt class="docutils literal">attrib</tt> and <tt class="docutils literal">nsmap</tt> keyword arguments</li>
-<li>Changing the default parser in lxml.objectify did not update the factories
-Element() and DataElement()</li>
-<li>Let lxml.objectify.Element() always generate tree elements (not data
-elements)</li>
-<li>Build under Windows failed ('0' bug in patched Pyrex version)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id395">
-<h1>1.1 (2006-09-13)</h1>
-<div class="section" id="id396">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Comments and processing instructions return '<!-- comment -->' and
-'<?pi-target content?>' for repr()</li>
-<li>Parsers are now the preferred (and default) place where element class lookup
-schemes should be registered. Namespace lookup is no longer supported by
-default.</li>
-<li>Support for Python 2.5 beta</li>
-<li>Unlock the GIL for deep copying documents and for XPath()</li>
-<li>New <tt class="docutils literal">compact</tt> keyword argument for parsing read-only documents</li>
-<li>Support for parser options in iterparse()</li>
-<li>The <tt class="docutils literal">namespace</tt> axis is supported in XPath and returns (prefix, URI)
-tuples</li>
-<li>The XPath expression "/" now returns an empty list instead of raising an
-exception</li>
-<li>XML-Object API on top of lxml (lxml.objectify)</li>
-<li>Customizable Element class lookup:<ul>
-<li>different pre-implemented lookup mechanisms</li>
-<li>support for externally provided lookup functions</li>
-</ul>
-</li>
-<li>Support for processing instructions (ET-like, not compatible)</li>
-<li>Public C-level API for independent extension modules</li>
-<li>Module level <tt class="docutils literal">iterwalk()</tt> function as 'iterparse' for trees</li>
-<li>Module level <tt class="docutils literal">iterparse()</tt> function similar to ElementTree (see
-documentation for differences)</li>
-<li>Element.nsmap property returns a mapping of all namespace prefixes known at
-the Element to their namespace URI</li>
-<li>Reentrant threading support in RelaxNG, XMLSchema and XSLT</li>
-<li>Threading support in parsers and serializers:<ul>
-<li>All in-memory operations (tostring, parse(StringIO), etc.) free the GIL</li>
-<li>File operations (on file names) free the GIL</li>
-<li>Reading from file-like objects frees the GIL and reacquires it for reading</li>
-<li>Serialisation to file-like objects is single-threaded (high lock overhead)</li>
-</ul>
-</li>
-<li>Element iteration over XPath axes:<ul>
-<li>Element.iterdescendants() iterates over the descendants of an element</li>
-<li>Element.iterancestors() iterates over the ancestors of an element (from
-parent to parent)</li>
-<li>Element.itersiblings() iterates over either the following or preceding
-siblings of an element</li>
-<li>Element.iterchildren() iterates over the children of an element in either
-direction</li>
-<li>All iterators support the <tt class="docutils literal">tag</tt> keyword argument to restrict the
-generated elements</li>
-</ul>
-</li>
-<li>Element.getnext() and Element.getprevious() return the direct siblings of an
-element</li>
-</ul>
-</div>
-<div class="section" id="id397">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>filenames with local 8-bit encoding were not supported</li>
-<li>1.1beta did not compile under Python 2.3</li>
-<li>ignore unknown 'pyval' attribute values in objectify</li>
-<li>objectify.ObjectifiedElement.addattr() failed to accept Elements and Lists</li>
-<li>objectify.ObjectPath.setattr() failed to accept Elements and Lists</li>
-<li>XPathSyntaxError now inherits from XPathError</li>
-<li>Threading race conditions in RelaxNG and XMLSchema</li>
-<li>Crash when mixing elements from XSLT results into other trees, concurrent
-XSLT is only allowed when the stylesheet was parsed in the main thread</li>
-<li>The EXSLT <tt class="docutils literal">regexp:match</tt> function now works as defined (except for some
-differences in the regular expression syntax)</li>
-<li>Setting element.text to '' returned None on request, not the empty string</li>
-<li><tt class="docutils literal">iterparse()</tt> could crash on long XML files</li>
-<li>Creating documents no longer copies the parser for later URL resolving. For
-performance reasons, only a reference is kept. Resolver updates on the
-parser will now be reflected by documents that were parsed before the
-change. Although this should rarely become visible, it is a behavioral
-change from 1.0.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id398">
-<h1>1.0.4 (2006-09-09)</h1>
-<div class="section" id="id399">
-<h2>Features added</h2>
-<ul class="simple">
-<li>List-like <tt class="docutils literal">Element.extend()</tt> method</li>
-</ul>
-</div>
-<div class="section" id="id400">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in tail handling in <tt class="docutils literal">Element.replace()</tt></li>
-</ul>
-</div>
-</div>
-<div class="section" id="id401">
-<h1>1.0.3 (2006-08-08)</h1>
-<div class="section" id="id402">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Element.replace(old, new) method to replace a subelement by another one</li>
-</ul>
-</div>
-<div class="section" id="id403">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when mixing elements from XSLT results into other trees</li>
-<li>Copying/deepcopying did not work for ElementTree objects</li>
-<li>Setting an attribute to a non-string value did not raise an exception</li>
-<li>Element.remove() deleted the tail text from the removed Element</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id404">
-<h1>1.0.2 (2006-06-27)</h1>
-<div class="section" id="id405">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for setting a custom default Element class as opposed to namespace
-specific classes (which still override the default class)</li>
-</ul>
-</div>
-<div class="section" id="id406">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Rare exceptions in Python list functions were not handled</li>
-<li>Parsing accepted unicode strings with XML encoding declaration in certain
-cases</li>
-<li>Parsing 8-bit encoded strings from StringIO objects raised an exception</li>
-<li>Module function <tt class="docutils literal">initThread()</tt> was removed - useless (and never worked)</li>
-<li>XSLT and parser exception messages include the error line number</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id407">
-<h1>1.0.1 (2006-06-09)</h1>
-<div class="section" id="id408">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Repeated calls to Element.attrib now efficiently return the same instance</li>
-</ul>
-</div>
-<div class="section" id="id409">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Document deallocation could crash in certain garbage collection scenarios</li>
-<li>Extension function calls in XSLT variable declarations could break the
-stylesheet and crash on repeated calls</li>
-<li>Deep copying Elements could lose namespaces declared in parents</li>
-<li>Deep copying Elements did not copy tail</li>
-<li>Parsing file(-like) objects failed to load external entities</li>
-<li>Parsing 8-bit strings from file(-like) objects raised an exception</li>
-<li>xsl:include failed when the stylesheet was parsed from a file-like object</li>
-<li>lxml.sax.ElementTreeProducer did not call startDocument() / endDocument()</li>
-<li>MSVC compiler complained about long strings (supports only 2048 bytes)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id410">
-<h1>1.0 (2006-06-01)</h1>
-<div class="section" id="id411">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Element.getiterator() and the findall() methods support finding arbitrary
-elements from a namespace (pattern <tt class="docutils literal">{namespace}*</tt>)</li>
-<li>Another speedup in tree iteration code</li>
-<li>General speedup of Python Element object creation and deallocation</li>
-<li>Writing C14N no longer serializes in memory (reduced memory footprint)</li>
-<li>PyErrorLog for error logging through the Python <tt class="docutils literal">logging</tt> module</li>
-<li><tt class="docutils literal">Element.getroottree()</tt> returns an ElementTree for the root node of the
-document that contains the element.</li>
-<li>ElementTree.getpath(element) returns a simple, absolute XPath expression to
-find the element in the tree structure</li>
-<li>Error logs have a <tt class="docutils literal">last_error</tt> attribute for convenience</li>
-<li>Comment texts can be changed through the API</li>
-<li>Formatted output via <tt class="docutils literal">pretty_print</tt> keyword in serialization functions</li>
-<li>XSLT can block access to file system and network via <tt class="docutils literal">XSLTAccessControl</tt></li>
-<li>ElementTree.write() no longer serializes in memory (reduced memory
-footprint)</li>
-<li>Speedup of Element.findall(tag) and Element.getiterator(tag)</li>
-<li>Support for writing the XML representation of Elements and ElementTrees to
-Python unicode strings via <tt class="docutils literal">etree.tounicode()</tt></li>
-<li>Support for writing XSLT results to Python unicode strings via <tt class="docutils literal">unicode()</tt></li>
-<li>Parsing a unicode string no longer copies the string (reduced memory
-footprint)</li>
-<li>Parsing file-like objects reads chunks rather than the whole file (reduced
-memory footprint)</li>
-<li>Parsing StringIO objects from the start avoids copying the string (reduced
-memory footprint)</li>
-<li>Read-only 'docinfo' attribute in ElementTree class holds DOCTYPE
-information, original encoding and XML version as seen by the parser</li>
-<li>etree module can be compiled without libxslt by commenting out the line
-<tt class="docutils literal">include "xslt.pxi"</tt> near the end of the etree.pyx source file</li>
-<li>Better error messages in parser exceptions</li>
-<li>Error reporting also works in XSLT</li>
-<li>Support for custom document loaders (URI resolvers) in parsers and XSLT,
-resolvers are registered at parser level</li>
-<li>Implementation of exslt:regexp for XSLT based on the Python 're' module,
-enabled by default, can be switched off with 'regexp=False' keyword argument</li>
-<li>Support for exslt extensions (libexslt) and libxslt extra functions
-(node-set, document, write, output)</li>
-<li>Substantial speedup in XPath.evaluate()</li>
-<li>HTMLParser for parsing (broken) HTML</li>
-<li>XMLDTDID function parses XML into tuple (root node, ID dict) based on xml:id
-implementation of libxml2 (as opposed to ET compatible XMLID)</li>
-</ul>
-</div>
-<div class="section" id="id412">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory leak in Element.__setitem__</li>
-<li>Memory leak in Element.attrib.items() and Element.attrib.values()</li>
-<li>Memory leak in XPath extension functions</li>
-<li>Memory leak in unicode related setup code</li>
-<li>Element now raises ValueError on empty tag names</li>
-<li>Namespace fixing after moving elements between documents could fail if the
-source document was freed too early</li>
-<li>Setting namespace-less tag names on namespaced elements ('{ns}t' -> 't')
-didn't reset the namespace</li>
-<li>Unknown constants from newer libxml2 versions could raise exceptions in the
-error handlers</li>
-<li>lxml.etree compiles much faster</li>
-<li>On libxml2 <= 2.6.22, parsing strings with encoding declaration could fail
-in certain cases</li>
-<li>Document reference in ElementTree objects was not updated when the root
-element was moved to a different document</li>
-<li>Running absolute XPath expressions on an Element now evaluates against the
-root tree</li>
-<li>Evaluating absolute XPath expressions (<tt class="docutils literal">/*</tt>) on an ElementTree could fail</li>
-<li>Crashes when calling XSLT, RelaxNG, etc. with uninitialized ElementTree
-objects</li>
-<li>Removed public function <tt class="docutils literal">initThreadLogging()</tt>, replaced by more general
-<tt class="docutils literal">initThread()</tt> which fixes a number of setup problems in threads</li>
-<li>Memory leak when using iconv encoders in tostring/write</li>
-<li>Deep copying Elements and ElementTrees maintains the document information</li>
-<li>Serialization functions raise LookupError for unknown encodings</li>
-<li>Memory deallocation crash resulting from deep copying elements</li>
-<li>Some ElementTree methods could crash if the root node was not initialized
-(neither file nor element passed to the constructor)</li>
-<li>Element/SubElement failed to set attribute namespaces from passed <tt class="docutils literal">attrib</tt>
-dictionary</li>
-<li><tt class="docutils literal">tostring()</tt> adds an XML declaration for non-ASCII encodings</li>
-<li><tt class="docutils literal">tostring()</tt> failed to serialize encodings that contain 0-bytes</li>
-<li>ElementTree.xpath() and XPathDocumentEvaluator were not using the
-ElementTree root node as reference point</li>
-<li>Calling <tt class="docutils literal"><span class="pre">document('')</span></tt> in XSLT failed to return the stylesheet</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id413">
-<h1>0.9.2 (2006-05-10)</h1>
-<div class="section" id="id414">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Speedup for Element.makeelement(): the new element reuses the original
-libxml2 document instead of creating a new empty one</li>
-<li>Speedup for reversed() iteration over element children (Py2.4+ only)</li>
-<li>ElementTree compatible QName class</li>
-<li>RelaxNG and XMLSchema accept any Element, not only ElementTrees</li>
-</ul>
-</div>
-<div class="section" id="id415">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>str(xslt_result) was broken for XSLT output other than UTF-8</li>
-<li>Memory leak if write_c14n fails to write the file after conversion</li>
-<li>Crash in XMLSchema and RelaxNG when passing non-schema documents</li>
-<li>Memory leak in RelaxNG() when RelaxNGParseError is raised</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id416">
-<h1>0.9.1 (2006-03-30)</h1>
-<div class="section" id="id417">
-<h2>Features added</h2>
-<ul class="simple">
-<li>lxml.sax.ElementTreeContentHandler checks closing elements and raises
-SaxError on mismatch</li>
-<li>lxml.sax.ElementTreeContentHandler supports namespace-less SAX events
-(startElement, endElement) and defaults to empty attributes (keyword
-argument)</li>
-<li>Speedup for repeatedly accessing element tag names</li>
-<li>Minor API performance improvements</li>
-</ul>
-</div>
-<div class="section" id="id418">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory deallocation bug when using XSLT output method "html"</li>
-<li>sax.py was handling UTF-8 encoded tag names where it shouldn't</li>
-<li>lxml.tests package will no longer be installed (is still in source tar)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id419">
-<h1>0.9 (2006-03-20)</h1>
-<div class="section" id="id420">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Error logging API for libxml2 error messages</li>
-<li>Various performance improvements</li>
-<li>Benchmark script for lxml, ElementTree and cElementTree</li>
-<li>Support for registering extension functions through new FunctionNamespace
-class (see doc/extensions.txt)</li>
-<li>ETXPath class for XPath expressions in ElementTree notation ('//{ns}tag')</li>
-<li>Support for variables in XPath expressions (also in XPath class)</li>
-<li>XPath class for compiled XPath expressions</li>
-<li>XMLID module level function (ElementTree compatible)</li>
-<li>XMLParser API for customized libxml2 parser configuration</li>
-<li>Support for custom Element classes through new Namespace API (see
-doc/namespace_extensions.txt)</li>
-<li>Common exception base class LxmlError for module exceptions</li>
-<li>real iterator support in iter(Element), Element.getiterator()</li>
-<li>XSLT objects are callable, result trees support str()</li>
-<li>Added MANIFEST.in for easier creation of RPM files.</li>
-<li>'getparent' method on elements allows navigation to an element's
-parent element.</li>
-<li>Python core compatible SAX tree builder and SAX event generator. See
-doc/sax.txt for more information.</li>
-</ul>
-</div>
-<div class="section" id="id421">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Segfaults and memory leaks in various API functions of Element</li>
-<li>Segfault in XSLT.tostring()</li>
-<li>ElementTree objects no longer interfere, Elements can be root of different
-ElementTrees at the same time</li>
-<li>document('') works in XSLT documents read from files (in-memory documents
-cannot support this due to libxslt deficiencies)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id422">
-<h1>0.8 (2005-11-03)</h1>
-<div class="section" id="id423">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for copy.deepcopy() on elements. copy.copy() works also, but
-does the same thing, and does <em>not</em> create a shallow copy, as that
-makes no sense in the context of libxml2 trees. This means a
-potential incompatibility with ElementTree, but there's more chance
-that it works than if copy.copy() isn't supported at all.</li>
-<li>Increased compatibility with (c)ElementTree; .parse() on ElementTree is
-supported and parsing of gzipped XML files works.</li>
-<li>implemented index() on elements, allowing one to find the index of a
-SubElement.</li>
-</ul>
-</div>
-<div class="section" id="id424">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Use xslt-config instead of xml2-config to find out libxml2
-directories to take into account a case where libxslt is installed
-in a different directory than libxslt.</li>
-<li>Eliminate crash condition in iteration when text nodes are changed.</li>
-<li>Passing 'None' to tostring() does not result in a segfault anymore,
-but an AssertionError.</li>
-<li>Some test fixes for Windows.</li>
-<li>Raise XMLSyntaxError and XPathSyntaxError instead of plain python
-syntax errors. This should be less confusing.</li>
-<li>Fixed error with uncaught exception in Pyrex code.</li>
-<li>Calling lxml.etree.fromstring('') throws XMLSyntaxError instead of a
-segfault.</li>
-<li>has_key() works on attrib. 'in' tests also work correctly on attrib.</li>
-<li>INSTALL.txt was saying 2.2.16 instead of 2.6.16 as a supported
-libxml2 version, as it should.</li>
-<li>Passing a UTF-8 encoded string to the XML() function would fail;
-fixed.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id425">
-<h1>0.7 (2005-06-15)</h1>
-<div class="section" id="id426">
-<h2>Features added</h2>
-<ul class="simple">
-<li>parameters (XPath expressions) can be passed to XSLT using keyword
-parameters.</li>
-<li>Simple XInclude support. Calling the xinclude() method on a tree
-will process any XInclude statements in the document.</li>
-<li>XMLSchema support. Use the XMLSchema class or the convenience
-xmlschema() method on a tree to do XML Schema (XSD) validation.</li>
-<li>Added convenience xslt() method on tree. This is less efficient
-than the XSLT object, but makes it easier to write quick code.</li>
-<li>Added convenience relaxng() method on tree. This is less efficient
-than the RelaxNG object, but makes it easier to write quick code.</li>
-<li>Make it possible to use XPathEvaluator with elements as well. The
-XPathEvaluator in this case will retain the element so multiple
-XPath queries can be made against one element efficiently. This
-replaces the second argument to the .evaluate() method that existed
-previously.</li>
-<li>Allow registerNamespace() to be called on an XPathEvaluator, after
-creation, to add additional namespaces. Also allow registerNamespaces(),
-which does the same for a namespace dictionary.</li>
-<li>Add 'prefix' attribute to element to be able to read prefix information.
-This is entirely read-only.</li>
-<li>It is possible to supply an extra nsmap keyword parameter to
-the Element() and SubElement() constructors, which supplies a
-prefix to namespace URI mapping. This will create namespace
-prefix declarations on these elements and these prefixes will show up
-in XML serialization.</li>
-</ul>
-</div>
-<div class="section" id="id427">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Killed yet another memory management related bug: trees created
-using newDoc would not get a libxml2-level dictionary, which caused
-problems when deallocating these documents later if they contained a
-node that came from a document with a dictionary.</li>
-<li>Moving namespaced elements between documents was problematic as
-references to the original document would remain. This has been fixed
-by applying xmlReconciliateNs() after each move operation.</li>
-<li>Can pass None to 'dump()' without segfaults.</li>
-<li>tostring() works properly for non-root elements as well.</li>
-<li>Cleaned out the tostring() method so it should handle encoding
-correctly.</li>
-<li>Cleaned out the ElementTree.write() method so it should handle encoding
-correctly. Writing directly to a file should also be faster, as there is no
-need to go through a Python string in that case. Made sure the test cases
-test both serializing to StringIO as well as serializing to a real file.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id428">
-<h1>0.6 (2005-05-14)</h1>
-<div class="section" id="id429">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Changed setup.py so that library_dirs is also guessed. This should
-help with compilation on the Mac OS X platform, where otherwise the
-wrong library (shipping with the OS) could be picked up.</li>
-<li>Tweaked setup.py so that it picks up the version from version.txt.</li>
-</ul>
-</div>
-<div class="section" id="id430">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Do the right thing when handling namespaced attributes.</li>
-<li>fix bug where tostring() moved nodes into new documents. tostring()
-had very nasty side-effects before this fix, sorry!</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id431">
-<h1>0.5.1 (2005-04-09)</h1>
-<ul class="simple">
-<li>Python 2.2 compatibility fixes.</li>
-<li>unicode fixes in Element() and Comment() as well as XML(); unicode
-input wasn't properly being UTF-8 encoded.</li>
-</ul>
-</div>
-<div class="section" id="id432">
-<h1>0.5 (2005-04-08)</h1>
-<p>Initial public release.</p>
-</div>
-</div>
-<div class="footer">
-<hr class="footer" />
-Generated on: 2021-03-21.
-
-</div>
-</body>
-</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+<title>lxml changelog</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="lxml-changelog">
+<h1 class="title">lxml changelog</h1>
+
+<div class="section" id="id1">
+<h1>4.6.4 (2021-11-01)</h1>
+<div class="section" id="features-added">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/317">GH#317</a>: A new property <tt class="docutils literal">system_url</tt> was added to DTD entities.
+Patch by Thirdegree.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/314">GH#314</a>: The <tt class="docutils literal">STATIC_*</tt> variables in <tt class="docutils literal">setup.py</tt> can now be passed via env vars.
+Patch by Isaac Jurado.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id2">
+<h1>4.6.3 (2021-03-21)</h1>
+<div class="section" id="bugs-fixed">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>A vulnerability (CVE-2021-28957) was discovered in the HTML Cleaner by Kevin Chung,
+which allowed JavaScript to pass through. The cleaner now removes the HTML5
+<tt class="docutils literal">formaction</tt> attribute.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id3">
+<h1>4.6.2 (2020-11-26)</h1>
+<div class="section" id="id4">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>A vulnerability (CVE-2020-27783) was discovered in the HTML Cleaner by Yaniv Nizry,
+which allowed JavaScript to pass through. The cleaner now removes more sneaky
+"style" content.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id5">
+<h1>4.6.1 (2020-10-18)</h1>
+<div class="section" id="id6">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>A vulnerability was discovered in the HTML Cleaner by Yaniv Nizry, which allowed
+JavaScript to pass through. The cleaner now removes more sneaky "style" content.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id7">
+<h1>4.6.0 (2020-10-17)</h1>
+<div class="section" id="id8">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/310">GH#310</a>: <tt class="docutils literal">lxml.html.InputGetter</tt> supports <tt class="docutils literal">__len__()</tt> to count the number of input fields.
+Patch by Aidan Woolley.</li>
+<li><tt class="docutils literal">lxml.html.InputGetter</tt> has a new <tt class="docutils literal">.items()</tt> method to ease processing all input fields.</li>
+<li><tt class="docutils literal">lxml.html.InputGetter.keys()</tt> now returns the field names in document order.</li>
+<li>GH-309: The API documentation is now generated using <tt class="docutils literal"><span class="pre">sphinx-apidoc</span></tt>.
+Patch by Chris Mayo.</li>
+</ul>
+</div>
+<div class="section" id="id9">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1869455">LP#1869455</a>: C14N 2.0 serialisation failed for unprefixed attributes
+when a default namespace was defined.</li>
+<li><tt class="docutils literal">TreeBuilder.close()</tt> raised <tt class="docutils literal">AssertionError</tt> in some error cases where it
+should have raised <tt class="docutils literal">XMLSyntaxError</tt>. It now raises a combined exception to
+keep up backwards compatibility, while switching to <tt class="docutils literal">XMLSyntaxError</tt> as an
+interface.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id10">
+<h1>4.5.2 (2020-07-09)</h1>
+<div class="section" id="id11">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><tt class="docutils literal">Cleaner()</tt> now validates that only known configuration options can be set.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1882606">LP#1882606</a>: <tt class="docutils literal">Cleaner.clean_html()</tt> discarded comments and PIs regardless of the
+corresponding configuration option, if <tt class="docutils literal">remove_unknown_tags</tt> was set.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1880251">LP#1880251</a>: Instead of globally overwriting the document loader in libxml2, lxml now
+sets it per parser run, which improves the interoperability with other users of libxml2
+such as libxmlsec.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1881960">LP#1881960</a>: Fix build in CPython 3.10 by using Cython 0.29.21.</li>
+<li>The setup options "--with-xml2-config" and "--with-xslt-config" were accidentally renamed
+to "--xml2-config" and "--xslt-config" in 4.5.1 and are now available again.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id12">
+<h1>4.5.1 (2020-05-19)</h1>
+<div class="section" id="id13">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1570388">LP#1570388</a>: Fix failures when serialising documents larger than 2GB in some cases.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1865141">LP#1865141</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/298">GH#298</a>: <tt class="docutils literal">QName</tt> values were not accepted by the <tt class="docutils literal">el.iter()</tt> method.
+Patch by xmo-odoo.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1863413">LP#1863413</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/297">GH#297</a>: The build failed to detect libraries on Linux that are only
+configured via pkg-config.
+Patch by Hugh McMaster.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id14">
+<h1>4.5.0 (2020-01-29)</h1>
+<div class="section" id="id15">
+<h2>Features added</h2>
+<ul class="simple">
+<li>A new function <tt class="docutils literal">indent()</tt> was added to insert tail whitespace for pretty-printing
+an XML tree.</li>
+</ul>
+</div>
+<div class="section" id="id16">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1857794">LP#1857794</a>: Tail text of nodes that get removed from a document using item
+deletion disappeared silently instead of sticking with the node that was removed.</li>
+</ul>
+</div>
+<div class="section" id="other-changes">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>MacOS builds are 64-bit-only by default.
+Set CFLAGS and LDFLAGS explicitly to override it.</li>
+<li>Linux/MacOS Binary wheels now use libxml2 2.9.10 and libxslt 1.1.34.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1840234">LP#1840234</a>: The package version number is now available as <tt class="docutils literal">lxml.__version__</tt>.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id17">
+<h1>4.4.3 (2020-01-28)</h1>
+<div class="section" id="id18">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1844674">LP#1844674</a>: <tt class="docutils literal">itertext()</tt> was missing tail text of comments and PIs since 4.4.0.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id19">
+<h1>4.4.2 (2019-11-25)</h1>
+<div class="section" id="id20">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1835708">LP#1835708</a>: <tt class="docutils literal">ElementInclude</tt> incorrectly rejected repeated non-recursive
+includes as recursive.
+Patch by Rainer Hausdorf.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id21">
+<h1>4.4.1 (2019-08-11)</h1>
+<div class="section" id="id22">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1838252">LP#1838252</a>: The order of an OrderedDict was lost in 4.4.0 when passing it as
+attrib mapping during element creation.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1838521">LP#1838521</a>: The package metadata now lists the supported Python versions.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id23">
+<h1>4.4.0 (2019-07-27)</h1>
+<div class="section" id="id24">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">Element.clear()</tt> accepts a new keyword argument <tt class="docutils literal">keep_tail=True</tt> to clear
+everything but the tail text. This is helpful in some document-style use cases
+and for clearing the current element in <tt class="docutils literal">iterparse()</tt> and pull parsing.</li>
+<li>When creating attributes or namespaces from a dict in Python 3.6+, lxml now
+preserves the original insertion order of that dict, instead of always sorting
+the items by name. A similar change was made for ElementTree in CPython 3.8.
+See <a class="reference external" href="https://bugs.python.org/issue34160">https://bugs.python.org/issue34160</a></li>
+<li>Integer elements in <tt class="docutils literal">lxml.objectify</tt> implement the <tt class="docutils literal">__index__()</tt> special method.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/269">GH#269</a>: Read-only elements in XSLT were missing the <tt class="docutils literal">nsmap</tt> property.
+Original patch by Jan Pazdziora.</li>
+<li>ElementInclude can now restrict the maximum inclusion depth via a <tt class="docutils literal">max_depth</tt>
+argument to prevent content explosion. It is limited to 6 by default.</li>
+<li>The <tt class="docutils literal">target</tt> object of the XMLParser can have <tt class="docutils literal">start_ns()</tt> and <tt class="docutils literal">end_ns()</tt>
+callback methods to listen to namespace declarations.</li>
+<li>The <tt class="docutils literal">TreeBuilder</tt> has new arguments <tt class="docutils literal">comment_factory</tt> and <tt class="docutils literal">pi_factory</tt> to
+pass factories for creating comments and processing instructions, as well as
+flag arguments <tt class="docutils literal">insert_comments</tt> and <tt class="docutils literal">insert_pis</tt> to discard them from the
+tree when set to false.</li>
+<li>A <a class="reference external" href="https://www.w3.org/TR/xml-c14n2/">C14N 2.0</a> implementation was added as
+<tt class="docutils literal">etree.canonicalize()</tt>, a corresponding <tt class="docutils literal">C14NWriterTarget</tt> class, and
+a <tt class="docutils literal">c14n2</tt> serialisation method.</li>
+</ul>
+</div>
+<div class="section" id="id25">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When writing to file paths that contain the URL escape character '%', the file
+path could wrongly be mangled by URL unescaping and thus write to a different
+file or directory. Code that writes to file paths that are provided by untrusted
+sources, but that must work with previous versions of lxml, should best either
+reject paths that contain '%' characters, or otherwise make sure that the path
+does not contain maliciously injected '%XX' URL hex escapes for paths like '../'.</li>
+<li>Assigning to Element child slices with negative step could insert the slice at
+the wrong position, starting too far on the left.</li>
+<li>Assigning to Element child slices with overly large step size could take very
+long, regardless of the length of the actual slice.</li>
+<li>Assigning to Element child slices of the wrong size could sometimes fail to
+raise a ValueError (like a list assignment would) and instead assign outside
+of the original slice bounds or leave parts of it unreplaced.</li>
+<li>The <tt class="docutils literal">comment</tt> and <tt class="docutils literal">pi</tt> events in <tt class="docutils literal">iterwalk()</tt> were never triggered, and
+instead, comments and processing instructions in the tree were reported as
+<tt class="docutils literal">start</tt> elements. Also, when walking an ElementTree (as opposed to its root
+element), comments and PIs outside of the root element are now reported.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1827833">LP#1827833</a>: The RelaxNG compact syntax support was broken with recent versions
+of <tt class="docutils literal">rnc2rng</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1758553">LP#1758553</a>: The HTML elements <tt class="docutils literal">source</tt> and <tt class="docutils literal">track</tt> were added to the list
+of empty tags in <tt class="docutils literal">lxml.html.defs</tt>.</li>
+<li>Registering a prefix other than "xml" for the XML namespace is now rejected.</li>
+<li>Failing to write XSLT output to a file could raise a misleading exception.
+It now raises <tt class="docutils literal">IOError</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id26">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Support for Python 3.4 was removed.</li>
+<li>When using <tt class="docutils literal"><span class="pre">Element.find*()</span></tt> with prefix-namespace mappings, the empty string
+is now accepted to define a default namespace, in addition to the previously
+supported <tt class="docutils literal">None</tt> prefix. Empty strings are more convenient since they keep
+all prefix keys in a namespace dict strings, which simplifies sorting etc.</li>
+<li>The <tt class="docutils literal">ElementTree.write_c14n()</tt> method has been deprecated in favour of the
+long preferred <tt class="docutils literal">ElementTree.write(f, <span class="pre">method="c14n")</span></tt>. It will be removed
+in a future release.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id27">
+<h1>4.3.5 (2019-07-27)</h1>
+<ul class="simple">
+<li>Rebuilt with Cython 0.29.13 to support Python 3.8.</li>
+</ul>
+</div>
+<div class="section" id="id28">
+<h1>4.3.4 (2019-06-10)</h1>
+<ul class="simple">
+<li>Rebuilt with Cython 0.29.10 to support Python 3.8.</li>
+</ul>
+</div>
+<div class="section" id="id29">
+<h1>4.3.3 (2019-03-26)</h1>
+<div class="section" id="id30">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fix leak of output buffer and unclosed files in <tt class="docutils literal">_XSLTResultTree.write_output()</tt>.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id31">
+<h1>4.3.2 (2019-02-29)</h1>
+<div class="section" id="id32">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in 4.3.1 when appending a child subtree with certain text nodes.</li>
+</ul>
+</div>
+<div class="section" id="id33">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Built with Cython 0.29.6.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id34">
+<h1>4.3.1 (2019-02-08)</h1>
+<div class="section" id="id35">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1814522">LP#1814522</a>: Crash when appending a child subtree that contains unsubstituted
+entity references.</li>
+</ul>
+</div>
+<div class="section" id="id36">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Built with Cython 0.29.5.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id37">
+<h1>4.3.0 (2019-01-04)</h1>
+<div class="section" id="id38">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The module <tt class="docutils literal">lxml.sax</tt> is compiled using Cython in order to speed it up.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/267">GH#267</a>: <tt class="docutils literal">lxml.sax.ElementTreeProducer</tt> now preserves the namespace prefixes.
+If two prefixes point to the same URI, the first prefix in alphabetical order
+is used. Patch by Lennart Regebro.</li>
+<li>Updated ISO-Schematron implementation to 2013 version (now MIT licensed)
+and the corresponding schema to the 2016 version (with optional "properties").</li>
+</ul>
+</div>
+<div class="section" id="id39">
+<h2>Other changes</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/270">GH#270</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/271">GH#271</a>: Support for Python 2.6 and 3.3 was removed.
+Patch by hugovk.</li>
+<li>The minimum dependency versions were raised to libxml2 2.9.2 and libxslt 1.1.27,
+which were released in 2014 and 2012 respectively.</li>
+<li>Built with Cython 0.29.2.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id40">
+<h1>4.2.6 (2019-01-02)</h1>
+<div class="section" id="id41">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1799755">LP#1799755</a>: Fix a DeprecationWarning in Py3.7+.</li>
+<li>Import warnings in Python 3.6+ were resolved.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id42">
+<h1>4.2.5 (2018-09-09)</h1>
+<div class="section" id="id43">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Javascript URLs that used URL escaping were not removed by the HTML cleaner.
+Security problem found by Omar Eissa. (CVE-2018-19787)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id44">
+<h1>4.2.4 (2018-08-03)</h1>
+<div class="section" id="id45">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/259">GH#259</a>: Allow using <tt class="docutils literal"><span class="pre">pkg-config</span></tt> for build configuration.
+Patch by Patrick Griffis.</li>
+</ul>
+</div>
+<div class="section" id="id46">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1773749">LP#1773749</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/268">GH#268</a>: Crash when moving an element to another document with
+<tt class="docutils literal">Element.insert()</tt>.
+Patch by Alexander Weggerle.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id47">
+<h1>4.2.3 (2018-06-27)</h1>
+<div class="section" id="id48">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Reverted <a class="reference external" href="https://github.com/lxml/lxml/issues/265">GH#265</a>: lxml links against zlib as a shared library again.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id49">
+<h1>4.2.2 (2018-06-22)</h1>
+<div class="section" id="id50">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/266">GH#266</a>: Fix sporadic crash during GC when parse-time schema validation is used
+and the parser participates in a reference cycle.
+Original patch by Julien Greard.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/265">GH#265</a>: lxml no longer links against zlib as a shared library, only on static builds.
+Patch by Nehal J Wani.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id52">
+<h1>4.2.1 (2018-03-21)</h1>
+<div class="section" id="id53">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1755825">LP#1755825</a>: <tt class="docutils literal">iterwalk()</tt> failed to return the 'start' event for the initial
+element if a tag selector is used.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1756314">LP#1756314</a>: Failure to import 4.2.0 into PyPy due to a missing library symbol.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1727864">LP#1727864</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/258">GH#258</a>: Add "-isysroot" linker option on MacOS as needed by XCode 9.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id54">
+<h1>4.2.0 (2018-03-13)</h1>
+<div class="section" id="id55">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/255">GH#255</a>: <tt class="docutils literal">SelectElement.value</tt> returns more standard-compliant and
+browser-like defaults for non-multi-selects. If no option is selected, the
+value of the first option is returned (instead of None). If multiple options
+are selected, the value of the last one is returned (instead of that of the
+first one). If no options are present (not standard-compliant)
+<tt class="docutils literal">SelectElement.value</tt> still returns <tt class="docutils literal">None</tt>.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/261">GH#261</a>: The <tt class="docutils literal">HTMLParser()</tt> now supports the <tt class="docutils literal">huge_tree</tt> option.
+Patch by stranac.</li>
+</ul>
+</div>
+<div class="section" id="id56">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: Some XSLT messages were not captured by the transform error log.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1737825">LP#1737825</a>: Crash at shutdown after an interrupted iterparse run with XMLSchema
+validation.</li>
+</ul>
+</div>
+<div class="section" id="id57">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id58">
+<h1>4.1.1 (2017-11-04)</h1>
+<ul class="simple">
+<li>Rebuild with Cython 0.27.3 to improve support for Py3.7.</li>
+</ul>
+</div>
+<div class="section" id="id59">
+<h1>4.1.0 (2017-10-13)</h1>
+<div class="section" id="id60">
+<h2>Features added</h2>
+<ul class="simple">
+<li>ElementPath supports text predicates for current node, like "[.='text']".</li>
+<li>ElementPath allows spaces in predicates.</li>
+<li>Custom Element classes and XPath functions can now be registered with a
+decorator rather than explicit dict assignments.</li>
+<li>Static Linux wheels are now built with link time optimisation (LTO) enabled.
+This should have a beneficial impact on the overall performance by providing
+a tighter compiler integration between lxml and libxml2/libxslt.</li>
+</ul>
+</div>
+<div class="section" id="id61">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1722776">LP#1722776</a>: Requesting non-Element objects like comments from a document with
+<tt class="docutils literal">PythonElementClassLookup</tt> could fail with a TypeError.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id62">
+<h1>4.0.0 (2017-09-17)</h1>
+<div class="section" id="id63">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The ElementPath implementation is now compiled using Cython,
+which speeds up the <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods quite significantly.</li>
+<li>The modules <tt class="docutils literal">lxml.builder</tt>, <tt class="docutils literal">lxml.html.diff</tt> and <tt class="docutils literal">lxml.html.clean</tt>
+are also compiled using Cython in order to speed them up.</li>
+<li><tt class="docutils literal">xmlfile()</tt> supports async coroutines using <tt class="docutils literal">async with</tt> and <tt class="docutils literal">await</tt>.</li>
+<li><tt class="docutils literal">iterwalk()</tt> has a new method <tt class="docutils literal">skip_subtree()</tt> that prevents walking into
+the descendants of the current element.</li>
+<li><tt class="docutils literal">RelaxNG.from_rnc_string()</tt> accepts a <tt class="docutils literal">base_url</tt> argument to
+allow relative resource lookups.</li>
+<li>The XSLT result object has a new method <tt class="docutils literal">.write_output(file)</tt> that serialises
+output data into a file according to the <tt class="docutils literal"><xsl:output></tt> configuration.</li>
+</ul>
+</div>
+<div class="section" id="id64">
+<h2>Bugs fixed</h2>
+<ul>
+<li><p class="first"><a class="reference external" href="https://github.com/lxml/lxml/issues/251">GH#251</a>: HTML comments were handled incorrectly by the soupparser.
+Patch by mozbugbox.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1654544">LP#1654544</a>: The html5parser no longer passes the <tt class="docutils literal">useChardet</tt> option
+if the input is a Unicode string, unless explicitly requested. When parsing
+files, the default is to enable it when a URL or file path is passed (because
+the file is then opened in binary mode), and to disable it when reading from
+a file(-like) object.</p>
+<p>Note: This is a backwards incompatible change of the default configuration.
+If your code parses byte strings/streams and depends on character detection,
+please pass the option <tt class="docutils literal">guess_charset=True</tt> explicitly, which already worked
+in older lxml versions.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1703810">LP#1703810</a>: <tt class="docutils literal">etree.fromstring()</tt> failed to parse UTF-32 data with BOM.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1526522">LP#1526522</a>: Some RelaxNG errors were not reported in the error log.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1567526">LP#1567526</a>: Empty and plain text input raised a TypeError in soupparser.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1710429">LP#1710429</a>: Uninitialised variable usage in HTML diff.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1415643">LP#1415643</a>: The closing tags context manager in <tt class="docutils literal">xmlfile()</tt> could continue
+to output end tags even after writing failed with an exception.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1465357">LP#1465357</a>: <tt class="docutils literal">xmlfile.write()</tt> now accepts and ignores None as input argument.</p>
+</li>
+<li><p class="first">Compilation under Py3.7-pre failed due to a modified function signature.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="id65">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The main module source files were renamed from <tt class="docutils literal"><span class="pre">lxml.*.pyx</span></tt> to plain
+<tt class="docutils literal">*.pyx</tt> (e.g. <tt class="docutils literal">etree.pyx</tt>) to simplify their handling in the build
+process. Care was taken to keep the old header files as fallbacks for
+code that compiles against the public C-API of lxml, but it might still
+be worth validating that third-party code does not notice this change.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id66">
+<h1>3.8.0 (2017-06-03)</h1>
+<div class="section" id="id67">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">ElementTree.write()</tt> has a new option <tt class="docutils literal">doctype</tt> that writes out a
+doctype string before the serialisation, in the same way as <tt class="docutils literal">tostring()</tt>.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/220">GH#220</a>: <tt class="docutils literal">xmlfile</tt> allows switching output methods at an element level.
+Patch by Burak Arslan.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1595781">LP#1595781</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/240">GH#240</a>: added a PyCapsule Python API and C-level API for
+passing externally generated libxml2 documents into lxml.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/244">GH#244</a>: error log entries have a new property <tt class="docutils literal">path</tt> with an XPath
+expression (if known, None otherwise) that points to the tree element
+responsible for the error. Patch by Bob Kline.</li>
+<li>The namespace prefix mapping that can be used in ElementPath now injects
+a default namespace when passing a None prefix.</li>
+</ul>
+</div>
+<div class="section" id="id68">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/238">GH#238</a>: Character escapes were not hex-encoded in the <tt class="docutils literal">xmlfile</tt> serialiser.
+Patch by matejcik.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/229">GH#229</a>: fix for externally created XML documents. Patch by Theodore Dubois.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1665241">LP#1665241</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/228">GH#228</a>: Form data handling in lxml.html no longer strips the
+option values specified in form attributes but only the text values.
+Patch by Ashish Kulkarni.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: revert previous fix for XSLT error logging as it breaks
+multi-threaded XSLT processing.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1673355">LP#1673355</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/233">GH#233</a>: <tt class="docutils literal">fromstring()</tt> html5parser failed to parse byte strings.</li>
+</ul>
+</div>
+<div class="section" id="id70">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The previously undocumented <tt class="docutils literal">docstring</tt> option in <tt class="docutils literal">ElementTree.write()</tt>
+produces a deprecation warning and will eventually be removed.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id71">
+<h1>3.7.4 (2017-??-??)</h1>
+<div class="section" id="id72">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: revert previous fix for XSLT error logging as it breaks
+multi-threaded XSLT processing.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1673355">LP#1673355</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/233">GH#233</a>: <tt class="docutils literal">fromstring()</tt> html5parser failed to parse byte strings.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id76">
+<h1>3.7.3 (2017-02-18)</h1>
+<div class="section" id="id77">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/218">GH#218</a> was ineffective in Python 3.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/222">GH#222</a>: <tt class="docutils literal">lxml.html.submit_form()</tt> failed in Python 3.
+Patch by Jakub Wilk.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id78">
+<h1>3.7.2 (2017-01-08)</h1>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/220">GH#220</a>: <tt class="docutils literal">xmlfile</tt> allows switching output methods at an element level.
+Patch by Burak Arslan.</li>
+</ul>
+<div class="section" id="id80">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Work around installation problems in recent Python 2.7 versions
+due to FTP download failures.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/219">GH#219</a>: <tt class="docutils literal">xmlfile.element()</tt> was not properly quoting attribute values.
+Patch by Burak Arslan.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/218">GH#218</a>: <tt class="docutils literal">xmlfile.element()</tt> was not properly escaping text content of
+script/style tags. Patch by Burak Arslan.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id82">
+<h1>3.7.1 (2016-12-23)</h1>
+<ul class="simple">
+<li>No source changes, issued only to solve problems with the
+binary packages released for 3.7.0.</li>
+</ul>
+</div>
+<div class="section" id="id83">
+<h1>3.7.0 (2016-12-10)</h1>
+<div class="section" id="id84">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/217">GH#217</a>: <tt class="docutils literal">XMLSyntaxError</tt> now behaves more like its <tt class="docutils literal">SyntaxError</tt>
+baseclass. Patch by Philipp A.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/216">GH#216</a>: <tt class="docutils literal">HTMLParser()</tt> now supports the same <tt class="docutils literal">collect_ids</tt> parameter
+as <tt class="docutils literal">XMLParser()</tt>. Patch by Burak Arslan.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/210">GH#210</a>: Allow specifying a serialisation method in <tt class="docutils literal">xmlfile.write()</tt>.
+Patch by Burak Arslan.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/203">GH#203</a>: New option <tt class="docutils literal">default_doctype</tt> in <tt class="docutils literal">HTMLParser</tt> that allows
+disabling the automatic doctype creation. Patch by Shadab Zafar.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/201">GH#201</a>: Calling the method <tt class="docutils literal"><span class="pre">.set('attrname')</span></tt> without value argument
+(or <tt class="docutils literal">None</tt>) on HTML elements creates an attribute without value that
+serialises like <tt class="docutils literal"><div <span class="pre">attrname></div></span></tt>. Patch by Daniel Holth.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/197">GH#197</a>: Ignore form input fields in <tt class="docutils literal">form_values()</tt> when they are
+marked as <tt class="docutils literal">disabled</tt> in HTML. Patch by Kristian Klemon.</li>
+</ul>
+</div>
+<div class="section" id="id85">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/206">GH#206</a>: File name and line number were missing from XSLT error messages.
+Patch by Marcus Brinkmann.</li>
+</ul>
+</div>
+<div class="section" id="id86">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Log entries no longer allow anything but plain string objects as message text
+and file name.</li>
+<li><tt class="docutils literal">zlib</tt> is included in the list of statically built libraries.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id87">
+<h1>3.6.4 (2016-08-20)</h1>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/204">GH#204</a>, <a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1614693">LP#1614693</a>: build fix for MacOS-X.</li>
+</ul>
+</div>
+<div class="section" id="id88">
+<h1>3.6.3 (2016-08-18)</h1>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1614603">LP#1614603</a>: change linker flags to build multi-linux wheels</li>
+</ul>
+</div>
+<div class="section" id="id89">
+<h1>3.6.2 (2016-08-18)</h1>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1614603">LP#1614603</a>: release without source changes to provide cleanly built Linux wheels</li>
+</ul>
+</div>
+<div class="section" id="id91">
+<h1>3.6.1 (2016-07-24)</h1>
+<div class="section" id="id92">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/180">GH#180</a>: Separate option <tt class="docutils literal">inline_style</tt> for Cleaner that only removes <tt class="docutils literal">style</tt>
+attributes instead of all styles. Patch by Christian Pedersen.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/196">GH#196</a>: Windows build support for Python 3.5. Contribution by Maximilian Hils.</li>
+</ul>
+</div>
+<div class="section" id="id93">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/199">GH#199</a>: Exclude <tt class="docutils literal">file</tt> fields from <tt class="docutils literal">FormElement.form_values</tt> (as browsers do).
+Patch by Tomas Divis.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/198">GH#198</a>, <a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1568167">LP#1568167</a>: Try to provide base URL from <tt class="docutils literal">Resolver.resolve_string()</tt>.
+Patch by Michael van Tellingen.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/191">GH#191</a>: More accurate float serialisation in <tt class="docutils literal">objectify.FloatElement</tt>.
+Patch by Holger Joukl.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: Repair XSLT error logging. Patch by Marcus Brinkmann.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id95">
+<h1>3.6.0 (2016-03-17)</h1>
+<div class="section" id="id96">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/187">GH#187</a>: Now supports (only) version 5.x and later of PyPy.
+Patch by Armin Rigo.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/181">GH#181</a>: Direct support for <tt class="docutils literal">.rnc</tt> files in <cite>RelaxNG()</cite> if <tt class="docutils literal">rnc2rng</tt>
+is installed. Patch by Dirkjan Ochtman.</li>
+</ul>
+</div>
+<div class="section" id="id97">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/189">GH#189</a>: Static builds honour FTP proxy configurations when downloading
+the external libs. Patch by Youhei Sakurai.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/186">GH#186</a>: Soupparser failed to process entities in Python 3.x.
+Patch by Duncan Morris.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/185">GH#185</a>: Rare encoding related <tt class="docutils literal">TypeError</tt> on import was fixed.
+Patch by Petr Demin.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id98">
+<h1>3.5.0 (2015-11-13)</h1>
+<div class="section" id="id99">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Unicode string results failed XPath queries in PyPy.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1497051">LP#1497051</a>: HTML target parser failed to terminate on exceptions
+and continued parsing instead.</li>
+<li>Deprecated API usage in doctestcompare.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="b1-2015-09-18">
+<h1>3.5.0b1 (2015-09-18)</h1>
+<div class="section" id="id100">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">keep_ns_prefixes</tt>
+that does not remove definitions of the provided prefix-namespace
+mapping from the tree.</li>
+<li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">top_nsmap</tt> that
+moves definitions of the provided prefix-namespace mapping to the
+top of the tree.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1490451">LP#1490451</a>: <tt class="docutils literal">Element</tt> objects gained a <tt class="docutils literal">cssselect()</tt> method as
+known from <tt class="docutils literal">lxml.html</tt>. Patch by Simon Sapin.</li>
+<li>API functions and methods behave and look more like Python functions,
+which allows introspection on them etc. One side effect to be aware of
+is that the functions now bind as methods when assigned to a class
+variable. A quick fix is to wrap them in <tt class="docutils literal">staticmethod()</tt> (as for
+normal Python functions).</li>
+<li>ISO-Schematron support gained an option <tt class="docutils literal">error_finder</tt> that allows
+passing a filter function for picking validation errors from reports.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1243600">LP#1243600</a>: Elements in <tt class="docutils literal">lxml.html</tt> gained a <tt class="docutils literal">classes</tt> property
+that provides a set-like interface to the <tt class="docutils literal">class</tt> attribute.
+Original patch by masklinn.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1341964">LP#1341964</a>: The soupparser now handles DOCTYPE declarations, comments
+and processing instructions outside of the root element.
+Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421512">LP#1421512</a>: The <tt class="docutils literal">docinfo</tt> of a tree was made editable to allow
+setting and removing the public ID and system ID of the DOCTYPE.
+Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1442427">LP#1442427</a>: More work-arounds for quirks and bugs in pypy and pypy3.</li>
+<li><tt class="docutils literal">lxml.html.soupparser</tt> now uses BeautifulSoup version 4 instead
+of version 3 if available.</li>
+</ul>
+</div>
+<div class="section" id="id101">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory errors that occur during tree adaptations (e.g. moving subtrees
+to foreign documents) could leave the tree in a crash prone state.</li>
+<li>Calling <tt class="docutils literal">process_children()</tt> in an XSLT extension element without
+an <tt class="docutils literal">output_parent</tt> argument failed with a <tt class="docutils literal">TypeError</tt>.
+Fix by Jens Tröger.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/162">GH#162</a>: Image data in HTML <tt class="docutils literal">data</tt> URLs is considered safe and
+no longer removed by <tt class="docutils literal">lxml.html.clean</tt> JavaScript cleaner.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/166">GH#166</a>: Static build could link libraries in wrong order.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/172">GH#172</a>: Rely a bit more on libxml2 for encoding detection rather than
+rolling our own in some cases. Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/159">GH#159</a>: Validity checks for names and string content were tightened
+to detect the use of illegal characters early. Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421921">LP#1421921</a>: Comments/PIs before the DOCTYPE declaration were not
+serialised. Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/659367">LP#659367</a>: Some HTML DOCTYPE declarations were not serialised.
+Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238503">LP#1238503</a>: lxml.doctestcompare is now consistent with stdlib's doctest
+in how it uses <tt class="docutils literal">+</tt> and <tt class="docutils literal">-</tt> to refer to unexpected and missing output.</li>
+<li>Empty prefixes are explicitly rejected when a namespace mapping is used
+with ElementPath to avoid hiding bugs in user code.</li>
+<li>Several problems with PyPy were fixed by switching to Cython 0.23.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id102">
+<h1>3.4.4 (2015-04-25)</h1>
+<div class="section" id="id103">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>An ElementTree compatibility test added in lxml 3.4.3 that failed in
+Python 3.4+ was removed again.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id104">
+<h1>3.4.3 (2015-04-15)</h1>
+<div class="section" id="id105">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Expression cache in ElementPath was ignored. Fix by Changaco.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1426868">LP#1426868</a>: Passing a default namespace and a prefixed namespace mapping
+as nsmap into <tt class="docutils literal">xmlfile.element()</tt> raised a <tt class="docutils literal">TypeError</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421927">LP#1421927</a>: DOCTYPE system URLs were incorrectly quoted when containing
+double quotes. Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1419354">LP#1419354</a>: meta-redirect URLs were incorrectly processed by
+<tt class="docutils literal">iterlinks()</tt> if preceded by whitespace.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id106">
+<h1>3.4.2 (2015-02-07)</h1>
+<div class="section" id="id107">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1415907">LP#1415907</a>: Crash when creating an XMLSchema from a non-root element
+of an XML document.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1369362">LP#1369362</a>: HTML cleaning failed when hitting processing instructions
+with pseudo-attributes.</li>
+<li><tt class="docutils literal">CDATA()</tt> wrapped content was rejected for tail text.</li>
+<li>CDATA sections were not serialised as tail text of the top-level element.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id108">
+<h1>3.4.1 (2014-11-20)</h1>
+<div class="section" id="id109">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New <tt class="docutils literal">htmlfile</tt> HTML generator to accompany the incremental <tt class="docutils literal">xmlfile</tt>
+serialisation API. Patch by Burak Arslan.</li>
+</ul>
+</div>
+<div class="section" id="id110">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.sax.ElementTreeContentHandler</tt> did not initialise its superclass.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id111">
+<h1>3.4.0 (2014-09-10)</h1>
+<div class="section" id="id112">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">xmlfile(buffered=False)</tt> disables output buffering and flushes the
+content after each API operation (starting/ending element blocks or writes).
+A new method <tt class="docutils literal">xf.flush()</tt> can alternatively be used to explicitly flush
+the output.</li>
+<li><tt class="docutils literal">lxml.html.document_fromstring</tt> has a new option <tt class="docutils literal">ensure_head_body=True</tt>
+which will add an empty head and/or body element to the result document if
+missing.</li>
+<li><tt class="docutils literal">lxml.html.iterlinks</tt> now returns links inside meta refresh tags.</li>
+<li>New <tt class="docutils literal">XMLParser</tt> option <tt class="docutils literal">collect_ids=False</tt> to disable ID hash table
+creation. This can substantially speed up parsing of documents with many
+different IDs that are not used.</li>
+<li>The parser uses per-document hash tables for XML IDs. This reduces the
+load of the global parser dict and speeds up parsing for documents with
+many different IDs.</li>
+<li><tt class="docutils literal">ElementTree.getelementpath(element)</tt> returns a structural ElementPath
+expression for the given element, which can be used for lookups later.</li>
+<li><tt class="docutils literal">xmlfile()</tt> accepts a new argument <tt class="docutils literal">close=True</tt> to close file(-like)
+objects after writing to them. Before, <tt class="docutils literal">xmlfile()</tt> only closed the file
+if it had opened it internally.</li>
+<li>Allow "bytearray" type for ASCII text input.</li>
+</ul>
+</div>
+<div class="section" id="id113">
+<h2>Bugs fixed</h2>
+</div>
+<div class="section" id="id114">
+<h2>Other changes</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/400588">LP#400588</a>: decoding errors have become hard errors even in recovery mode.
+Previously, they could lead to an internal tree representation in a mixed
+encoding state, which lead to very late errors or even silently incorrect
+behaviour during tree traversal or serialisation.</li>
+<li>Requires Python 2.6, 2.7, 3.2 or later. No longer supports
+Python 2.4, 2.5 and 3.1, use lxml 3.3.x for those.</li>
+<li>Requires libxml2 2.7.0 or later and libxslt 1.1.23 or later,
+use lxml 3.3.x with older versions.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id115">
+<h1>3.3.6 (2014-08-28)</h1>
+<div class="section" id="id116">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Prevent tree cycle creation when adding Elements as siblings.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1361948">LP#1361948</a>: crash when deallocating Element siblings without parent.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1354652">LP#1354652</a>: crash when traversing internally loaded documents in XSLT
+extension functions.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id117">
+<h1>3.3.5 (2014-04-18)</h1>
+<div class="section" id="id118">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>HTML cleaning could fail to strip javascript links that mix control
+characters into the link scheme.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id119">
+<h1>3.3.4 (2014-04-03)</h1>
+<div class="section" id="id120">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Source line numbers above 65535 are available on Elements when
+using libxml2 2.9 or later.</li>
+</ul>
+</div>
+<div class="section" id="id121">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.html.fragment_fromstring()</tt> failed for bytes input in Py3.</li>
+</ul>
+</div>
+<div class="section" id="id122">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id123">
+<h1>3.3.3 (2014-03-04)</h1>
+<div class="section" id="id124">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1287118">LP#1287118</a>: Crash when using Element subtypes with <tt class="docutils literal">__slots__</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id125">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The internal classes <tt class="docutils literal">_LogEntry</tt> and <tt class="docutils literal">_Attrib</tt> can no longer be
+subclassed from Python code.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id126">
+<h1>3.3.2 (2014-02-26)</h1>
+<div class="section" id="id127">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The properties <tt class="docutils literal">resolvers</tt> and <tt class="docutils literal">version</tt>, as well as the methods
+<tt class="docutils literal">set_element_class_lookup()</tt> and <tt class="docutils literal">makeelement()</tt>, were lost from
+<tt class="docutils literal">iterparse</tt> objects in 3.3.0.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1222132">LP#1222132</a>: instances of <tt class="docutils literal">XMLSchema</tt>, <tt class="docutils literal">Schematron</tt> and <tt class="docutils literal">RelaxNG</tt>
+did not clear their local <tt class="docutils literal">error_log</tt> before running a validation.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238500">LP#1238500</a>: lxml.doctestcompare mixed up "expected" and "actual" in
+attribute values.</li>
+<li>Some file I/O tests were failing in MS-Windows due to non-portable temp
+file usage. Initial patch by Gabi Davar.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/910014">LP#910014</a>: duplicate IDs in a document were not reported by DTD validation.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185332">LP#1185332</a>: <tt class="docutils literal"><span class="pre">tostring(method="html")</span></tt> did not use HTML serialisation
+semantics for trailing tail text. Initial patch by Sylvain Viollon.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1281139">LP#1281139</a>: <tt class="docutils literal">.attrib</tt> value of Comments lost its mutation methods
+in 3.3.0. Even though it is empty and immutable, it should still
+provide the same interface as that returned for Elements.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id128">
+<h1>3.3.1 (2014-02-12)</h1>
+<div class="section" id="id129">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id130">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1014290">LP#1014290</a>: HTML documents parsed with <tt class="docutils literal">parser.feed()</tt> failed to find
+elements during tag iteration.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1273709">LP#1273709</a>: Building in PyPy failed due to missing support for
+<tt class="docutils literal">PyUnicode_Compare()</tt> and <tt class="docutils literal"><span class="pre">PyByteArray_*()</span></tt> in PyPy's C-API.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274413">LP#1274413</a>: Compilation in MSVC failed due to missing "stdint.h" standard
+header file.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274118">LP#1274118</a>: iterparse() failed to parse BOM prefixed files.</li>
+</ul>
+</div>
+<div class="section" id="id131">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id132">
+<h1>3.3.0 (2014-01-26)</h1>
+<div class="section" id="id133">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id134">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The heuristic that distinguishes file paths from URLs was tightened
+to produce less false negatives.</li>
+</ul>
+</div>
+<div class="section" id="id135">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="beta5-2014-01-18">
+<h1>3.3.0beta5 (2014-01-18)</h1>
+<div class="section" id="id136">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The PEP 393 unicode parsing support gained a fallback for wchar strings
+which might still be somewhat common on Windows systems.</li>
+</ul>
+</div>
+<div class="section" id="id137">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Several error handling problems were fixed throughout the code base that
+could previously lead to exceptions being silently swallowed or not
+properly reported.</li>
+<li>The C-API function <tt class="docutils literal">appendChild()</tt> is now deprecated as it does not
+propagate exceptions (its return type is <tt class="docutils literal">void</tt>). The new function
+<tt class="docutils literal">appendChildToElement()</tt> was added as a safe replacement.</li>
+<li>Passing a string into <tt class="docutils literal">fromstringlist()</tt> raises an exception instead of
+parsing the string character by character.</li>
+</ul>
+</div>
+<div class="section" id="id138">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Document cleanup code was simplified using the new GC features in
+Cython 0.20.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta4-2014-01-12">
+<h1>3.3.0beta4 (2014-01-12)</h1>
+<div class="section" id="id139">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id140">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The (empty) value returned by the <tt class="docutils literal">attrib</tt> property of Entity and Comment
+objects was mutable.</li>
+<li>Element class lookup wasn't available for the new pull parsers or when using
+a custom parser target.</li>
+<li>Setting Element attributes on instantiation with both the <tt class="docutils literal">attrib</tt> argument
+and keyword arguments could modify the mapping passed as <tt class="docutils literal">attrib</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1266171">LP#1266171</a>: DTDs instantiated from internal/external subsets (i.e. through
+the docinfo property) lost their attribute declarations.</li>
+</ul>
+</div>
+<div class="section" id="id141">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Built with Cython 0.20pre (gitrev 012ae82eb) to prepare support for
+Python 3.4.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta3-2014-01-02">
+<h1>3.3.0beta3 (2014-01-02)</h1>
+<div class="section" id="id142">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Unicode string parsing was optimised for Python 3.3 (PEP 393).</li>
+</ul>
+</div>
+<div class="section" id="id143">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>HTML parsing of Unicode strings could misdecode the input on some platforms.</li>
+<li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
+</ul>
+</div>
+<div class="section" id="id144">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="beta2-2013-12-20">
+<h1>3.3.0beta2 (2013-12-20)</h1>
+<div class="section" id="id145">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">iterparse()</tt> supports the <tt class="docutils literal">recover</tt> option.</li>
+</ul>
+</div>
+<div class="section" id="id146">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in <tt class="docutils literal">iterparse()</tt> for HTML parsing.</li>
+<li>Crash in target parsing with attributes.</li>
+</ul>
+</div>
+<div class="section" id="id147">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The safety check in the read-only tree implementation (e.g. used by
+<tt class="docutils literal">PythonElementClassLookup</tt>) raises a more appropriate <tt class="docutils literal">ReferenceError</tt>
+for illegal access after tree disposal instead of an <tt class="docutils literal">AssertionError</tt>.
+This should only impact test code that specifically checks the original
+behaviour.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2013-12-12">
+<h1>3.3.0beta1 (2013-12-12)</h1>
+<div class="section" id="id148">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New option <tt class="docutils literal">handle_failures</tt> in <tt class="docutils literal">make_links_absolute()</tt> and
+<tt class="docutils literal">resolve_base_href()</tt> (lxml.html) that enables ignoring or
+discarding links that fail to parse as URLs.</li>
+<li>New parser classes <tt class="docutils literal">XMLPullParser</tt> and <tt class="docutils literal">HTMLPullParser</tt> for
+incremental parsing, as implemented for ElementTree in Python 3.4.</li>
+<li><tt class="docutils literal">iterparse()</tt> enables recovery mode by default for HTML parsing
+(<tt class="docutils literal">html=True</tt>).</li>
+</ul>
+</div>
+<div class="section" id="id149">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1255132">LP#1255132</a>: crash when trying to run validation over non-Element (e.g.
+comment or PI).</li>
+<li>Error messages in the log and in exception messages that originated
+from libxml2 could accidentally be picked up from preceding warnings
+instead of the actual error.</li>
+<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify did not accept a dict as
+argument for adding attributes to the element it's building. This
+works as in lxml.builder now.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
+<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
+to one of its own descendants, instead of running into an infinite
+loop.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
+<li>Compressed plain-text serialisation to file-like objects was broken.</li>
+<li>lxml.html.formfill: Fix textarea form filling.
+The textarea used to be cleared before the new content was set,
+which removed the name attribute.</li>
+</ul>
+</div>
+<div class="section" id="id150">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Some basic API classes use freelists internally for faster
+instantiation. This can speed up some <tt class="docutils literal">iterparse()</tt> scenarios,
+for example.</li>
+<li><tt class="docutils literal">iterparse()</tt> was rewritten to use the new <tt class="docutils literal">*PullParser</tt>
+classes internally instead of being a parser itself.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id151">
+<h1>3.2.5 (2014-01-02)</h1>
+<div class="section" id="id152">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id153">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
+<li>Crash in target parsing with attributes.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1255132">LP#1255132</a>: crash when trying to run validation over non-Element (e.g.
+comment or PI).</li>
+</ul>
+</div>
+<div class="section" id="id155">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id156">
+<h1>3.2.4 (2013-11-07)</h1>
+<div class="section" id="id157">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id158">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory leak when creating an XPath evaluator in a thread.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
+<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
+to one of its own descendants.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
+<li>Compressed plain-text serialisation to file-like objects was broken.</li>
+</ul>
+</div>
+<div class="section" id="id161">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id162">
+<h1>3.2.3 (2013-07-28)</h1>
+<div class="section" id="id163">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fix support for Python 2.4 which was lost in 3.2.2.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id164">
+<h1>3.2.2 (2013-07-28)</h1>
+<div class="section" id="id165">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id166">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185701">LP#1185701</a>: spurious XMLSyntaxError after finishing iterparse().</li>
+<li>Crash in lxml.objectify during xsi annotation.</li>
+</ul>
+</div>
+<div class="section" id="id167">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Return values of user provided element class lookup methods are now
+validated against the type of the XML node they represent to prevent
+API class mismatches.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id168">
+<h1>3.2.1 (2013-05-11)</h1>
+<div class="section" id="id169">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The methods <tt class="docutils literal">apply_templates()</tt> and <tt class="docutils literal">process_children()</tt> of XSLT
+extension elements have gained two new boolean options <tt class="docutils literal">elements_only</tt>
+and <tt class="docutils literal">remove_blank_text</tt> that discard either all strings or whitespace-only
+strings from the result list.</li>
+</ul>
+</div>
+<div class="section" id="id170">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When moving Elements to another tree, the namespace cleanup mechanism
+no longer drops namespace prefixes from attributes for which it finds
+a default namespace declaration, to prevent them from appearing as
+unnamespaced attributes after serialisation.</li>
+<li>Returning non-type objects from a custom class lookup method could lead
+to a crash.</li>
+<li>Instantiating and using subtypes of Comments and ProcessingInstructions
+crashed.</li>
+</ul>
+</div>
+<div class="section" id="id171">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id172">
+<h1>3.2.0 (2013-04-28)</h1>
+<div class="section" id="id173">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id174">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/690319">LP#690319</a>: Leading whitespace could change the behaviour of the string
+parsing functions in <tt class="docutils literal">lxml.html</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/599318">LP#599318</a>: The string parsing functions in <tt class="docutils literal">lxml.html</tt> are more robust
+in the face of uncommon HTML content like framesets or missing body tags.
+Patch by Stefan Seelmann.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/712941">LP#712941</a>: I/O errors while trying to access files with paths that contain
+non-ASCII characters could raise <tt class="docutils literal">UnicodeDecodeError</tt> instead of properly
+reporting the <tt class="docutils literal">IOError</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/673205">LP#673205</a>: Parsing from in-memory strings disabled network access in the
+default parser and made subsequent attempts to parse from a URL fail.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/971754">LP#971754</a>: lxml.html.clean appends 'nofollow' to 'rel' attributes instead
+of overwriting the current value.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/715687">LP#715687</a>: lxml.html.clean no longer discards scripts that are explicitly
+allowed by the user provided whitelist. Patch by Christine Koppelt.</li>
+</ul>
+</div>
+<div class="section" id="id175">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id176">
+<h1>3.1.2 (2013-04-12)</h1>
+<div class="section" id="id177">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id178">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1136509">LP#1136509</a>: Passing attributes through the namespace-unaware API of
+the sax bridge (i.e. the <tt class="docutils literal">handler.startElement()</tt> method) failed
+with a <tt class="docutils literal">TypeError</tt>. Patch by Mike Bayer.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1123074">LP#1123074</a>: Fix serialisation error in XSLT output when converting
+the result tree to a Unicode string.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/105">GH#105</a>: Replace illegal usage of <tt class="docutils literal">xmlBufLength()</tt> in libxml2 2.9.0
+by properly exported API function <tt class="docutils literal">xmlBufUse()</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id179">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id180">
+<h1>3.1.1 (2013-03-29)</h1>
+<div class="section" id="id181">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id182">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1160386">LP#1160386</a>: Write access to <tt class="docutils literal">lxml.html.FormElement.fields</tt> raised
+an AttributeError in Py3.</li>
+<li>Illegal memory access during cleanup in incremental xmlfile writer.</li>
+</ul>
+</div>
+<div class="section" id="id183">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The externally useless class <tt class="docutils literal">lxml.etree._BaseParser</tt> was removed
+from the module dict.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id184">
+<h1>3.1.0 (2013-02-10)</h1>
+<div class="section" id="id185">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/89">GH#89</a>: lxml.html.clean allows overriding the set of attributes that it
+considers 'safe'. Patch by Francis Devereux.</li>
+</ul>
+</div>
+<div class="section" id="id186">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1104370">LP#1104370</a>: <tt class="docutils literal">copy.copy(el.attrib)</tt> raised an exception. It now returns
+a copy of the attributes as a plain Python dict.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/95">GH#95</a>: When used with namespace prefixes, the <tt class="docutils literal"><span class="pre">el.find*()</span></tt> methods
+always used the first namespace mapping that was provided for each
+path expression instead of using the one that was actually passed
+in for the current run.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1092521">LP#1092521</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/91">GH#91</a>: Fix undefined C symbol in Python runtimes compiled
+without threading support. Patch by Ulrich Seidl.</li>
+</ul>
+</div>
+<div class="section" id="id187">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="beta1-2012-12-21">
+<h1>3.1beta1 (2012-12-21)</h1>
+<div class="section" id="id188">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New build-time option <tt class="docutils literal"><span class="pre">--with-unicode-strings</span></tt> for Python 2 that
+makes the API always return Unicode strings for names and text
+instead of byte strings for plain ASCII content.</li>
+<li>New incremental XML file writing API <tt class="docutils literal">etree.xmlfile()</tt>.</li>
+<li>E factory in lxml.objectify is callable to simplify the creation of
+tags with non-identifier names without having to resort to getattr().</li>
+</ul>
+</div>
+<div class="section" id="id189">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When starting from a non-namespaced element in lxml.objectify, searching
+for a child without explicitly specifying a namespace incorrectly found
+namespaced elements with the requested local name, instead of restricting
+the search to non-namespaced children.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/85">GH#85</a>: Deprecation warnings were fixed for Python 3.x.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/33">GH#33</a>: lxml.html.fromstring() failed to accept bytes input in Py3.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1080792">LP#1080792</a>: Static build of libxml2 2.9.0 failed due to missing file.</li>
+</ul>
+</div>
+<div class="section" id="id190">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The externally useless class <tt class="docutils literal">_ObjectifyElementMakerCaller</tt> was
+removed from the module API of lxml.objectify.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1075622">LP#1075622</a>: lxml.builder is faster for adding text to elements with
+many children. Patch by Anders Hammarquist.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id191">
+<h1>3.0.2 (2012-12-14)</h1>
+<div class="section" id="id192">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id193">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fix crash during interpreter shutdown by switching to Cython 0.17.3 for building.</li>
+</ul>
+</div>
+<div class="section" id="id194">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id195">
+<h1>3.0.1 (2012-10-14)</h1>
+<div class="section" id="id196">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id197">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065924">LP#1065924</a>: Element proxies could disappear during garbage collection
+in PyPy without proper cleanup.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/71">GH#71</a>: Failure to work with libxml2 2.6.x.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065139">LP#1065139</a>: static MacOS-X build failed in Py3.</li>
+</ul>
+</div>
+<div class="section" id="id198">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id199">
+<h1>3.0 (2012-10-08)</h1>
+<div class="section" id="id200">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id201">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>End-of-file handling was incorrect in iterparse() when reading from
+a low-level C file stream and failed in libxml2 2.9.0 due to its
+improved consistency checks.</li>
+</ul>
+</div>
+<div class="section" id="id202">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The build no longer uses Cython by default unless the generated C files
+are missing. To use Cython, pass the option "--with-cython". To ignore
+the fatal build error when Cython is required but not available (e.g. to
+run special setup.py commands that do not actually run a build), pass
+"--without-cython".</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2012-09-26">
+<h1>3.0beta1 (2012-09-26)</h1>
+<div class="section" id="id203">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Python level access to (optional) libxml2 memory debugging features
+to simplify debugging of memory leaks etc.</li>
+</ul>
+</div>
+<div class="section" id="id204">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fix a memory leak in XPath by switching to Cython 0.17.1.</li>
+<li>Some tests were adapted to work with PyPy.</li>
+</ul>
+</div>
+<div class="section" id="id205">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The code was adapted to work with the upcoming libxml2 2.9.0 release.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="alpha2-2012-08-23">
+<h1>3.0alpha2 (2012-08-23)</h1>
+<div class="section" id="id206">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The <tt class="docutils literal">.iter()</tt> method of elements now accepts <tt class="docutils literal">tag</tt> arguments like
+<tt class="docutils literal"><span class="pre">"{*}name"</span></tt> to search for elements with a given local name in any
+namespace. With this addition, all combinations of wildcards now work
+as expected:
+<tt class="docutils literal">"{ns}name"</tt>, <tt class="docutils literal"><span class="pre">"{}name"</span></tt>, <tt class="docutils literal"><span class="pre">"{*}name"</span></tt>, <tt class="docutils literal"><span class="pre">"{ns}*"</span></tt>, <tt class="docutils literal"><span class="pre">"{}*"</span></tt>
+and <tt class="docutils literal"><span class="pre">"{*}*"</span></tt>. Note that <tt class="docutils literal">"name"</tt> is equivalent to <tt class="docutils literal"><span class="pre">"{}name"</span></tt>,
+but <tt class="docutils literal">"*"</tt> is <tt class="docutils literal"><span class="pre">"{*}*"</span></tt>.
+The same change applies to the <tt class="docutils literal">.getiterator()</tt>, <tt class="docutils literal">.itersiblings()</tt>,
+<tt class="docutils literal">.iterancestors()</tt>, <tt class="docutils literal">.iterdescendants()</tt>, <tt class="docutils literal">.iterchildren()</tt>
+and <tt class="docutils literal">.itertext()</tt> methods;the <tt class="docutils literal">strip_attributes()</tt>,
+<tt class="docutils literal">strip_elements()</tt> and <tt class="docutils literal">strip_tags()</tt> functions as well as the
+<tt class="docutils literal">iterparse()</tt> class. Patch by Simon Sapin.</li>
+<li>C14N allows specifying the inclusive prefixes to be promoted
+to top-level during exclusive serialisation.</li>
+</ul>
+</div>
+<div class="section" id="id207">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Passing long Unicode strings into the <tt class="docutils literal">feed()</tt> parser interface
+failed to read the entire string.</li>
+</ul>
+</div>
+<div class="section" id="id208">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="alpha1-2012-07-31">
+<h1>3.0alpha1 (2012-07-31)</h1>
+<div class="section" id="id209">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Initial support for building in PyPy (through cpyext).</li>
+<li>DTD objects gained an API that allows read access to their
+declarations.</li>
+<li><tt class="docutils literal">xpathgrep.py</tt> gained support for parsing line-by-line (e.g.
+from grep output) and for surrounding the output with a new root
+tag.</li>
+<li><tt class="docutils literal"><span class="pre">E-factory</span></tt> in <tt class="docutils literal">lxml.builder</tt> accepts subtypes of known data
+types (such as string subtypes) when building elements around them.</li>
+<li>Tree iteration and <tt class="docutils literal">iterparse()</tt> with a selective <tt class="docutils literal">tag</tt>
+argument supports passing a set of tags. Tree nodes will be
+returned by the iterators if they match any of the tags.</li>
+</ul>
+</div>
+<div class="section" id="id210">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods in <tt class="docutils literal">lxml.objectify</tt> no longer use XPath
+internally, which makes them faster in many cases (especially when
+short circuiting after a single or couple of elements) and fixes
+some behavioural differences compared to <tt class="docutils literal">lxml.etree</tt>. Note that
+this means that they no longer support arbitrary XPath expressions
+but only the subset that the <tt class="docutils literal">ElementPath</tt> language supports.
+The previous implementation was also redundant with the normal
+XPath support, which can be used as a replacement.</li>
+<li><tt class="docutils literal"><span class="pre">el.find('*')</span></tt> could accidentally return a comment or processing
+instruction that happened to be in the wrong spot. (Same for the
+other <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods.)</li>
+<li>The error logging is less intrusive and avoids a global setup where
+possible.</li>
+<li>Fixed undefined names in html5lib parser.</li>
+<li><tt class="docutils literal">xpathgrep.py</tt> did not work in Python 3.</li>
+<li><tt class="docutils literal">Element.attrib.update()</tt> did not accept an <tt class="docutils literal">attrib</tt> of
+another Element as parameter.</li>
+<li>For subtypes of <tt class="docutils literal">ElementBase</tt> that make the <tt class="docutils literal">.text</tt> or <tt class="docutils literal">.tail</tt>
+properties immutable (as in objectify, for example), inserting text
+when creating Elements through the E-Factory feature of the class
+constructor would fail with an exception, stating that the text
+cannot be modified.</li>
+</ul>
+</div>
+<div class="section" id="id211">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The code base was overhauled to properly use 'const' where the API
+of libxml2 and libxslt requests it. This also has an impact on the
+public C-API of lxml itself, as defined in <tt class="docutils literal">etreepublic.pxd</tt>, as
+well as the provided declarations in the <tt class="docutils literal">lxml/includes/</tt> directory.
+Code that uses these declarations may have to be adapted. On the
+plus side, this fixes several C compiler warnings, also for user
+code, thus making it easier to spot real problems again.</li>
+<li>The functionality of "lxml.cssselect" was moved into a separate PyPI
+package called "cssselect". To continue using it, you must install
+that package separately. The "lxml.cssselect" module is still
+available and provides the same interface, provided the "cssselect"
+package can be imported at runtime.</li>
+<li>Element attributes passed in as an <tt class="docutils literal">attrib</tt> dict or as keyword
+arguments are now sorted by (namespaced) name before being created
+to make their order predictable for serialisation and iteration.
+Note that adding or deleting attributes afterwards does not take
+that order into account, i.e. setting a new attribute appends it
+after the existing ones.</li>
+<li>Several classes that are for internal use only were removed
+from the <tt class="docutils literal">lxml.etree</tt> module dict:
+<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ResolverContext, _BaseContext,
+_ExsltRegExp, _IterparseContext, _TempStore, _ExceptionContext,
+__ContentOnlyElement, _AttribIterator, _NamespaceRegistry,
+_ClassNamespaceRegistry, _FunctionNamespaceRegistry,
+_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
+_FileReaderContext, _ParserContext, _PythonSaxParserTarget,
+_TargetParserContext, _ReadOnlyProxy, _ReadOnlyPIProxy,
+_ReadOnlyEntityProxy, _ReadOnlyElementProxy, _OpaqueNodeWrapper,
+_OpaqueDocumentWrapper, _ModifyContentOnlyProxy,
+_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
+_AppendOnlyElementProxy, _SaxParserContext, _FilelikeWriter,
+_ParserSchemaValidationContext, _XPathContext,
+_XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam</tt></li>
+<li>Several internal classes can no longer be inherited from:
+<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ExsltRegExp, _ElementUnicodeResult,
+_IterparseContext, _TempStore, _AttribIterator, _ClassNamespaceRegistry,
+_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
+_FileReaderContext, _PythonSaxParserTarget, _TargetParserContext,
+_ReadOnlyPIProxy, _ReadOnlyEntityProxy, _OpaqueDocumentWrapper,
+_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
+_AppendOnlyElementProxy, _FilelikeWriter, _ParserSchemaValidationContext,
+_XPathContext, _XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam,
+_XSLTResultTree, _XSLTProcessingInstruction</tt></li>
+</ul>
+</div>
+</div>
+<div class="section" id="id212">
+<h1>2.3.6 (2012-09-28)</h1>
+<div class="section" id="id213">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id214">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Passing long Unicode strings into the <tt class="docutils literal">feed()</tt> parser interface
+failed to read the entire string.</li>
+</ul>
+</div>
+<div class="section" id="id215">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id216">
+<h1>2.3.5 (2012-07-31)</h1>
+<div class="section" id="id217">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id218">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when merging text nodes in <tt class="docutils literal">element.remove()</tt>.</li>
+<li>Crash in sax/target parser when reporting empty doctype.</li>
+</ul>
+</div>
+<div class="section" id="id219">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id220">
+<h1>2.3.4 (2012-03-26)</h1>
+<div class="section" id="id221">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id222">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when building an nsmap (Element property) with empty
+namespace URIs.</li>
+<li>Crash due to race condition when errors (or user messages) occur
+during threaded XSLT processing.</li>
+<li>XSLT stylesheet compilation could ignore compilation errors.</li>
+</ul>
+</div>
+<div class="section" id="id223">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id224">
+<h1>2.3.3 (2012-01-04)</h1>
+<div class="section" id="id225">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.html.tostring()</tt> gained new serialisation options
+<tt class="docutils literal">with_tail</tt> and <tt class="docutils literal">doctype</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id226">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fixed a crash when using <tt class="docutils literal">iterparse()</tt> for HTML parsing and
+requesting start events.</li>
+<li>Fixed parsing of more selectors in cssselect. Whitespace before
+pseudo-elements and pseudo-classes is significant as it is a
+descendant combinator.
+"E :pseudo" should parse the same as "E *:pseudo", not "E:pseudo".
+Patch by Simon Sapin.</li>
+<li>lxml.html.diff no longer raises an exception when hitting
+'img' tags without 'src' attribute.</li>
+</ul>
+</div>
+<div class="section" id="id227">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id228">
+<h1>2.3.2 (2011-11-11)</h1>
+<div class="section" id="id229">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.objectify.deannotate()</tt> has a new boolean option
+<tt class="docutils literal">cleanup_namespaces</tt> to remove the objectify namespace
+declarations (and generally clean up the namespace declarations)
+after removing the type annotations.</li>
+<li><tt class="docutils literal">lxml.objectify</tt> gained its own <tt class="docutils literal">SubElement()</tt> function as a
+copy of <tt class="docutils literal">etree.SubElement</tt> to avoid an otherwise redundant import
+of <tt class="docutils literal">lxml.etree</tt> on the user side.</li>
+</ul>
+</div>
+<div class="section" id="id230">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fixed the "descendant" bug in cssselect a second time (after a first
+fix in lxml 2.3.1). The previous change resulted in a serious
+performance regression for the XPath based evaluation of the
+translated expression. Note that this breaks the usage of some of
+the generated XPath expressions as XSLT location paths that
+previously worked in 2.3.1.</li>
+<li>Fixed parsing of some selectors in cssselect. Whitespace after combinators
+">", "+" and "~" is now correctly ignored. Previously it was parsed as
+a descendant combinator. For example, "div> .foo" was parsed the same as
+"div>* .foo" instead of "div>.foo". Patch by Simon Sapin.</li>
+</ul>
+</div>
+<div class="section" id="id231">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id232">
+<h1>2.3.1 (2011-09-25)</h1>
+<div class="section" id="id233">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New option <tt class="docutils literal">kill_tags</tt> in <tt class="docutils literal">lxml.html.clean</tt> to remove specific
+tags and their content (i.e. their whole subtree).</li>
+<li><tt class="docutils literal">pi.get()</tt> and <tt class="docutils literal">pi.attrib</tt> on processing instructions to parse
+pseudo-attributes from the text content of processing instructions.</li>
+<li><tt class="docutils literal">lxml.get_include()</tt> returns a list of include paths that can be
+used to compile external C code against lxml.etree. This is
+specifically required for statically linked lxml builds when code
+needs to compile against the exact same header file versions as lxml
+itself.</li>
+<li><tt class="docutils literal">Resolver.resolve_file()</tt> takes an additional option
+<tt class="docutils literal">close_file</tt> that configures if the file(-like) object will be
+closed after reading or not. By default, the file will be closed,
+as the user is not expected to keep a reference to it.</li>
+</ul>
+</div>
+<div class="section" id="id234">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>HTML cleaning didn't remove 'data:' links.</li>
+<li>The html5lib parser integration now uses the 'official'
+implementation in html5lib itself, which makes it work with newer
+releases of the library.</li>
+<li>In <tt class="docutils literal">lxml.sax</tt>, <tt class="docutils literal">endElementNS()</tt> could incorrectly reject a plain
+tag name when the corresponding start event inferred the same plain
+tag name to be in the default namespace.</li>
+<li>When an open file-like object is passed into <tt class="docutils literal">parse()</tt> or
+<tt class="docutils literal">iterparse()</tt>, the parser will no longer close it after use. This
+reverts a change in lxml 2.3 where all files would be closed. It is
+the users responsibility to properly close the file(-like) object,
+also in error cases.</li>
+<li>Assertion error in lxml.html.cleaner when discarding top-level elements.</li>
+<li>In lxml.cssselect, use the xpath 'A//B' (short for
+'A/descendant-or-self::node()/B') instead of 'A/descendant::B' for
+the css descendant selector ('A B'). This makes a few edge cases
+like <tt class="docutils literal">"div <span class="pre">*:last-child"</span></tt> consistent with the selector behavior in
+WebKit and Firefox, and makes more css expressions valid location
+paths (for use in xsl:template match).</li>
+<li>In lxml.html, non-selected <tt class="docutils literal"><option></tt> tags no longer show up in the
+collected form values.</li>
+<li>Adding/removing <tt class="docutils literal"><option></tt> values to/from a multiple select form
+field properly selects them and unselects them.</li>
+</ul>
+</div>
+<div class="section" id="id235">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Static builds can specify the download directory with the
+<tt class="docutils literal"><span class="pre">--download-dir</span></tt> option.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id236">
+<h1>2.3 (2011-02-06)</h1>
+<div class="section" id="id237">
+<h2>Features added</h2>
+<ul class="simple">
+<li>When looking for children, <tt class="docutils literal">lxml.objectify</tt> takes '{}tag' as
+meaning an empty namespace, as opposed to the parent namespace.</li>
+</ul>
+</div>
+<div class="section" id="id238">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When finished reading from a file-like object, the parser
+immediately calls its <tt class="docutils literal">.close()</tt> method.</li>
+<li>When finished parsing, <tt class="docutils literal">iterparse()</tt> immediately closes the input
+file.</li>
+<li>Work-around for libxml2 bug that can leave the HTML parser in a
+non-functional state after parsing a severely broken document (fixed
+in libxml2 2.7.8).</li>
+<li><tt class="docutils literal">marque</tt> tag in HTML cleanup code is correctly named <tt class="docutils literal">marquee</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id239">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Some public functions in the Cython-level C-API have more explicit
+return types.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2010-09-06">
+<h1>2.3beta1 (2010-09-06)</h1>
+<div class="section" id="id240">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id241">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in newer libxml2 versions when moving elements between
+documents that had attributes on replaced XInclude nodes.</li>
+<li><tt class="docutils literal">XMLID()</tt> function was missing the optional <tt class="docutils literal">parser</tt> and
+<tt class="docutils literal">base_url</tt> parameters.</li>
+<li>Searching for wildcard tags in <tt class="docutils literal">iterparse()</tt> was broken in Py3.</li>
+<li><tt class="docutils literal">lxml.html.open_in_browser()</tt> didn't work in Python 3 due to the
+use of os.tempnam. It now takes an optional 'encoding' parameter.</li>
+</ul>
+</div>
+<div class="section" id="id242">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="alpha2-2010-07-24">
+<h1>2.3alpha2 (2010-07-24)</h1>
+<div class="section" id="id243">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id244">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in XSLT when generating text-only result documents with a
+stylesheet created in a different thread.</li>
+</ul>
+</div>
+<div class="section" id="id245">
+<h2>Other changes</h2>
+<ul class="simple">
+<li><tt class="docutils literal">repr()</tt> of Element objects shows the hex ID with leading 0x
+(following ElementTree 1.3).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="alpha1-2010-06-19">
+<h1>2.3alpha1 (2010-06-19)</h1>
+<div class="section" id="id246">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Keyword argument <tt class="docutils literal">namespaces</tt> in <tt class="docutils literal">lxml.cssselect.CSSSelector()</tt>
+to pass a prefix-to-namespace mapping for the selector.</li>
+<li>New function <tt class="docutils literal">lxml.etree.register_namespace(prefix, uri)</tt> that
+globally registers a namespace prefix for a namespace that newly
+created Elements in that namespace will use automatically. Follows
+ElementTree 1.3.</li>
+<li>Support 'unicode' string name as encoding parameter in
+<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
+<li>Support 'c14n' serialisation method in <tt class="docutils literal">ElementTree.write()</tt> and
+<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
+<li>The ElementPath expression syntax (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) was extended to
+match the upcoming ElementTree 1.3 that will ship in the standard
+library of Python 3.2/2.7. This includes extended support for
+predicates as well as namespace prefixes (as known from XPath).</li>
+<li>During regular XPath evaluation, various ESXLT functions are
+available within their namespace when using libxslt 1.1.26 or later.</li>
+<li>Support passing a readily configured logger instance into
+<tt class="docutils literal">PyErrorLog</tt>, instead of a logger name.</li>
+<li>On serialisation, the new <tt class="docutils literal">doctype</tt> parameter can be used to
+override the DOCTYPE (internal subset) of the document.</li>
+<li>New parameter <tt class="docutils literal">output_parent</tt> to <tt class="docutils literal">XSLTExtension.apply_templates()</tt>
+to append the resulting content directly to an output element.</li>
+<li><tt class="docutils literal">XSLTExtension.process_children()</tt> to process the content of the
+XSLT extension element itself.</li>
+<li>ISO-Schematron support based on the de-facto Schematron reference
+'skeleton implementation'.</li>
+<li>XSLT objects now take XPath object as <tt class="docutils literal">__call__</tt> stylesheet
+parameters.</li>
+<li>Enable path caching in ElementPath (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) to avoid parsing
+overhead.</li>
+<li>Setting the value of a namespaced attribute always uses a prefixed
+namespace instead of the default namespace even if both declare the
+same namespace URI. This avoids serialisation problems when an
+attribute from a default namespace is set on an element from a
+different namespace.</li>
+<li>XSLT extension elements: support for XSLT context nodes other than
+elements: document root, comments, processing instructions.</li>
+<li>Support for strings (in addition to Elements) in node-sets returned
+by extension functions.</li>
+<li>Forms that lack an <tt class="docutils literal">action</tt> attribute default to the base URL of
+the document on submit.</li>
+<li>XPath attribute result strings have an <tt class="docutils literal">attrname</tt> property.</li>
+<li>Namespace URIs get validated against RFC 3986 at the API level
+(required by the XML namespace specification).</li>
+<li>Target parsers show their target object in the <tt class="docutils literal">.target</tt> property
+(compatible with ElementTree).</li>
+</ul>
+</div>
+<div class="section" id="id247">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>API is hardened against invalid proxy instances to prevent crashes
+due to incorrectly instantiated Element instances.</li>
+<li>Prevent crash when instantiating <tt class="docutils literal">CommentBase</tt> and friends.</li>
+<li>Export ElementTree compatible XML parser class as
+<tt class="docutils literal">XMLTreeBuilder</tt>, as it is called in ET 1.2.</li>
+<li>ObjectifiedDataElements in lxml.objectify were not hashable. They
+now use the hash value of the underlying Python value (string,
+number, etc.) to which they compare equal.</li>
+<li>Parsing broken fragments in lxml.html could fail if the fragment
+contained an orphaned closing '</div>' tag.</li>
+<li>Using XSLT extension elements around the root of the output document
+crashed.</li>
+<li><tt class="docutils literal">lxml.cssselect</tt> did not distinguish between <tt class="docutils literal"><span class="pre">x[attr="val"]</span></tt> and
+<tt class="docutils literal">x <span class="pre">[attr="val"]</span></tt> (with a space). The latter now matches the
+attribute independent of the element.</li>
+<li>Rewriting multiple links inside of HTML text content could end up
+replacing unrelated content as replacements could impact the
+reported position of subsequent matches. Modifications are now
+simplified by letting the <tt class="docutils literal">iterlinks()</tt> generator in <tt class="docutils literal">lxml.html</tt>
+return links in reversed order if they appear inside the same text
+node. Thus, replacements and link-internal modifications no longer
+change the position of links reported afterwards.</li>
+<li>The <tt class="docutils literal">.value</tt> attribute of <tt class="docutils literal">textarea</tt> elements in lxml.html did
+not represent the complete raw value (including child tags etc.). It
+now serialises the complete content on read and replaces the
+complete content by a string on write.</li>
+<li>Target parser didn't call <tt class="docutils literal">.close()</tt> on the target object if
+parsing failed. Now it is guaranteed that <tt class="docutils literal">.close()</tt> will be
+called after parsing, regardless of the outcome.</li>
+</ul>
+</div>
+<div class="section" id="id248">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Official support for Python 3.1.2 and later.</li>
+<li>Static MS Windows builds can now download their dependencies
+themselves.</li>
+<li><tt class="docutils literal">Element.attrib</tt> no longer uses a cyclic reference back to its
+Element object. It therefore no longer requires the garbage
+collector to clean up.</li>
+<li>Static builds include libiconv, in addition to libxml2 and libxslt.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id249">
+<h1>2.2.8 (2010-09-02)</h1>
+<div class="section" id="id250">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in newer libxml2 versions when moving elements between
+documents that had attributes on replaced XInclude nodes.</li>
+<li>Import fix for urljoin in Python 3.1+.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id251">
+<h1>2.2.7 (2010-07-24)</h1>
+<div class="section" id="id252">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in XSLT when generating text-only result documents with a
+stylesheet created in a different thread.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id253">
+<h1>2.2.6 (2010-03-02)</h1>
+<div class="section" id="id254">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fixed several Python 3 regressions by building with Cython 0.11.3.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id255">
+<h1>2.2.5 (2010-02-28)</h1>
+<div class="section" id="id256">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for running XSLT extension elements on the input root node
+(e.g. in a template matching on "/").</li>
+</ul>
+</div>
+<div class="section" id="id257">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in XPath evaluation when reading smart strings from a document
+other than the original context document.</li>
+<li>Support recent versions of html5lib by not requiring its
+<tt class="docutils literal">XHTMLParser</tt> in <tt class="docutils literal">htmlparser.py</tt> anymore.</li>
+<li>Manually instantiating the custom element classes in
+<tt class="docutils literal">lxml.objectify</tt> could crash.</li>
+<li>Invalid XML text characters were not rejected by the API when they
+appeared in unicode strings directly after non-ASCII characters.</li>
+<li>lxml.html.open_http_urllib() did not work in Python 3.</li>
+<li>The functions <tt class="docutils literal">strip_tags()</tt> and <tt class="docutils literal">strip_elements()</tt> in
+<tt class="docutils literal">lxml.etree</tt> did not remove all occurrences of a tag in all cases.</li>
+<li>Crash in XSLT extension elements when the XSLT context node is not
+an element.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id258">
+<h1>2.2.4 (2009-11-11)</h1>
+<div class="section" id="id259">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Static build of libxml2/libxslt was broken.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id260">
+<h1>2.2.3 (2009-10-30)</h1>
+<div class="section" id="id261">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id262">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
+parser.</li>
+<li>Looking up and deleting attributes without a namespace could hit a
+namespaced attribute of the same name instead.</li>
+<li>Late errors during calls to <tt class="docutils literal">SubElement()</tt> (e.g. attribute related
+ones) could leave a partially initialised element in the tree.</li>
+<li>Modifying trees that contain parsed entity references could result
+in an infinite loop.</li>
+<li>ObjectifiedElement.__setattr__ created an empty-string child element when the
+attribute value was rejected as a non-unicode/non-ascii string</li>
+<li>Syntax errors in <tt class="docutils literal">lxml.cssselect</tt> could result in misleading error
+messages.</li>
+<li>Invalid syntax in CSS expressions could lead to an infinite loop in
+the parser of <tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>CSS special character escapes were not properly handled in
+<tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>CSS Unicode escapes were not properly decoded in <tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>Select options in HTML forms that had no explicit <tt class="docutils literal">value</tt>
+attribute were not handled correctly. The HTML standard dictates
+that their value is defined by their text content. This is now
+supported by lxml.html.</li>
+<li>XPath raised a TypeError when finding CDATA sections. This is now
+fully supported.</li>
+<li>Calling <tt class="docutils literal">help(lxml.objectify)</tt> didn't work at the prompt.</li>
+<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify no longer defines the default
+namespaces when annotation is disabled.</li>
+<li>Feed parser failed to honour the 'recover' option on parse errors.</li>
+<li>Diverting the error logging to Python's logging system was broken.</li>
+</ul>
+</div>
+<div class="section" id="id263">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id264">
+<h1>2.2.2 (2009-06-21)</h1>
+<div class="section" id="id265">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New helper functions <tt class="docutils literal">strip_attributes()</tt>, <tt class="docutils literal">strip_elements()</tt>,
+<tt class="docutils literal">strip_tags()</tt> in lxml.etree to remove attributes/subtrees/tags
+from a subtree.</li>
+</ul>
+</div>
+<div class="section" id="id266">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Namespace cleanup on subtree insertions could result in missing
+namespace declarations (and potentially crashes) if the element
+defining a namespace was deleted and the namespace was not used by
+the top element of the inserted subtree but only in deeper subtrees.</li>
+<li>Raising an exception from a parser target callback didn't always
+terminate the parser.</li>
+<li>Only {true, false, 1, 0} are accepted as the lexical representation for
+BoolElement ({True, False, T, F, t, f} not any more), restoring lxml <= 2.0
+behaviour.</li>
+</ul>
+</div>
+<div class="section" id="id267">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id268">
+<h1>2.2.1 (2009-06-02)</h1>
+<div class="section" id="id269">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Injecting default attributes into a document during XML Schema
+validation (also at parse time).</li>
+<li>Pass <tt class="docutils literal">huge_tree</tt> parser option to disable parser security
+restrictions imposed by libxml2 2.7.</li>
+</ul>
+</div>
+<div class="section" id="id270">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The script for statically building libxml2 and libxslt didn't work
+in Py3.</li>
+<li><tt class="docutils literal">XMLSchema()</tt> also passes invalid schema documents on to libxml2
+for parsing (which could lead to a crash before release 2.6.24).</li>
+</ul>
+</div>
+<div class="section" id="id271">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id272">
+<h1>2.2 (2009-03-21)</h1>
+<div class="section" id="id273">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for <tt class="docutils literal">standalone</tt> flag in XML declaration through
+<tt class="docutils literal">tree.docinfo.standalone</tt> and by passing <tt class="docutils literal">standalone=True/False</tt>
+on serialisation.</li>
+</ul>
+</div>
+<div class="section" id="id274">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when parsing an XML Schema with external imports from a
+filename.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta4-2009-02-27">
+<h1>2.2beta4 (2009-02-27)</h1>
+<div class="section" id="id275">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support strings and instantiable Element classes as child arguments
+to the constructor of custom Element classes.</li>
+<li>GZip compression support for serialisation to files and file-like
+objects.</li>
+</ul>
+</div>
+<div class="section" id="id276">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Deep-copying an ElementTree copied neither its sibling PIs and
+comments nor its internal/external DTD subsets.</li>
+<li>Soupparser failed on broken attributes without values.</li>
+<li>Crash in XSLT when overwriting an already defined attribute using
+<tt class="docutils literal">xsl:attribute</tt>.</li>
+<li>Crash bug in exception handling code under Python 3. This was due
+to a problem in Cython, not lxml itself.</li>
+<li><tt class="docutils literal">lxml.html.FormElement._name()</tt> failed for non top-level forms.</li>
+<li><tt class="docutils literal">TAG</tt> special attribute in constructor of custom Element classes
+was evaluated incorrectly.</li>
+</ul>
+</div>
+<div class="section" id="id277">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Official support for Python 3.0.1.</li>
+<li><tt class="docutils literal">Element.findtext()</tt> now returns an empty string instead of None
+for Elements without text content.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta3-2009-02-17">
+<h1>2.2beta3 (2009-02-17)</h1>
+<div class="section" id="id278">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">XSLT.strparam()</tt> class method to wrap quoted string parameters
+that require escaping.</li>
+</ul>
+</div>
+<div class="section" id="id279">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory leak in XPath evaluators.</li>
+<li>Crash when parsing indented XML in one thread and merging it with
+other documents parsed in another thread.</li>
+<li>Setting the <tt class="docutils literal">base</tt> attribute in <tt class="docutils literal">lxml.objectify</tt> from a unicode
+string failed.</li>
+<li>Fixes following changes in Python 3.0.1.</li>
+<li>Minor fixes for Python 3.</li>
+</ul>
+</div>
+<div class="section" id="id280">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The global error log (which is copied into the exception log) is now
+local to a thread, which fixes some race conditions.</li>
+<li>More robust error handling on serialisation.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta2-2009-01-25">
+<h1>2.2beta2 (2009-01-25)</h1>
+<div class="section" id="id281">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Potential memory leak on exception handling. This was due to a
+problem in Cython, not lxml itself.</li>
+<li><tt class="docutils literal">iter_links</tt> (and related link-rewriting functions) in
+<tt class="docutils literal">lxml.html</tt> would interpret CSS like <tt class="docutils literal"><span class="pre">url("link")</span></tt> incorrectly
+(treating the quotation marks as part of the link).</li>
+<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id282">
+<h1>2.1.5 (2009-01-06)</h1>
+<div class="section" id="id283">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Potential memory leak on exception handling. This was due to a
+problem in Cython, not lxml itself.</li>
+<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2008-12-12">
+<h1>2.2beta1 (2008-12-12)</h1>
+<div class="section" id="id284">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Allow <tt class="docutils literal">lxml.html.diff.htmldiff</tt> to accept Element objects, not
+just HTML strings.</li>
+</ul>
+</div>
+<div class="section" id="id285">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when using an XPath evaluator in multiple threads.</li>
+<li>Fixed missing whitespace before <tt class="docutils literal"><span class="pre">Link:...</span></tt> in <tt class="docutils literal">lxml.html.diff</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id286">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Export <tt class="docutils literal">lxml.html.parse</tt>.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id287">
+<h1>2.1.4 (2008-12-12)</h1>
+<div class="section" id="id288">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when using an XPath evaluator in multiple threads.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id289">
+<h1>2.0.11 (2008-12-12)</h1>
+<div class="section" id="id290">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when using an XPath evaluator in multiple threads.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="alpha1-2008-11-23">
+<h1>2.2alpha1 (2008-11-23)</h1>
+<div class="section" id="id291">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for XSLT result tree fragments in XPath/XSLT extension
+functions.</li>
+<li>QName objects have new properties <tt class="docutils literal">namespace</tt> and <tt class="docutils literal">localname</tt>.</li>
+<li>New options for exclusive C14N and C14N without comments.</li>
+<li>Instantiating a custom Element classes creates a new Element.</li>
+</ul>
+</div>
+<div class="section" id="id292">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>XSLT didn't inherit the parse options of the input document.</li>
+<li>0-bytes could slip through the API when used inside of Unicode
+strings.</li>
+<li>With <tt class="docutils literal">lxml.html.clean.autolink</tt>, links with balanced parenthesis,
+that end in a parenthesis, will be linked in their entirety (typical
+with Wikipedia links).</li>
+</ul>
+</div>
+<div class="section" id="id293">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id294">
+<h1>2.1.3 (2008-11-17)</h1>
+<div class="section" id="id295">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id296">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Ref-count leaks when lxml enters a try-except statement while an
+outside exception lives in sys.exc_*(). This was due to a problem in
+Cython, not lxml itself.</li>
+<li>Parser Unicode decoding errors could get swallowed by other
+exceptions.</li>
+<li>Name/import errors in some Python modules.</li>
+<li>Internal DTD subsets that did not specify a system or public ID were
+not serialised and did not appear in the docinfo property of
+ElementTrees.</li>
+<li>Fix a pre-Py3k warning when parsing from a gzip file in Py2.6.</li>
+<li>Test suite fixes for libxml2 2.7.</li>
+<li>Resolver.resolve_string() did not work for non-ASCII byte strings.</li>
+<li>Resolver.resolve_file() was broken.</li>
+<li>Overriding the parser encoding didn't work for many encodings.</li>
+</ul>
+</div>
+<div class="section" id="id297">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id298">
+<h1>2.0.10 (2008-11-17)</h1>
+<div class="section" id="id299">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Ref-count leaks when lxml enters a try-except statement while an
+outside exception lives in sys.exc_*(). This was due to a problem in
+Cython, not lxml itself.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id300">
+<h1>2.1.2 (2008-09-05)</h1>
+<div class="section" id="id301">
+<h2>Features added</h2>
+<ul class="simple">
+<li>lxml.etree now tries to find the absolute path name of files when
+parsing from a file-like object. This helps custom resolvers when
+resolving relative URLs, as lixbml2 can prepend them with the path
+of the source document.</li>
+</ul>
+</div>
+<div class="section" id="id302">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory problem when passing documents between threads.</li>
+<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
+exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
+</ul>
+</div>
+<div class="section" id="id303">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id304">
+<h1>2.0.9 (2008-09-05)</h1>
+<div class="section" id="id305">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory problem when passing documents between threads.</li>
+<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
+exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id306">
+<h1>2.1.1 (2008-07-24)</h1>
+<div class="section" id="id307">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id308">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when parsing XSLT stylesheets in a thread and using them in
+another.</li>
+<li>Encoding problem when including text with ElementInclude under
+Python 3.</li>
+</ul>
+</div>
+<div class="section" id="id309">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id310">
+<h1>2.0.8 (2008-07-24)</h1>
+<div class="section" id="id311">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.html.rewrite_links()</tt> strips links to work around documents
+with whitespace in URL attributes.</li>
+</ul>
+</div>
+<div class="section" id="id312">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when parsing XSLT stylesheets in a thread and using them in
+another.</li>
+<li>CSS selector parser dropped remaining expression after a function
+with parameters.</li>
+</ul>
+</div>
+<div class="section" id="id313">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id314">
+<h1>2.1 (2008-07-09)</h1>
+<div class="section" id="id315">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Smart strings can be switched off in XPath (<tt class="docutils literal">smart_strings</tt>
+keyword option).</li>
+<li><tt class="docutils literal">lxml.html.rewrite_links()</tt> strips links to work around documents
+with whitespace in URL attributes.</li>
+</ul>
+</div>
+<div class="section" id="id316">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Custom resolvers were not used for XMLSchema includes/imports and
+XInclude processing.</li>
+<li>CSS selector parser dropped remaining expression after a function
+with parameters.</li>
+</ul>
+</div>
+<div class="section" id="id317">
+<h2>Other changes</h2>
+<ul class="simple">
+<li><tt class="docutils literal">objectify.enableRecursiveStr()</tt> was removed, use
+<tt class="docutils literal">objectify.enable_recursive_str()</tt> instead</li>
+<li>Speed-up when running XSLTs on documents from other threads</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id318">
+<h1>2.0.7 (2008-06-20)</h1>
+<div class="section" id="id319">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
+</ul>
+</div>
+<div class="section" id="id320">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Descending dot-separated classes in CSS selectors were not resolved
+correctly.</li>
+<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
+<li>Potential threading problem in XInclude.</li>
+<li>Crash in Element class lookup classes when the __init__() method of
+the super class is not called from Python subclasses.</li>
+</ul>
+</div>
+<div class="section" id="id321">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Non-ASCII characters in attribute values are no longer escaped on
+serialisation.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta3-2008-06-19">
+<h1>2.1beta3 (2008-06-19)</h1>
+<div class="section" id="id322">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Major overhaul of <tt class="docutils literal">tools/xpathgrep.py</tt> script.</li>
+<li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
+<li>Support for parsing from file-like objects that return unicode
+strings.</li>
+<li>New function <tt class="docutils literal">etree.cleanup_namespaces(el)</tt> that removes unused
+namespace declarations from a (sub)tree (experimental).</li>
+<li>XSLT results support the buffer protocol in Python 3.</li>
+<li>Polymorphic functions in <tt class="docutils literal">lxml.html</tt> that accept either a tree or
+a parsable string will return either a UTF-8 encoded byte string, a
+unicode string or a tree, based on the type of the input.
+Previously, the result was always a byte string or a tree.</li>
+<li>Support for Python 2.6 and 3.0 beta.</li>
+<li>File name handling now uses a heuristic to convert between byte
+strings (usually filenames) and unicode strings (usually URLs).</li>
+<li>Parsing from a plain file object frees the GIL under Python 2.x.</li>
+<li>Running <tt class="docutils literal">iterparse()</tt> on a plain file (or filename) frees the GIL
+on reading under Python 2.x.</li>
+<li>Conversion functions <tt class="docutils literal">html_to_xhtml()</tt> and <tt class="docutils literal">xhtml_to_html()</tt> in
+lxml.html (experimental).</li>
+<li>Most features in lxml.html work for XHTML namespaced tag names
+(experimental).</li>
+</ul>
+</div>
+<div class="section" id="id323">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
+<li>Crash in Element class lookup classes when the __init__() method of
+the super class is not called from Python subclasses.</li>
+<li>A number of problems related to unicode/byte string conversion of
+filenames and error messages were fixed.</li>
+<li>Building on MacOS-X now passes the "flat_namespace" option to the C
+compiler, which reportedly prevents build quirks and crashes on this
+platform.</li>
+<li>Windows build was broken.</li>
+<li>Rare crash when serialising to a file object with certain encodings.</li>
+</ul>
+</div>
+<div class="section" id="id324">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Non-ASCII characters in attribute values are no longer escaped on
+serialisation.</li>
+<li>Passing non-ASCII byte strings or invalid unicode strings as .tag,
+namespaces, etc. will result in a ValueError instead of an
+AssertionError (just like the tag well-formedness check).</li>
+<li>Up to several times faster attribute access (i.e. tree traversal) in
+lxml.objectify.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id325">
+<h1>2.0.6 (2008-05-31)</h1>
+<div class="section" id="id326">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id327">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Incorrect evaluation of <tt class="docutils literal"><span class="pre">el.find("tag[child]")</span></tt>.</li>
+<li>Windows build was broken.</li>
+<li>Moving a subtree from a document created in one thread into a
+document of another thread could crash when the rest of the source
+document is deleted while the subtree is still in use.</li>
+<li>Rare crash when serialising to a file object with certain encodings.</li>
+</ul>
+</div>
+<div class="section" id="id328">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>lxml should now build without problems on MacOS-X.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta2-2008-05-02">
+<h1>2.1beta2 (2008-05-02)</h1>
+<div class="section" id="id329">
+<h2>Features added</h2>
+<ul class="simple">
+<li>All parse functions in lxml.html take a <tt class="docutils literal">parser</tt> keyword argument.</li>
+<li>lxml.html has a new parser class <tt class="docutils literal">XHTMLParser</tt> and a module
+attribute <tt class="docutils literal">xhtml_parser</tt> that provide XML parsers that are
+pre-configured for the lxml.html package.</li>
+</ul>
+</div>
+<div class="section" id="id330">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Moving a subtree from a document created in one thread into a
+document of another thread could crash when the rest of the source
+document is deleted while the subtree is still in use.</li>
+<li>Passing an nsmap when creating an Element will no longer strip
+redundantly defined namespace URIs. This prevented the definition
+of more than one prefix for a namespace on the same Element.</li>
+</ul>
+</div>
+<div class="section" id="id331">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>If the default namespace is redundantly defined with a prefix on the
+same Element, the prefix will now be preferred for subelements and
+attributes. This allows users to work around a problem in libxml2
+where attributes from the default namespace could serialise without
+a prefix even when they appear on an Element with a different
+namespace (i.e. they would end up in the wrong namespace).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id332">
+<h1>2.0.5 (2008-05-01)</h1>
+<div class="section" id="id333">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id334">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Resolving to a filename in custom resolvers didn't work.</li>
+<li>lxml did not honour libxslt's second error state "STOPPED", which
+let some XSLT errors pass silently.</li>
+<li>Memory leak in Schematron with libxml2 >= 2.6.31.</li>
+</ul>
+</div>
+<div class="section" id="id335">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="beta1-2008-04-15">
+<h1>2.1beta1 (2008-04-15)</h1>
+<div class="section" id="id336">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Error logging in Schematron (requires libxml2 2.6.32 or later).</li>
+<li>Parser option <tt class="docutils literal">strip_cdata</tt> for normalising or keeping CDATA
+sections. Defaults to <tt class="docutils literal">True</tt> as before, thus replacing CDATA
+sections by their text content.</li>
+<li><tt class="docutils literal">CDATA()</tt> factory to wrap string content as CDATA section.</li>
+</ul>
+</div>
+<div class="section" id="id337">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Resolving to a filename in custom resolvers didn't work.</li>
+<li>lxml did not honour libxslt's second error state "STOPPED", which
+let some XSLT errors pass silently.</li>
+<li>Memory leak in Schematron with libxml2 >= 2.6.31.</li>
+<li>lxml.etree accepted non well-formed namespace prefix names.</li>
+</ul>
+</div>
+<div class="section" id="id338">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Major cleanup in internal <tt class="docutils literal">moveNodeToDocument()</tt> function, which
+takes care of namespace cleanup when moving elements between
+different namespace contexts.</li>
+<li>New Elements created through the <tt class="docutils literal">makeelement()</tt> method of an HTML
+parser or through lxml.html now end up in a new HTML document
+(doctype HTML 4.01 Transitional) instead of a generic XML document.
+This mostly impacts the serialisation and the availability of a DTD
+context.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id339">
+<h1>2.0.4 (2008-04-13)</h1>
+<div class="section" id="id340">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id341">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Hanging thread in conjunction with GTK threading.</li>
+<li>Crash bug in iterparse when moving elements into other documents.</li>
+<li>HTML elements' <tt class="docutils literal">.cssselect()</tt> method was broken.</li>
+<li><tt class="docutils literal"><span class="pre">ElementTree.find*()</span></tt> didn't accept QName objects.</li>
+</ul>
+</div>
+<div class="section" id="id342">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="alpha1-2008-03-27">
+<h1>2.1alpha1 (2008-03-27)</h1>
+<div class="section" id="id343">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New event types 'comment' and 'pi' in <tt class="docutils literal">iterparse()</tt>.</li>
+<li><tt class="docutils literal">XSLTAccessControl</tt> instances have a property <tt class="docutils literal">options</tt> that
+returns a dict of access configuration options.</li>
+<li>Constant instances <tt class="docutils literal">DENY_ALL</tt> and <tt class="docutils literal">DENY_WRITE</tt> on
+<tt class="docutils literal">XSLTAccessControl</tt> class.</li>
+<li>Extension elements for XSLT (experimental!)</li>
+<li><tt class="docutils literal">Element.base</tt> property returns the xml:base or HTML base URL of
+an Element.</li>
+<li><tt class="docutils literal">docinfo.URL</tt> property is writable.</li>
+</ul>
+</div>
+<div class="section" id="id344">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Default encoding for plain text serialisation was different from
+that of XML serialisation (UTF-8 instead of ASCII).</li>
+</ul>
+</div>
+<div class="section" id="id345">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Minor API speed-ups.</li>
+<li>The benchmark suite now uses tail text in the trees, which makes the
+absolute numbers incomparable to previous results.</li>
+<li>Generating the HTML documentation now requires <a class="reference external" href="http://pygments.org/">Pygments</a>, which is
+used to enable syntax highlighting for the doctest examples.</li>
+</ul>
+<p>Most long-time deprecated functions and methods were removed:</p>
+<ul>
+<li><p class="first"><tt class="docutils literal">etree.clearErrorLog()</tt>, use <tt class="docutils literal">etree.clear_error_log()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.useGlobalPythonLog()</tt>, use
+<tt class="docutils literal">etree.use_global_python_log()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.ElementClassLookup.setFallback()</tt>, use
+<tt class="docutils literal">etree.ElementClassLookup.set_fallback()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.getDefaultParser()</tt>, use <tt class="docutils literal">etree.get_default_parser()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.setDefaultParser()</tt>, use <tt class="docutils literal">etree.set_default_parser()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.setElementClassLookup()</tt>, use
+<tt class="docutils literal">etree.set_element_class_lookup()</tt></p>
+<p>Note that <tt class="docutils literal">parser.setElementClassLookup()</tt> has not been removed
+yet, although <tt class="docutils literal">parser.set_element_class_lookup()</tt> should be used
+instead.</p>
+</li>
+<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespace()</tt>, use
+<tt class="docutils literal">xpath_evaluator.register_namespace()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespaces()</tt>, use
+<tt class="docutils literal">xpath_evaluator.register_namespaces()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">objectify.setPytypeAttributeTag</tt>, use
+<tt class="docutils literal">objectify.set_pytype_attribute_tag</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">objectify.setDefaultParser()</tt>, use
+<tt class="docutils literal">objectify.set_default_parser()</tt></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id346">
+<h1>2.0.3 (2008-03-26)</h1>
+<div class="section" id="id347">
+<h2>Features added</h2>
+<ul class="simple">
+<li>soupparser.parse() allows passing keyword arguments on to
+BeautifulSoup.</li>
+<li><tt class="docutils literal">fromstring()</tt> method in <tt class="docutils literal">lxml.html.soupparser</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id348">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.html.diff</tt> didn't treat empty tags properly (e.g.,
+<tt class="docutils literal"><br></tt>).</li>
+<li>Handle entity replacements correctly in target parser.</li>
+<li>Crash when using <tt class="docutils literal">iterparse()</tt> with XML Schema validation.</li>
+<li>The BeautifulSoup parser (soupparser.py) did not replace entities,
+which made them turn up in text content.</li>
+<li>Attribute assignment of custom PyTypes in objectify could fail to
+correctly serialise the value to a string.</li>
+</ul>
+</div>
+<div class="section" id="id349">
+<h2>Other changes</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.html.ElementSoup</tt> was replaced by a new module
+<tt class="docutils literal">lxml.html.soupparser</tt> with a more consistent API. The old module
+remains for compatibility with ElementTree's own ElementSoup module.</li>
+<li>Setting the XSLT_CONFIG and XML2_CONFIG environment variables at
+build time will let setup.py pick up the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> and
+<tt class="docutils literal"><span class="pre">xslt-config</span></tt> scripts from the supplied path name.</li>
+<li>Passing <tt class="docutils literal"><span class="pre">--with-xml2-config=/path/to/xml2-config</span></tt> to setup.py will
+override the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> script that is used to determine the C
+compiler options. The same applies for the <tt class="docutils literal"><span class="pre">--with-xslt-config</span></tt>
+option.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id350">
+<h1>2.0.2 (2008-02-22)</h1>
+<div class="section" id="id351">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support passing <tt class="docutils literal">base_url</tt> to file parser functions to override
+the filename of the file(-like) object.</li>
+</ul>
+</div>
+<div class="section" id="id352">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The prefix for objectify's pytype namespace was missing from the set
+of default prefixes.</li>
+<li>Memory leak in Schematron (fixed only for libxml2 2.6.31+).</li>
+<li>Error type names in RelaxNG were reported incorrectly.</li>
+<li>Slice deletion bug fixed in objectify.</li>
+</ul>
+</div>
+<div class="section" id="id353">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Enabled doctests for some Python modules (especially <tt class="docutils literal">lxml.html</tt>).</li>
+<li>Add a <tt class="docutils literal">method</tt> argument to <tt class="docutils literal">lxml.html.tostring()</tt>
+(<tt class="docutils literal"><span class="pre">method="xml"</span></tt> for XHTML output).</li>
+<li>Make it clearer that methods like <tt class="docutils literal">lxml.html.fromstring()</tt> take a
+<tt class="docutils literal">base_url</tt> argument.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id354">
+<h1>2.0.1 (2008-02-13)</h1>
+<div class="section" id="id355">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Child iteration in <tt class="docutils literal">lxml.pyclasslookup</tt>.</li>
+<li>Loads of new docstrings reflect the signature of functions and
+methods to make them visible in API docs and <tt class="docutils literal">help()</tt></li>
+</ul>
+</div>
+<div class="section" id="id356">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The module <tt class="docutils literal">lxml.html.builder</tt> was duplicated as
+<tt class="docutils literal">lxml.htmlbuilder</tt></li>
+<li>Form elements would return None for <tt class="docutils literal">form.fields.keys()</tt> if there
+was an unnamed input field. Now unnamed input fields are completely
+ignored.</li>
+<li>Setting an element slice in objectify could insert slice-overlapping
+elements at the wrong position.</li>
+</ul>
+</div>
+<div class="section" id="id357">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The generated API documentation was cleaned up and disburdened from
+non-public classes etc.</li>
+<li>The previously public module <tt class="docutils literal">lxml.html.setmixin</tt> was renamed to
+<tt class="docutils literal">lxml.html._setmixin</tt> as it is not an official part of lxml. If
+you want to use it, feel free to copy it over to your own source
+base.</li>
+<li>Passing <tt class="docutils literal"><span class="pre">--with-xslt-config=/path/to/xslt-config</span></tt> to setup.py will
+override the <tt class="docutils literal"><span class="pre">xslt-config</span></tt> script that is used to determine the C
+compiler options.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id358">
+<h1>2.0 (2008-02-01)</h1>
+<div class="section" id="id359">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Passing the <tt class="docutils literal">unicode</tt> type as <tt class="docutils literal">encoding</tt> to <tt class="docutils literal">tostring()</tt> will
+serialise to unicode. The <tt class="docutils literal">tounicode()</tt> function is now
+deprecated.</li>
+<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> can parse from StringIO.</li>
+<li><tt class="docutils literal">makeparser()</tt> function in <tt class="docutils literal">lxml.objectify</tt> to create a new
+parser with the usual objectify setup.</li>
+<li>Plain ASCII XPath string results are no longer forced into unicode
+objects as in 2.0beta1, but are returned as plain strings as before.</li>
+<li>All XPath string results are 'smart' objects that have a
+<tt class="docutils literal">getparent()</tt> method to retrieve their parent Element.</li>
+<li><tt class="docutils literal">with_tail</tt> option in serialiser functions.</li>
+<li>More accurate exception messages in validator creation.</li>
+<li>Parse-time XML schema validation (<tt class="docutils literal">schema</tt> parser keyword).</li>
+<li>XPath string results of the <tt class="docutils literal">text()</tt> function and attribute
+selection make their Element container accessible through a
+<tt class="docutils literal">getparent()</tt> method. As a side-effect, they are now always
+unicode objects (even ASCII strings).</li>
+<li><tt class="docutils literal">XSLT</tt> objects are usable in any thread - at the cost of a deep
+copy if they were not created in that thread.</li>
+<li>Invalid entity names and character references will be rejected by
+the <tt class="docutils literal">Entity()</tt> factory.</li>
+<li><tt class="docutils literal">entity.text</tt> returns the textual representation of the entity,
+e.g. <tt class="docutils literal">&amp;</tt>.</li>
+<li>New properties <tt class="docutils literal">position</tt> and <tt class="docutils literal">code</tt> on ParseError exception (as
+in ET 1.3)</li>
+<li>Rich comparison of <tt class="docutils literal">element.attrib</tt> proxies.</li>
+<li>ElementTree compatible TreeBuilder class.</li>
+<li>Use default prefixes for some common XML namespaces.</li>
+<li><tt class="docutils literal">lxml.html.clean.Cleaner</tt> now allows for a <tt class="docutils literal">host_whitelist</tt>, and
+two overridable methods: <tt class="docutils literal">allow_embedded_url(el, url)</tt> and the
+more general <tt class="docutils literal">allow_element(el)</tt>.</li>
+<li>Extended slicing of Elements as in <tt class="docutils literal"><span class="pre">element[1:-1:2]</span></tt>, both in
+etree and in objectify</li>
+<li>Resolvers can now provide a <tt class="docutils literal">base_url</tt> keyword argument when
+resolving a document as string data.</li>
+<li>When using <tt class="docutils literal">lxml.doctestcompare</tt> you can give the doctest option
+<tt class="docutils literal">NOPARSE_MARKUP</tt> (like <tt class="docutils literal"># doctest: +NOPARSE_MARKUP</tt>) to suppress
+the special checking for one test.</li>
+<li>Separate <tt class="docutils literal">feed_error_log</tt> property for the feed parser interface.
+The normal parser interface and <tt class="docutils literal">iterparse</tt> continue to use
+<tt class="docutils literal">error_log</tt>.</li>
+<li>The normal parsers and the feed parser interface are now separated
+and can be used concurrently on the same parser instance.</li>
+<li><tt class="docutils literal">fromstringlist()</tt> and <tt class="docutils literal">tostringlist()</tt> functions as in
+ElementTree 1.3</li>
+<li><tt class="docutils literal">iterparse()</tt> accepts an <tt class="docutils literal">html</tt> boolean keyword argument for
+parsing with the HTML parser (note that this interface may be
+subject to change)</li>
+<li>Parsers accept an <tt class="docutils literal">encoding</tt> keyword argument that overrides the encoding
+of the parsed documents.</li>
+<li>New C-API function <tt class="docutils literal">hasChild()</tt> to test for children</li>
+<li><tt class="docutils literal">annotate()</tt> function in objectify can annotate with Python types and XSI
+types in one step. Accompanied by <tt class="docutils literal">xsiannotate()</tt> and <tt class="docutils literal">pyannotate()</tt>.</li>
+<li><tt class="docutils literal">ET.write()</tt>, <tt class="docutils literal">tostring()</tt> and <tt class="docutils literal">tounicode()</tt> now accept a keyword
+argument <tt class="docutils literal">method</tt> that can be one of 'xml' (or None), 'html' or 'text' to
+serialise as XML, HTML or plain text content.</li>
+<li><tt class="docutils literal">iterfind()</tt> method on Elements returns an iterator equivalent to
+<tt class="docutils literal">findall()</tt></li>
+<li><tt class="docutils literal">itertext()</tt> method on Elements</li>
+<li>Setting a QName object as value of the .text property or as an attribute
+will resolve its prefix in the respective context</li>
+<li>ElementTree-like parser target interface as described in
+<a class="reference external" href="http://effbot.org/elementtree/elementtree-xmlparser.htm">http://effbot.org/elementtree/elementtree-xmlparser.htm</a></li>
+<li>ElementTree-like feed parser interface on XMLParser and HTMLParser
+(<tt class="docutils literal">feed()</tt> and <tt class="docutils literal">close()</tt> methods)</li>
+<li>Reimplemented <tt class="docutils literal">objectify.E</tt> for better performance and improved
+integration with objectify. Provides extended type support based on
+registered PyTypes.</li>
+<li>XSLT objects now support deep copying</li>
+<li>New <tt class="docutils literal">makeSubElement()</tt> C-API function that allows creating a new
+subelement straight with text, tail and attributes.</li>
+<li>XPath extension functions can now access the current context node
+(<tt class="docutils literal">context.context_node</tt>) and use a context dictionary
+(<tt class="docutils literal">context.eval_context</tt>) from the context provided in their first
+parameter</li>
+<li>HTML tag soup parser based on BeautifulSoup in <tt class="docutils literal">lxml.html.ElementSoup</tt></li>
+<li>New module <tt class="docutils literal">lxml.doctestcompare</tt> by Ian Bicking for writing simplified
+doctests based on XML/HTML output. Use by importing <tt class="docutils literal">lxml.usedoctest</tt> or
+<tt class="docutils literal">lxml.html.usedoctest</tt> from within a doctest.</li>
+<li>New module <tt class="docutils literal">lxml.cssselect</tt> by Ian Bicking for selecting Elements with CSS
+selectors.</li>
+<li>New package <tt class="docutils literal">lxml.html</tt> written by Ian Bicking for advanced HTML
+treatment.</li>
+<li>Namespace class setup is now local to the <tt class="docutils literal">ElementNamespaceClassLookup</tt>
+instance and no longer global.</li>
+<li>Schematron validation (incomplete in libxml2)</li>
+<li>Additional <tt class="docutils literal">stringify</tt> argument to <tt class="docutils literal">objectify.PyType()</tt> takes a
+conversion function to strings to support setting text values from arbitrary
+types.</li>
+<li>Entity support through an <tt class="docutils literal">Entity</tt> factory and element classes. XML
+parsers now have a <tt class="docutils literal">resolve_entities</tt> keyword argument that can be set to
+False to keep entities in the document.</li>
+<li><tt class="docutils literal">column</tt> field on error log entries to accompany the <tt class="docutils literal">line</tt> field</li>
+<li>Error specific messages in XPath parsing and evaluation
+NOTE: for evaluation errors, you will now get an XPathEvalError instead of
+an XPathSyntaxError. To catch both, you can except on <tt class="docutils literal">XPathError</tt></li>
+<li>The regular expression functions in XPath now support passing a node-set
+instead of a string</li>
+<li>Extended type annotation in objectify: new <tt class="docutils literal">xsiannotate()</tt> function</li>
+<li>EXSLT RegExp support in standard XPath (not only XSLT)</li>
+</ul>
+</div>
+<div class="section" id="id360">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Missing import in <tt class="docutils literal">lxml.html.clean</tt>.</li>
+<li>Some Python 2.4-isms prevented lxml from building/running under
+Python 2.3.</li>
+<li>XPath on ElementTrees could crash when selecting the virtual root
+node of the ElementTree.</li>
+<li>Compilation <tt class="docutils literal"><span class="pre">--without-threading</span></tt> was buggy in alpha5/6.</li>
+<li>Memory leak in the <tt class="docutils literal">parse()</tt> function.</li>
+<li>Minor bugs in XSLT error message formatting.</li>
+<li>Result document memory leak in target parser.</li>
+<li>Target parser failed to report comments.</li>
+<li>In the <tt class="docutils literal">lxml.html</tt> <tt class="docutils literal">iter_links</tt> method, links in <tt class="docutils literal"><object></tt>
+tags weren't recognized. (Note: plugin-specific link parameters
+still aren't recognized.) Also, the <tt class="docutils literal"><embed></tt> tag, though not
+standard, is now included in <tt class="docutils literal">lxml.html.defs.special_inline_tags</tt>.</li>
+<li>Using custom resolvers on XSLT stylesheets parsed from a string
+could request ill-formed URLs.</li>
+<li>With <tt class="docutils literal">lxml.doctestcompare</tt> if you do <tt class="docutils literal"><tag <span class="pre">xmlns="..."></span></tt> in your
+output, it will then be namespace-neutral (before the ellipsis was
+treated as a real namespace).</li>
+<li>AttributeError in feed parser on parse errors</li>
+<li>XML feed parser setup problem</li>
+<li>Type annotation for unicode strings in <tt class="docutils literal">DataElement()</tt></li>
+<li>lxml failed to serialise namespace declarations of elements other than the
+root node of a tree</li>
+<li>Race condition in XSLT where the resolver context leaked between concurrent
+XSLT calls</li>
+<li>lxml.etree did not check tag/attribute names</li>
+<li>The XML parser did not report undefined entities as error</li>
+<li>The text in exceptions raised by XML parsers, validators and XPath
+evaluators now reports the first error that occurred instead of the last</li>
+<li>Passing '' as XPath namespace prefix did not raise an error</li>
+<li>Thread safety in XPath evaluators</li>
+</ul>
+</div>
+<div class="section" id="id361">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Exceptions carry only the part of the error log that is related to
+the operation that caused the error.</li>
+<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> now enforce passing the source
+file/filename through the <tt class="docutils literal">file</tt> keyword argument.</li>
+<li>The test suite now skips most doctests under Python 2.3.</li>
+<li><tt class="docutils literal">make clean</tt> no longer removes the .c files (use <tt class="docutils literal">make
+realclean</tt> instead)</li>
+<li>Minor performance tweaks for Element instantiation and subelement
+creation</li>
+<li>Various places in the XPath, XSLT and iteration APIs now require
+keyword-only arguments.</li>
+<li>The argument order in <tt class="docutils literal">element.itersiblings()</tt> was changed to
+match the order used in all other iteration methods. The second
+argument ('preceding') is now a keyword-only argument.</li>
+<li>The <tt class="docutils literal">getiterator()</tt> method on Elements and ElementTrees was
+reverted to return an iterator as it did in lxml 1.x. The ET API
+specification allows it to return either a sequence or an iterator,
+and it traditionally returned a sequence in ET and an iterator in
+lxml. However, it is now deprecated in favour of the <tt class="docutils literal">iter()</tt>
+method, which should be used in new code wherever possible.</li>
+<li>The 'pretty printed' serialisation of ElementTree objects now
+inserts newlines at the root level between processing instructions,
+comments and the root tag.</li>
+<li>A 'pretty printed' serialisation is now terminated with a newline.</li>
+<li>Second argument to <tt class="docutils literal">lxml.etree.Extension()</tt> helper is no longer
+required, third argument is now a keyword-only argument <tt class="docutils literal">ns</tt>.</li>
+<li><tt class="docutils literal">lxml.html.tostring</tt> takes an <tt class="docutils literal">encoding</tt> argument.</li>
+<li>The module source files were renamed to "lxml.*.pyx", such as
+"lxml.etree.pyx". This was changed for consistency with the way
+Pyrex commonly handles package imports. The main effect is that
+classes now know about their fully qualified class name, including
+the package name of their module.</li>
+<li>Keyword-only arguments in some API functions, especially in the
+parsers and serialisers.</li>
+<li>Tag name validation in lxml.etree (and lxml.html) now distinguishes
+between HTML tags and XML tags based on the parser that was used to
+parse or create them. HTML tags no longer reject any non-ASCII
+characters in tag names but only spaces and the special characters
+<tt class="docutils literal"><span class="pre"><>&/"'</span></tt>.</li>
+<li>lxml.etree now emits a warning if you use XPath with libxml2 2.6.27
+(which can crash on certain XPath errors)</li>
+<li>Type annotation in objectify now preserves the already annotated type by
+default to prevent losing type information that is already there.</li>
+<li><tt class="docutils literal">element.getiterator()</tt> returns a list, use <tt class="docutils literal">element.iter()</tt> to retrieve
+an iterator (ElementTree 1.3 compatible behaviour)</li>
+<li>objectify.PyType for None is now called "NoneType"</li>
+<li><tt class="docutils literal">el.getiterator()</tt> renamed to <tt class="docutils literal">el.iter()</tt>, following ElementTree 1.3 -
+original name is still available as alias</li>
+<li>In the public C-API, <tt class="docutils literal">findOrBuildNodeNs()</tt> was replaced by the more
+generic <tt class="docutils literal">findOrBuildNodeNsPrefix</tt></li>
+<li>Major refactoring in XPath/XSLT extension function code</li>
+<li>Network access in parsers disabled by default</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id362">
+<h1>1.3.6 (2007-10-29)</h1>
+<div class="section" id="id363">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Backported decref crash fix from 2.0</li>
+<li>Well hidden free-while-in-use crash bug in ObjectPath</li>
+</ul>
+</div>
+<div class="section" id="id364">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The test suites now run <tt class="docutils literal">gc.collect()</tt> in the <tt class="docutils literal">tearDown()</tt>
+methods. While this makes them take a lot longer to run, it also
+makes it easier to link a specific test to garbage collection
+problems that would otherwise appear in later tests.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id365">
+<h1>1.3.5 (2007-10-22)</h1>
+<div class="section" id="id366">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id367">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>lxml.etree could crash when adding more than 10000 namespaces to a
+document</li>
+<li>lxml failed to serialise namespace declarations of elements other
+than the root node of a tree</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id368">
+<h1>1.3.4 (2007-08-30)</h1>
+<div class="section" id="id369">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The <tt class="docutils literal">ElementMaker</tt> in <tt class="docutils literal">lxml.builder</tt> now accepts the keyword arguments
+<tt class="docutils literal">namespace</tt> and <tt class="docutils literal">nsmap</tt> to set a namespace and nsmap for the Elements it
+creates.</li>
+<li>The <tt class="docutils literal">docinfo</tt> on ElementTree objects has new properties <tt class="docutils literal">internalDTD</tt>
+and <tt class="docutils literal">externalDTD</tt> that return a DTD object for the internal or external
+subset of the document respectively.</li>
+<li>Serialising an ElementTree now includes any internal DTD subsets that are
+part of the document, as well as comments and PIs that are siblings of the
+root node.</li>
+</ul>
+</div>
+<div class="section" id="id370">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Parsing with the <tt class="docutils literal">no_network</tt> option could fail</li>
+</ul>
+</div>
+<div class="section" id="id371">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>lxml now raises a TagNameWarning about tag names containing ':' instead of
+an Error as 1.3.3 did. The reason is that a number of projects currently
+misuse the previous lack of tag name validation to generate namespace
+prefixes without declaring namespaces. Apart from the danger of generating
+broken XML this way, it also breaks most of the namespace-aware tools in
+XML, including XPath, XSLT and validation. lxml 1.3.x will continue to
+support this bug with a Warning, while lxml 2.0 will be strict about
+well-formed tag names (not only regarding ':').</li>
+<li>Serialising an Element no longer includes its comment and PI siblings (only
+ElementTree serialisation includes them).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id372">
+<h1>1.3.3 (2007-07-26)</h1>
+<div class="section" id="id373">
+<h2>Features added</h2>
+<ul class="simple">
+<li>ElementTree compatible parser <tt class="docutils literal">ETCompatXMLParser</tt> strips processing
+instructions and comments while parsing XML</li>
+<li>Parsers now support stripping PIs (keyword argument 'remove_pis')</li>
+<li><tt class="docutils literal">etree.fromstring()</tt> now supports parsing both HTML and XML, depending on
+the parser you pass.</li>
+<li>Support <tt class="docutils literal">base_url</tt> keyword argument in <tt class="docutils literal">HTML()</tt> and <tt class="docutils literal">XML()</tt></li>
+</ul>
+</div>
+<div class="section" id="id374">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Parsing from Python Unicode strings failed on some platforms</li>
+<li><tt class="docutils literal">Element()</tt> did not raise an exception on tag names containing ':'</li>
+<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
+<tt class="docutils literal">ProcessingInstruction</tt> as tags. It also accepts <tt class="docutils literal">Element</tt> now.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id375">
+<h1>1.3.2 (2007-07-03)</h1>
+<div class="section" id="id376">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id377">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>"deallocating None" crash bug</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id378">
+<h1>1.3.1 (2007-07-02)</h1>
+<div class="section" id="id379">
+<h2>Features added</h2>
+<ul class="simple">
+<li>objectify.DataElement now supports setting values from existing data
+elements (not just plain Python types) and reuses defined namespaces etc.</li>
+<li>E-factory support for lxml.objectify (<tt class="docutils literal">objectify.E</tt>)</li>
+</ul>
+</div>
+<div class="section" id="id380">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Better way to prevent crashes in Element proxy cleanup code</li>
+<li>objectify.DataElement didn't set up None value correctly</li>
+<li>objectify.DataElement didn't check the value against the provided type hints</li>
+<li>Reference-counting bug in <tt class="docutils literal">Element.attrib.pop()</tt></li>
+</ul>
+</div>
+</div>
+<div class="section" id="id381">
+<h1>1.3 (2007-06-24)</h1>
+<div class="section" id="id382">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Module <tt class="docutils literal">lxml.pyclasslookup</tt> module implements an Element class lookup
+scheme that can access the entire tree in read-only mode to help determining
+a suitable Element class</li>
+<li>Parsers take a <tt class="docutils literal">remove_comments</tt> keyword argument that skips over comments</li>
+<li><tt class="docutils literal">parse()</tt> function in <tt class="docutils literal">objectify</tt>, corresponding to <tt class="docutils literal">XML()</tt> etc.</li>
+<li><tt class="docutils literal">Element.addnext(el)</tt> and <tt class="docutils literal">Element.addprevious(el)</tt> methods to support
+adding processing instructions and comments around the root node</li>
+<li><tt class="docutils literal">Element.attrib</tt> was missing <tt class="docutils literal">clear()</tt> and <tt class="docutils literal">pop()</tt> methods</li>
+<li>Extended type annotation in objectify: cleaner annotation namespace setup
+plus new <tt class="docutils literal">deannotate()</tt> function</li>
+<li>Support for custom Element class instantiation in lxml.sax: passing a
+<tt class="docutils literal">makeelement</tt> function to the ElementTreeContentHandler will reuse the
+lookup context of that function</li>
+<li>'.' represents empty ObjectPath (identity)</li>
+<li><tt class="docutils literal">Element.values()</tt> to accompany the existing <tt class="docutils literal">.keys()</tt> and <tt class="docutils literal">.items()</tt></li>
+<li><tt class="docutils literal">collectAttributes()</tt> C-function to build a list of attribute
+keys/values/items for a libxml2 node</li>
+<li><tt class="docutils literal">DTD</tt> validator class (like <tt class="docutils literal">RelaxNG</tt> and <tt class="docutils literal">XMLSchema</tt>)</li>
+<li>HTML generator helpers by Fredrik Lundh in <tt class="docutils literal">lxml.htmlbuilder</tt></li>
+<li><tt class="docutils literal">ElementMaker</tt> XML generator by Fredrik Lundh in <tt class="docutils literal">lxml.builder.E</tt></li>
+<li>Support for pickling <tt class="docutils literal">objectify.ObjectifiedElement</tt> objects to XML</li>
+<li><tt class="docutils literal">update()</tt> method on Element.attrib</li>
+<li>Optimised replacement for libxml2's _xmlReconsiliateNs(). This allows lxml
+a better handling of namespaces when moving elements between documents.</li>
+</ul>
+</div>
+<div class="section" id="id383">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Removing Elements from a tree could make them lose their namespace
+declarations</li>
+<li><tt class="docutils literal">ElementInclude</tt> didn't honour base URL of original document</li>
+<li>Replacing the children slice of an Element would cut off the tails of the
+original children</li>
+<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
+<tt class="docutils literal">ProcessingInstruction</tt> as tags</li>
+<li>API functions now check incoming strings for XML conformity. Zero bytes or
+low ASCII characters are no longer accepted (AssertionError).</li>
+<li>XSLT parsing failed to pass resolver context on to imported documents</li>
+<li>passing '' as namespace prefix in nsmap could be passed through to libxml2</li>
+<li>Objectify couldn't handle prefixed XSD type names in <tt class="docutils literal">xsi:type</tt></li>
+<li>More ET compatible behaviour when writing out XML declarations or not</li>
+<li>More robust error handling in <tt class="docutils literal">iterparse()</tt></li>
+<li>Documents lost their top-level PIs and comments on serialisation</li>
+<li>lxml.sax failed on comments and PIs. Comments are now properly ignored and
+PIs are copied.</li>
+<li>Possible memory leaks in namespace handling when moving elements between
+documents</li>
+</ul>
+</div>
+<div class="section" id="id384">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>major restructuring in the documentation</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id385">
+<h1>1.2.1 (2007-02-27)</h1>
+<div class="section" id="id386">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Build fixes for MS compiler</li>
+<li>Item assignments to special names like <tt class="docutils literal"><span class="pre">element["text"]</span></tt> failed</li>
+<li>Renamed ObjectifiedDataElement.__setText() to _setText() to make it easier
+to access</li>
+<li>The pattern for attribute names in ObjectPath was too restrictive</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id387">
+<h1>1.2 (2007-02-20)</h1>
+<div class="section" id="id388">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Rich comparison of QName objects</li>
+<li>Support for regular expressions in benchmark selection</li>
+<li>get/set emulation (not .attrib!) for attributes on processing instructions</li>
+<li>ElementInclude Python module for ElementTree compatible XInclude processing
+that honours custom resolvers registered with the source document</li>
+<li>ElementTree.parser property holds the parser used to parse the document</li>
+<li>setup.py has been refactored for greater readability and flexibility</li>
+<li>--rpath flag to setup.py to induce automatic linking-in of dynamic library
+runtime search paths has been renamed to --auto-rpath. This makes it
+possible to pass an --rpath directly to distutils; previously this was being
+shadowed.</li>
+</ul>
+</div>
+<div class="section" id="id389">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Element instantiation now uses locks to prevent race conditions with threads</li>
+<li>ElementTree.write() did not raise an exception when the file was not writable</li>
+<li>Error handling could crash under Python <= 2.4.1 - fixed by disabling thread
+support in these environments</li>
+<li>Element.find*() did not accept QName objects as path</li>
+</ul>
+</div>
+<div class="section" id="id390">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>code cleanup: redundant _NodeBase super class merged into _Element class
+Note: although the impact should be zero in most cases, this change breaks
+the compatibility of the public C-API</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id391">
+<h1>1.1.2 (2006-10-30)</h1>
+<div class="section" id="id392">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Data elements in objectify support repr(), which is now used by dump()</li>
+<li>Source distribution now ships with a patched Pyrex</li>
+<li>New C-API function makeElement() to create new elements with text,
+tail, attributes and namespaces</li>
+<li>Reuse original parser flags for XInclude</li>
+<li>Simplified support for handling XSLT processing instructions</li>
+</ul>
+</div>
+<div class="section" id="id393">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Parser resources were not freed before the next parser run</li>
+<li>Open files and XML strings returned by Python resolvers were not
+closed/freed</li>
+<li>Crash in the IDDict returned by XMLDTDID</li>
+<li>Copying Comments and ProcessingInstructions failed</li>
+<li>Memory leak for external URLs in _XSLTProcessingInstruction.parseXSL()</li>
+<li>Memory leak when garbage collecting tailed root elements</li>
+<li>HTML script/style content was not propagated to .text</li>
+<li>Show text xincluded between text nodes correctly in .text and .tail</li>
+<li>'integer * objectify.StringElement' operation was not supported</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id394">
+<h1>1.1.1 (2006-09-21)</h1>
+<div class="section" id="id395">
+<h2>Features added</h2>
+<ul class="simple">
+<li>XSLT profiling support (<tt class="docutils literal">profile_run</tt> keyword)</li>
+<li>countchildren() method on objectify.ObjectifiedElement</li>
+<li>Support custom elements for tree nodes in lxml.objectify</li>
+</ul>
+</div>
+<div class="section" id="id396">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>lxml.objectify failed to support long data values (e.g., "123L")</li>
+<li>Error messages from XSLT did not reach <tt class="docutils literal">XSLT.error_log</tt></li>
+<li>Factories objectify.Element() and objectify.DataElement() were missing
+<tt class="docutils literal">attrib</tt> and <tt class="docutils literal">nsmap</tt> keyword arguments</li>
+<li>Changing the default parser in lxml.objectify did not update the factories
+Element() and DataElement()</li>
+<li>Let lxml.objectify.Element() always generate tree elements (not data
+elements)</li>
+<li>Build under Windows failed ('0' bug in patched Pyrex version)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id397">
+<h1>1.1 (2006-09-13)</h1>
+<div class="section" id="id398">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Comments and processing instructions return '<!-- comment -->' and
+'<?pi-target content?>' for repr()</li>
+<li>Parsers are now the preferred (and default) place where element class lookup
+schemes should be registered. Namespace lookup is no longer supported by
+default.</li>
+<li>Support for Python 2.5 beta</li>
+<li>Unlock the GIL for deep copying documents and for XPath()</li>
+<li>New <tt class="docutils literal">compact</tt> keyword argument for parsing read-only documents</li>
+<li>Support for parser options in iterparse()</li>
+<li>The <tt class="docutils literal">namespace</tt> axis is supported in XPath and returns (prefix, URI)
+tuples</li>
+<li>The XPath expression "/" now returns an empty list instead of raising an
+exception</li>
+<li>XML-Object API on top of lxml (lxml.objectify)</li>
+<li>Customizable Element class lookup:<ul>
+<li>different pre-implemented lookup mechanisms</li>
+<li>support for externally provided lookup functions</li>
+</ul>
+</li>
+<li>Support for processing instructions (ET-like, not compatible)</li>
+<li>Public C-level API for independent extension modules</li>
+<li>Module level <tt class="docutils literal">iterwalk()</tt> function as 'iterparse' for trees</li>
+<li>Module level <tt class="docutils literal">iterparse()</tt> function similar to ElementTree (see
+documentation for differences)</li>
+<li>Element.nsmap property returns a mapping of all namespace prefixes known at
+the Element to their namespace URI</li>
+<li>Reentrant threading support in RelaxNG, XMLSchema and XSLT</li>
+<li>Threading support in parsers and serializers:<ul>
+<li>All in-memory operations (tostring, parse(StringIO), etc.) free the GIL</li>
+<li>File operations (on file names) free the GIL</li>
+<li>Reading from file-like objects frees the GIL and reacquires it for reading</li>
+<li>Serialisation to file-like objects is single-threaded (high lock overhead)</li>
+</ul>
+</li>
+<li>Element iteration over XPath axes:<ul>
+<li>Element.iterdescendants() iterates over the descendants of an element</li>
+<li>Element.iterancestors() iterates over the ancestors of an element (from
+parent to parent)</li>
+<li>Element.itersiblings() iterates over either the following or preceding
+siblings of an element</li>
+<li>Element.iterchildren() iterates over the children of an element in either
+direction</li>
+<li>All iterators support the <tt class="docutils literal">tag</tt> keyword argument to restrict the
+generated elements</li>
+</ul>
+</li>
+<li>Element.getnext() and Element.getprevious() return the direct siblings of an
+element</li>
+</ul>
+</div>
+<div class="section" id="id399">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>filenames with local 8-bit encoding were not supported</li>
+<li>1.1beta did not compile under Python 2.3</li>
+<li>ignore unknown 'pyval' attribute values in objectify</li>
+<li>objectify.ObjectifiedElement.addattr() failed to accept Elements and Lists</li>
+<li>objectify.ObjectPath.setattr() failed to accept Elements and Lists</li>
+<li>XPathSyntaxError now inherits from XPathError</li>
+<li>Threading race conditions in RelaxNG and XMLSchema</li>
+<li>Crash when mixing elements from XSLT results into other trees, concurrent
+XSLT is only allowed when the stylesheet was parsed in the main thread</li>
+<li>The EXSLT <tt class="docutils literal">regexp:match</tt> function now works as defined (except for some
+differences in the regular expression syntax)</li>
+<li>Setting element.text to '' returned None on request, not the empty string</li>
+<li><tt class="docutils literal">iterparse()</tt> could crash on long XML files</li>
+<li>Creating documents no longer copies the parser for later URL resolving. For
+performance reasons, only a reference is kept. Resolver updates on the
+parser will now be reflected by documents that were parsed before the
+change. Although this should rarely become visible, it is a behavioral
+change from 1.0.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id400">
+<h1>1.0.4 (2006-09-09)</h1>
+<div class="section" id="id401">
+<h2>Features added</h2>
+<ul class="simple">
+<li>List-like <tt class="docutils literal">Element.extend()</tt> method</li>
+</ul>
+</div>
+<div class="section" id="id402">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in tail handling in <tt class="docutils literal">Element.replace()</tt></li>
+</ul>
+</div>
+</div>
+<div class="section" id="id403">
+<h1>1.0.3 (2006-08-08)</h1>
+<div class="section" id="id404">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Element.replace(old, new) method to replace a subelement by another one</li>
+</ul>
+</div>
+<div class="section" id="id405">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when mixing elements from XSLT results into other trees</li>
+<li>Copying/deepcopying did not work for ElementTree objects</li>
+<li>Setting an attribute to a non-string value did not raise an exception</li>
+<li>Element.remove() deleted the tail text from the removed Element</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id406">
+<h1>1.0.2 (2006-06-27)</h1>
+<div class="section" id="id407">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for setting a custom default Element class as opposed to namespace
+specific classes (which still override the default class)</li>
+</ul>
+</div>
+<div class="section" id="id408">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Rare exceptions in Python list functions were not handled</li>
+<li>Parsing accepted unicode strings with XML encoding declaration in certain
+cases</li>
+<li>Parsing 8-bit encoded strings from StringIO objects raised an exception</li>
+<li>Module function <tt class="docutils literal">initThread()</tt> was removed - useless (and never worked)</li>
+<li>XSLT and parser exception messages include the error line number</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id409">
+<h1>1.0.1 (2006-06-09)</h1>
+<div class="section" id="id410">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Repeated calls to Element.attrib now efficiently return the same instance</li>
+</ul>
+</div>
+<div class="section" id="id411">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Document deallocation could crash in certain garbage collection scenarios</li>
+<li>Extension function calls in XSLT variable declarations could break the
+stylesheet and crash on repeated calls</li>
+<li>Deep copying Elements could lose namespaces declared in parents</li>
+<li>Deep copying Elements did not copy tail</li>
+<li>Parsing file(-like) objects failed to load external entities</li>
+<li>Parsing 8-bit strings from file(-like) objects raised an exception</li>
+<li>xsl:include failed when the stylesheet was parsed from a file-like object</li>
+<li>lxml.sax.ElementTreeProducer did not call startDocument() / endDocument()</li>
+<li>MSVC compiler complained about long strings (supports only 2048 bytes)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id412">
+<h1>1.0 (2006-06-01)</h1>
+<div class="section" id="id413">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Element.getiterator() and the findall() methods support finding arbitrary
+elements from a namespace (pattern <tt class="docutils literal">{namespace}*</tt>)</li>
+<li>Another speedup in tree iteration code</li>
+<li>General speedup of Python Element object creation and deallocation</li>
+<li>Writing C14N no longer serializes in memory (reduced memory footprint)</li>
+<li>PyErrorLog for error logging through the Python <tt class="docutils literal">logging</tt> module</li>
+<li><tt class="docutils literal">Element.getroottree()</tt> returns an ElementTree for the root node of the
+document that contains the element.</li>
+<li>ElementTree.getpath(element) returns a simple, absolute XPath expression to
+find the element in the tree structure</li>
+<li>Error logs have a <tt class="docutils literal">last_error</tt> attribute for convenience</li>
+<li>Comment texts can be changed through the API</li>
+<li>Formatted output via <tt class="docutils literal">pretty_print</tt> keyword in serialization functions</li>
+<li>XSLT can block access to file system and network via <tt class="docutils literal">XSLTAccessControl</tt></li>
+<li>ElementTree.write() no longer serializes in memory (reduced memory
+footprint)</li>
+<li>Speedup of Element.findall(tag) and Element.getiterator(tag)</li>
+<li>Support for writing the XML representation of Elements and ElementTrees to
+Python unicode strings via <tt class="docutils literal">etree.tounicode()</tt></li>
+<li>Support for writing XSLT results to Python unicode strings via <tt class="docutils literal">unicode()</tt></li>
+<li>Parsing a unicode string no longer copies the string (reduced memory
+footprint)</li>
+<li>Parsing file-like objects reads chunks rather than the whole file (reduced
+memory footprint)</li>
+<li>Parsing StringIO objects from the start avoids copying the string (reduced
+memory footprint)</li>
+<li>Read-only 'docinfo' attribute in ElementTree class holds DOCTYPE
+information, original encoding and XML version as seen by the parser</li>
+<li>etree module can be compiled without libxslt by commenting out the line
+<tt class="docutils literal">include "xslt.pxi"</tt> near the end of the etree.pyx source file</li>
+<li>Better error messages in parser exceptions</li>
+<li>Error reporting also works in XSLT</li>
+<li>Support for custom document loaders (URI resolvers) in parsers and XSLT,
+resolvers are registered at parser level</li>
+<li>Implementation of exslt:regexp for XSLT based on the Python 're' module,
+enabled by default, can be switched off with 'regexp=False' keyword argument</li>
+<li>Support for exslt extensions (libexslt) and libxslt extra functions
+(node-set, document, write, output)</li>
+<li>Substantial speedup in XPath.evaluate()</li>
+<li>HTMLParser for parsing (broken) HTML</li>
+<li>XMLDTDID function parses XML into tuple (root node, ID dict) based on xml:id
+implementation of libxml2 (as opposed to ET compatible XMLID)</li>
+</ul>
+</div>
+<div class="section" id="id414">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory leak in Element.__setitem__</li>
+<li>Memory leak in Element.attrib.items() and Element.attrib.values()</li>
+<li>Memory leak in XPath extension functions</li>
+<li>Memory leak in unicode related setup code</li>
+<li>Element now raises ValueError on empty tag names</li>
+<li>Namespace fixing after moving elements between documents could fail if the
+source document was freed too early</li>
+<li>Setting namespace-less tag names on namespaced elements ('{ns}t' -> 't')
+didn't reset the namespace</li>
+<li>Unknown constants from newer libxml2 versions could raise exceptions in the
+error handlers</li>
+<li>lxml.etree compiles much faster</li>
+<li>On libxml2 <= 2.6.22, parsing strings with encoding declaration could fail
+in certain cases</li>
+<li>Document reference in ElementTree objects was not updated when the root
+element was moved to a different document</li>
+<li>Running absolute XPath expressions on an Element now evaluates against the
+root tree</li>
+<li>Evaluating absolute XPath expressions (<tt class="docutils literal">/*</tt>) on an ElementTree could fail</li>
+<li>Crashes when calling XSLT, RelaxNG, etc. with uninitialized ElementTree
+objects</li>
+<li>Removed public function <tt class="docutils literal">initThreadLogging()</tt>, replaced by more general
+<tt class="docutils literal">initThread()</tt> which fixes a number of setup problems in threads</li>
+<li>Memory leak when using iconv encoders in tostring/write</li>
+<li>Deep copying Elements and ElementTrees maintains the document information</li>
+<li>Serialization functions raise LookupError for unknown encodings</li>
+<li>Memory deallocation crash resulting from deep copying elements</li>
+<li>Some ElementTree methods could crash if the root node was not initialized
+(neither file nor element passed to the constructor)</li>
+<li>Element/SubElement failed to set attribute namespaces from passed <tt class="docutils literal">attrib</tt>
+dictionary</li>
+<li><tt class="docutils literal">tostring()</tt> adds an XML declaration for non-ASCII encodings</li>
+<li><tt class="docutils literal">tostring()</tt> failed to serialize encodings that contain 0-bytes</li>
+<li>ElementTree.xpath() and XPathDocumentEvaluator were not using the
+ElementTree root node as reference point</li>
+<li>Calling <tt class="docutils literal"><span class="pre">document('')</span></tt> in XSLT failed to return the stylesheet</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id415">
+<h1>0.9.2 (2006-05-10)</h1>
+<div class="section" id="id416">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Speedup for Element.makeelement(): the new element reuses the original
+libxml2 document instead of creating a new empty one</li>
+<li>Speedup for reversed() iteration over element children (Py2.4+ only)</li>
+<li>ElementTree compatible QName class</li>
+<li>RelaxNG and XMLSchema accept any Element, not only ElementTrees</li>
+</ul>
+</div>
+<div class="section" id="id417">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>str(xslt_result) was broken for XSLT output other than UTF-8</li>
+<li>Memory leak if write_c14n fails to write the file after conversion</li>
+<li>Crash in XMLSchema and RelaxNG when passing non-schema documents</li>
+<li>Memory leak in RelaxNG() when RelaxNGParseError is raised</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id418">
+<h1>0.9.1 (2006-03-30)</h1>
+<div class="section" id="id419">
+<h2>Features added</h2>
+<ul class="simple">
+<li>lxml.sax.ElementTreeContentHandler checks closing elements and raises
+SaxError on mismatch</li>
+<li>lxml.sax.ElementTreeContentHandler supports namespace-less SAX events
+(startElement, endElement) and defaults to empty attributes (keyword
+argument)</li>
+<li>Speedup for repeatedly accessing element tag names</li>
+<li>Minor API performance improvements</li>
+</ul>
+</div>
+<div class="section" id="id420">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory deallocation bug when using XSLT output method "html"</li>
+<li>sax.py was handling UTF-8 encoded tag names where it shouldn't</li>
+<li>lxml.tests package will no longer be installed (is still in source tar)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id421">
+<h1>0.9 (2006-03-20)</h1>
+<div class="section" id="id422">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Error logging API for libxml2 error messages</li>
+<li>Various performance improvements</li>
+<li>Benchmark script for lxml, ElementTree and cElementTree</li>
+<li>Support for registering extension functions through new FunctionNamespace
+class (see doc/extensions.txt)</li>
+<li>ETXPath class for XPath expressions in ElementTree notation ('//{ns}tag')</li>
+<li>Support for variables in XPath expressions (also in XPath class)</li>
+<li>XPath class for compiled XPath expressions</li>
+<li>XMLID module level function (ElementTree compatible)</li>
+<li>XMLParser API for customized libxml2 parser configuration</li>
+<li>Support for custom Element classes through new Namespace API (see
+doc/namespace_extensions.txt)</li>
+<li>Common exception base class LxmlError for module exceptions</li>
+<li>real iterator support in iter(Element), Element.getiterator()</li>
+<li>XSLT objects are callable, result trees support str()</li>
+<li>Added MANIFEST.in for easier creation of RPM files.</li>
+<li>'getparent' method on elements allows navigation to an element's
+parent element.</li>
+<li>Python core compatible SAX tree builder and SAX event generator. See
+doc/sax.txt for more information.</li>
+</ul>
+</div>
+<div class="section" id="id423">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Segfaults and memory leaks in various API functions of Element</li>
+<li>Segfault in XSLT.tostring()</li>
+<li>ElementTree objects no longer interfere, Elements can be root of different
+ElementTrees at the same time</li>
+<li>document('') works in XSLT documents read from files (in-memory documents
+cannot support this due to libxslt deficiencies)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id424">
+<h1>0.8 (2005-11-03)</h1>
+<div class="section" id="id425">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for copy.deepcopy() on elements. copy.copy() works also, but
+does the same thing, and does <em>not</em> create a shallow copy, as that
+makes no sense in the context of libxml2 trees. This means a
+potential incompatibility with ElementTree, but there's more chance
+that it works than if copy.copy() isn't supported at all.</li>
+<li>Increased compatibility with (c)ElementTree; .parse() on ElementTree is
+supported and parsing of gzipped XML files works.</li>
+<li>implemented index() on elements, allowing one to find the index of a
+SubElement.</li>
+</ul>
+</div>
+<div class="section" id="id426">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Use xslt-config instead of xml2-config to find out libxml2
+directories to take into account a case where libxslt is installed
+in a different directory than libxslt.</li>
+<li>Eliminate crash condition in iteration when text nodes are changed.</li>
+<li>Passing 'None' to tostring() does not result in a segfault anymore,
+but an AssertionError.</li>
+<li>Some test fixes for Windows.</li>
+<li>Raise XMLSyntaxError and XPathSyntaxError instead of plain python
+syntax errors. This should be less confusing.</li>
+<li>Fixed error with uncaught exception in Pyrex code.</li>
+<li>Calling lxml.etree.fromstring('') throws XMLSyntaxError instead of a
+segfault.</li>
+<li>has_key() works on attrib. 'in' tests also work correctly on attrib.</li>
+<li>INSTALL.txt was saying 2.2.16 instead of 2.6.16 as a supported
+libxml2 version, as it should.</li>
+<li>Passing a UTF-8 encoded string to the XML() function would fail;
+fixed.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id427">
+<h1>0.7 (2005-06-15)</h1>
+<div class="section" id="id428">
+<h2>Features added</h2>
+<ul class="simple">
+<li>parameters (XPath expressions) can be passed to XSLT using keyword
+parameters.</li>
+<li>Simple XInclude support. Calling the xinclude() method on a tree
+will process any XInclude statements in the document.</li>
+<li>XMLSchema support. Use the XMLSchema class or the convenience
+xmlschema() method on a tree to do XML Schema (XSD) validation.</li>
+<li>Added convenience xslt() method on tree. This is less efficient
+than the XSLT object, but makes it easier to write quick code.</li>
+<li>Added convenience relaxng() method on tree. This is less efficient
+than the RelaxNG object, but makes it easier to write quick code.</li>
+<li>Make it possible to use XPathEvaluator with elements as well. The
+XPathEvaluator in this case will retain the element so multiple
+XPath queries can be made against one element efficiently. This
+replaces the second argument to the .evaluate() method that existed
+previously.</li>
+<li>Allow registerNamespace() to be called on an XPathEvaluator, after
+creation, to add additional namespaces. Also allow registerNamespaces(),
+which does the same for a namespace dictionary.</li>
+<li>Add 'prefix' attribute to element to be able to read prefix information.
+This is entirely read-only.</li>
+<li>It is possible to supply an extra nsmap keyword parameter to
+the Element() and SubElement() constructors, which supplies a
+prefix to namespace URI mapping. This will create namespace
+prefix declarations on these elements and these prefixes will show up
+in XML serialization.</li>
+</ul>
+</div>
+<div class="section" id="id429">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Killed yet another memory management related bug: trees created
+using newDoc would not get a libxml2-level dictionary, which caused
+problems when deallocating these documents later if they contained a
+node that came from a document with a dictionary.</li>
+<li>Moving namespaced elements between documents was problematic as
+references to the original document would remain. This has been fixed
+by applying xmlReconciliateNs() after each move operation.</li>
+<li>Can pass None to 'dump()' without segfaults.</li>
+<li>tostring() works properly for non-root elements as well.</li>
+<li>Cleaned out the tostring() method so it should handle encoding
+correctly.</li>
+<li>Cleaned out the ElementTree.write() method so it should handle encoding
+correctly. Writing directly to a file should also be faster, as there is no
+need to go through a Python string in that case. Made sure the test cases
+test both serializing to StringIO as well as serializing to a real file.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id430">
+<h1>0.6 (2005-05-14)</h1>
+<div class="section" id="id431">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Changed setup.py so that library_dirs is also guessed. This should
+help with compilation on the Mac OS X platform, where otherwise the
+wrong library (shipping with the OS) could be picked up.</li>
+<li>Tweaked setup.py so that it picks up the version from version.txt.</li>
+</ul>
+</div>
+<div class="section" id="id432">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Do the right thing when handling namespaced attributes.</li>
+<li>fix bug where tostring() moved nodes into new documents. tostring()
+had very nasty side-effects before this fix, sorry!</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id433">
+<h1>0.5.1 (2005-04-09)</h1>
+<ul class="simple">
+<li>Python 2.2 compatibility fixes.</li>
+<li>unicode fixes in Element() and Comment() as well as XML(); unicode
+input wasn't properly being UTF-8 encoded.</li>
+</ul>
+</div>
+<div class="section" id="id434">
+<h1>0.5 (2005-04-08)</h1>
+<p>Initial public release.</p>
+</div>
+</div>
+<div class="footer">
+<hr class="footer" />
+Generated on: 2021-11-02.
+
+</div>
+</body>
+</html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>ElementTree compatibility of lxml.etree</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="elementtree-compatibility-of-lxml-etree">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu current" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">ElementTree compatibility of lxml.etree</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu current" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">ElementTree compatibility of lxml.etree</h1>
<p>A lot of care has been taken to ensure compatibility between etree and
ElementTree. Nonetheless, some differences and incompatibilities exist:</p>
not. This means that a comment text "text" that ElementTree serializes as
"<!-- text -->" will become "<!--text-->" in lxml.</p>
</li>
-<li><p class="first">When the string '*' is used as tag filter in the <tt class="docutils literal">Element.getiterator()</tt>
-method, ElementTree returns all elements in the tree, including comments and
-processing instructions. lxml.etree only returns real Elements, i.e. tree
-nodes that have a string tag name. Without a filter, both libraries iterate
-over all nodes.</p>
+<li><p class="first">When the string <tt class="docutils literal">'*'</tt> is used as tag filter in the <tt class="docutils literal">Element.iter()</tt> and
+<tt class="docutils literal"><span class="pre">.find*()</span></tt> methods, ElementTree returns all elements in the tree, including
+comments and processing instructions. lxml.etree only returns real Elements,
+i.e. tree nodes that have a string tag name. Without a filter, both libraries
+iterate over all nodes.</p>
<p>Note that currently only lxml.etree supports passing the <tt class="docutils literal">Element</tt> factory
function as filter to select only Elements. Both libraries support passing
the <tt class="docutils literal">Comment</tt> and <tt class="docutils literal">ProcessingInstruction</tt> factories to select the
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Credits</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="credits">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu current" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Credits</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu current" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Credits</h1>
<div class="section" id="main-contributors">
<h1>Main contributors</h1>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>lxml.cssselect</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="lxml-cssselect">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu current" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">lxml.cssselect</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu current" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">lxml.cssselect</h1>
<p>lxml supports a number of interesting languages for tree traversal and element
selection. The most important is obviously <a class="reference external" href="xpathxslt.html#xpath">XPath</a>, but there is also
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Using custom Element classes in lxml</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="using-custom-element-classes-in-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu current" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Using custom Element classes in lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu current" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Using custom Element classes in lxml</h1>
<p>lxml has very sophisticated support for custom Element classes. You
can provide your own classes for Elements and have lxml use them by
does not know about your specialised parser and creates a new document that
deploys the default parser:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"root"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
<span class="go">False</span>
</pre></div>
<p>You should therefore avoid using this factory function in code that
uses custom classes. The <tt class="docutils literal">makeelement()</tt> method of parsers provides
a simple replacement:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">el</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">makeelement</span><span class="p">(</span><span class="s2">"root"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
<span class="go">True</span>
</pre></div>
<p>If you use a parser at the module level, you can easily redirect a module
<p>While the <tt class="docutils literal">XML()</tt> and <tt class="docutils literal">HTML()</tt> factories also depend on the default
parser, you can pass them a different parser as second argument:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<test/>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
<span class="go">False</span>
<span class="gp">>>> </span><span class="n">element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<test/>"</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
<span class="go">True</span>
</pre></div>
<p>Whenever you create a document with a parser, it will inherit the lookup
scheme and all subsequent element instantiations for this document will use
it:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s2">"<test/>"</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="s2">"subel"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
<span class="go">True</span>
</pre></div>
<p>For testing code in the Python interpreter and for small projects, you
the constructor. While it accepts classes for <tt class="docutils literal">element</tt>, <tt class="docutils literal">comment</tt> and
<tt class="docutils literal">pi</tt> nodes, most use cases will only override the element class:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">el</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">makeelement</span><span class="p">(</span><span class="s2">"myelement"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
<span class="go">False</span>
<span class="gp">>>> </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementDefaultClassLookup</span><span class="p">(</span><span class="n">element</span><span class="o">=</span><span class="n">honk</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">el</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">makeelement</span><span class="p">(</span><span class="s2">"myelement"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">el</span><span class="o">.</span><span class="n">honking</span>
<span class="go">False</span>
<span class="gp">... </span> <span class="s1">'<root honking="true"><!--comment--></root>'</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">honking</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">comment</span>
</pre></div>
</div>
<span class="gp">... </span> <span class="s1">'<root honking="true"><!--comment--></root>'</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">honking</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">comment</span>
</pre></div>
</div>
<span class="gp">... </span> <span class="k">if</span> <span class="n">node_type</span> <span class="o">==</span> <span class="s1">'element'</span><span class="p">:</span>
<span class="gp">... </span> <span class="k">return</span> <span class="n">honk</span> <span class="c1"># be a bit more selective here ...</span>
<span class="gp">... </span> <span class="k">else</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">return</span> <span class="bp">None</span> <span class="c1"># pass on to (default) fallback</span>
+<span class="gp">... </span> <span class="k">return</span> <span class="kc">None</span> <span class="c1"># pass on to (default) fallback</span>
<span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">MyLookup</span><span class="p">())</span>
<span class="gp">... </span> <span class="s1">'<root honking="true"><!--comment--></root>'</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">honking</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">comment</span>
</pre></div>
<p>The <tt class="docutils literal">.lookup()</tt> method must return either None (which triggers the
<span class="gp">>>> </span><span class="n">el</span> <span class="o">=</span> <span class="n">hale</span><span class="p">(</span> <span class="s2">"some "</span><span class="p">,</span> <span class="n">honk</span><span class="p">(</span><span class="n">honking</span> <span class="o">=</span> <span class="s1">'true'</span><span class="p">),</span> <span class="n">bopp</span><span class="p">,</span> <span class="s2">" text"</span> <span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'unicode'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'unicode'</span><span class="p">))</span>
<span class="go"><hale>some <honk honking="true"/><bopp/> text</hale></span>
</pre></div>
</div>
lxml:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">xml</span> <span class="o">=</span> <span class="s1">'<honk xmlns="http://hui.de/honk" honking="true"/>'</span>
<span class="gp">>>> </span><span class="n">honk_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="n">xml</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
<span class="go">True</span>
</pre></div>
<p>The same works when creating elements by hand:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">honk_element</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">makeelement</span><span class="p">(</span><span class="s1">'{http://hui.de/honk}honk'</span><span class="p">,</span>
<span class="gp">... </span> <span class="n">honking</span><span class="o">=</span><span class="s1">'true'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
<span class="go">True</span>
</pre></div>
<p>Essentially, what this allows you to do, is to give Elements a custom API
<span class="gp">... </span> <span class="s1">'<bla/><!--comment-->'</span>
<span class="gp">... </span> <span class="s1">'</honk>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">honk_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="n">xml</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<span class="gr">AttributeError</span>: <span class="n">'lxml.etree._Element' object has no attribute 'honking'</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">comment</span>
</pre></div>
<p>You can therefore provide one implementation per element name in each
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">class</span> <span class="nc">HonkNSElement</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ElementBase</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">honk</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">return</span> <span class="s2">"HONK"</span>
-<span class="gp">>>> </span><span class="n">namespace</span><span class="p">[</span><span class="bp">None</span><span class="p">]</span> <span class="o">=</span> <span class="n">HonkNSElement</span> <span class="c1"># default Element for namespace</span>
+<span class="gp">>>> </span><span class="n">namespace</span><span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="n">HonkNSElement</span> <span class="c1"># default Element for namespace</span>
<span class="gp">>>> </span><span class="k">class</span> <span class="nc">HonkElement</span><span class="p">(</span><span class="n">HonkNSElement</span><span class="p">):</span>
<span class="gp">... </span> <span class="nd">@property</span>
<span class="gp">... </span> <span class="s1">'</honk>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">honk_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">xml</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">honk_element</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">honk_element</span><span class="p">))</span>
<span class="go"><class 'HonkElement'></span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
<span class="go"><class 'HonkNSElement'></span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honk</span><span class="p">())</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honk</span><span class="p">())</span>
<span class="go">HONK</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">honk</span><span class="p">())</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">honk</span><span class="p">())</span>
<span class="go">HONK</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<span class="gr">AttributeError</span>: <span class="n">'HonkNSElement' object has no attribute 'honking'</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> <span class="c1"># uses fallback for non-elements</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> <span class="c1"># uses fallback for non-elements</span>
<span class="go">comment</span>
</pre></div>
<p>Since lxml 4.1, the registration is more conveniently done with
a name (or <tt class="docutils literal">None</tt>) as argument and can then be used as decorator.</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">honk_elements</span> <span class="o">=</span> <span class="n">lookup</span><span class="o">.</span><span class="n">get_namespace</span><span class="p">(</span><span class="s1">'http://hui.de/honk'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="nd">@honk_elements</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nd">@honk_elements</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
<span class="gp">... </span><span class="k">class</span> <span class="nc">HonkNSElement</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ElementBase</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">honk</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">return</span> <span class="s2">"HONK"</span>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>BeautifulSoup Parser</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="beautifulsoup-parser">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu current" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">BeautifulSoup Parser</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu current" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">BeautifulSoup Parser</h1>
<p><a class="reference external" href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a> is a Python package for working with real-world and broken HTML,
just like <a class="reference external" href="lxmlhtml.html">lxml.html</a>. As of version 4.x, it can use
</pre></div>
<p>To see what we have here, you can serialise it:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">lxml.etree</span> <span class="kn">import</span> <span class="n">tostring</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
<span class="go"><html></span>
<span class="go"> <meta/></span>
<span class="go"> <head></span>
<span class="gp">... </span> <span class="kn">from</span> <span class="nn">BeautifulSoup</span> <span class="kn">import</span> <span class="n">UnicodeDammit</span> <span class="c1"># BeautifulSoup 3</span>
<span class="gp">...</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">decode_html</span><span class="p">(</span><span class="n">html_string</span><span class="p">):</span>
-<span class="gp">... </span> <span class="n">converted</span> <span class="o">=</span> <span class="n">UnicodeDammit</span><span class="p">(</span><span class="n">html_string</span><span class="p">,</span> <span class="n">isHTML</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="gp">... </span> <span class="n">converted</span> <span class="o">=</span> <span class="n">UnicodeDammit</span><span class="p">(</span><span class="n">html_string</span><span class="p">,</span> <span class="n">isHTML</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">if</span> <span class="ow">not</span> <span class="n">converted</span><span class="o">.</span><span class="n">unicode</span><span class="p">:</span>
<span class="gp">... </span> <span class="k">raise</span> <span class="ne">UnicodeDecodeError</span><span class="p">(</span>
<span class="gp">... </span> <span class="s2">"Failed to detect encoding, tried [</span><span class="si">%s</span><span class="s2">]"</span><span class="p">,</span>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Python extensions for XPath and XSLT</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="python-extensions-for-xpath-and-xslt">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu current" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Python extensions for XPath and XSLT</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu current" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Python extensions for XPath and XSLT</h1>
<p>This document describes how to use Python extension functions in XPath
and XSLT like this:</p>
is done using the FunctionNamespace class. For simplicity, we choose
the empty namespace (None):</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
-<span class="gp">>>> </span><span class="n">ns</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">FunctionNamespace</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">ns</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">FunctionNamespace</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">ns</span><span class="p">[</span><span class="s1">'hello'</span><span class="p">]</span> <span class="o">=</span> <span class="n">hello</span>
<span class="gp">>>> </span><span class="n">ns</span><span class="p">[</span><span class="s1">'countargs'</span><span class="p">]</span> <span class="o">=</span> <span class="n">loadsofargs</span>
</pre></div>
<span class="gp">>>> </span><span class="n">doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementTree</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
</pre></div>
<p>Done. Now we can have XPath expressions call our new function:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s2">"hello('Dr. Falken')"</span><span class="p">))</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s2">"hello('Dr. Falken')"</span><span class="p">))</span>
<span class="go">Hello Dr. Falken</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s1">'hello(local-name(*))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s1">'hello(local-name(*))'</span><span class="p">))</span>
<span class="go">Hello b</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s1">'hello(string(b))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s1">'hello(string(b))'</span><span class="p">))</span>
<span class="go">Hello Haegar</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s1">'countargs(., b, ./*)'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s1">'countargs(., b, ./*)'</span><span class="p">))</span>
<span class="go">Got 3 arguments.</span>
</pre></div>
<p>Note how we call both a Python function (<tt class="docutils literal">hello()</tt>) and an XPath built-in
<span class="gp">>>> </span><span class="n">ns</span><span class="p">[</span><span class="s1">'hello'</span><span class="p">]</span> <span class="o">=</span> <span class="n">hello</span>
<span class="gp">>>> </span><span class="n">prefixmap</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'f'</span> <span class="p">:</span> <span class="s1">'http://mydomain.org/myfunctions'</span><span class="p">}</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s1">'f:hello(local-name(*))'</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="n">prefixmap</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s1">'f:hello(local-name(*))'</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="n">prefixmap</span><span class="p">))</span>
<span class="go">Hello b</span>
</pre></div>
</div>
<span class="gp">>>> </span><span class="n">ns</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="s1">'es'</span>
<span class="gp">>>> </span><span class="n">ns</span><span class="p">[</span><span class="s1">'hello'</span><span class="p">]</span> <span class="o">=</span> <span class="n">ola</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s1">'es:hello(local-name(*))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s1">'es:hello(local-name(*))'</span><span class="p">))</span>
<span class="go">Ola b</span>
</pre></div>
<p>This is a global assignment, so take care not to assign the same prefix to
<tt class="docutils literal">context_node</tt>. The context node is the Element where the current function
is called:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">def</span> <span class="nf">print_tag</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">nodes</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">context_node</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="p">[</span> <span class="n">n</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">nodes</span> <span class="p">]))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">context_node</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="p">[</span> <span class="n">n</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">nodes</span> <span class="p">]))</span>
<span class="gp">>>> </span><span class="n">ns</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">FunctionNamespace</span><span class="p">(</span><span class="s1">'http://mydomain.org/printtag'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">ns</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="s2">"pt"</span>
allows functions to keep state:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">def</span> <span class="nf">print_context</span><span class="p">(</span><span class="n">context</span><span class="p">):</span>
<span class="gp">... </span> <span class="n">context</span><span class="o">.</span><span class="n">eval_context</span><span class="p">[</span><span class="n">context</span><span class="o">.</span><span class="n">context_node</span><span class="o">.</span><span class="n">tag</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"done"</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">eval_context</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">eval_context</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
<span class="gp">>>> </span><span class="n">ns</span><span class="p">[</span><span class="s2">"print_context"</span><span class="p">]</span> <span class="o">=</span> <span class="n">print_context</span>
<span class="gp">>>> </span><span class="n">ignore</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s2">"//*[pt:print_context()]"</span><span class="p">)</span>
<p>Extension functions work for all ways of evaluating XPath expressions and for
XSL transformations:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'es:hello(local-name(/a))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'es:hello(local-name(/a))'</span><span class="p">))</span>
<span class="go">Ola a</span>
<span class="gp">>>> </span><span class="n">namespaces</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'f'</span> <span class="p">:</span> <span class="s1">'http://mydomain.org/myfunctions'</span><span class="p">}</span>
<span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="n">namespaces</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'f:hello(local-name(/a))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'f:hello(local-name(/a))'</span><span class="p">))</span>
<span class="go">Hello a</span>
<span class="gp">>>> </span><span class="n">xslt</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s1">'''</span>
<span class="gp">... </span><span class="s1"> </template></span>
<span class="gp">... </span><span class="s1"> </stylesheet></span>
<span class="gp">... </span><span class="s1">'''</span><span class="p">))</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">xslt</span><span class="p">(</span><span class="n">doc</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">xslt</span><span class="p">(</span><span class="n">doc</span><span class="p">))</span>
<span class="go">Ola Haegar</span>
</pre></div>
<p>It is also possible to register namespaces with a single evaluator after its
<span class="gp">>>> </span><span class="n">namespaces</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'l'</span> <span class="p">:</span> <span class="s1">'local-ns'</span><span class="p">}</span>
<span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="n">namespaces</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'l:local-hello(string(b))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'l:local-hello(string(b))'</span><span class="p">))</span>
<span class="go">Hello Haegar</span>
</pre></div>
<p>For larger numbers of extension functions, you can define classes or modules
<span class="gp">>>> </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span> <span class="n">ext_module</span><span class="p">,</span> <span class="n">functions</span><span class="p">,</span> <span class="n">ns</span><span class="o">=</span><span class="s1">'local-ns'</span> <span class="p">)</span>
<span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="n">namespaces</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'l:function1(string(b))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'l:function1(string(b))'</span><span class="p">))</span>
<span class="go">1Haegar</span>
</pre></div>
<p>The optional second argument to <tt class="docutils literal">Extension</tt> can either be a
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">functions</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'function1'</span><span class="p">,</span> <span class="s1">'function2'</span><span class="p">,</span> <span class="s1">'function3'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span> <span class="n">ext_module</span><span class="p">,</span> <span class="n">functions</span> <span class="p">)</span>
<span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'function1(function2(function3(string(b))))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'function1(function2(function3(string(b))))'</span><span class="p">))</span>
<span class="go">123Haegar</span>
-<span class="gp">>>> </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span> <span class="n">ext_module</span><span class="p">,</span> <span class="n">functions</span><span class="p">,</span> <span class="n">ns</span><span class="o">=</span><span class="bp">None</span> <span class="p">)</span>
+<span class="gp">>>> </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span> <span class="n">ext_module</span><span class="p">,</span> <span class="n">functions</span><span class="p">,</span> <span class="n">ns</span><span class="o">=</span><span class="kc">None</span> <span class="p">)</span>
<span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'function1(function2(function3(string(b))))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'function1(function2(function3(string(b))))'</span><span class="p">))</span>
<span class="go">123Haegar</span>
<span class="gp">>>> </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span><span class="n">ext_module</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'function1(function2(function3(string(b))))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'function1(function2(function3(string(b))))'</span><span class="p">))</span>
<span class="go">123Haegar</span>
<span class="gp">>>> </span><span class="n">functions</span> <span class="o">=</span> <span class="p">{</span>
<span class="gp">... </span> <span class="p">}</span>
<span class="gp">>>> </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span><span class="n">ext_module</span><span class="p">,</span> <span class="n">functions</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'function1(function2(function3(string(b))))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'function1(function2(function3(string(b))))'</span><span class="p">))</span>
<span class="go">123Haegar</span>
</pre></div>
<p>For convenience, you can also pass a sequence of extensions:</p>
<span class="gp">>>> </span><span class="n">extensions2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span><span class="n">ext_module</span><span class="p">,</span> <span class="n">ns</span><span class="o">=</span><span class="s1">'local-ns'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="p">[</span><span class="n">extensions1</span><span class="p">,</span> <span class="n">extensions2</span><span class="p">],</span>
<span class="gp">... </span> <span class="n">namespaces</span><span class="o">=</span><span class="n">namespaces</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'function1(l:function2(function3(string(b))))'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">(</span><span class="s1">'function1(l:function2(function3(string(b))))'</span><span class="p">))</span>
<span class="go">123Haegar</span>
</pre></div>
</div>
<span class="gp">>>> </span><span class="k">def</span> <span class="nf">returnsInteger</span><span class="p">(</span><span class="n">_</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">return</span> <span class="mi">1</span>
<span class="gp">>>> </span><span class="k">def</span> <span class="nf">returnsBool</span><span class="p">(</span><span class="n">_</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">return</span> <span class="bp">True</span>
+<span class="gp">... </span> <span class="k">return</span> <span class="kc">True</span>
<span class="gp">>>> </span><span class="k">def</span> <span class="nf">returnFirstNode</span><span class="p">(</span><span class="n">_</span><span class="p">,</span> <span class="n">nodes</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">return</span> <span class="n">nodes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
-<span class="gp">>>> </span><span class="n">ns</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">FunctionNamespace</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">ns</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">FunctionNamespace</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">ns</span><span class="p">[</span><span class="s1">'float'</span><span class="p">]</span> <span class="o">=</span> <span class="n">returnsFloat</span>
<span class="gp">>>> </span><span class="n">ns</span><span class="p">[</span><span class="s1">'int'</span><span class="p">]</span> <span class="o">=</span> <span class="n">returnsInteger</span>
<span class="gp">>>> </span><span class="n">ns</span><span class="p">[</span><span class="s1">'bool'</span><span class="p">]</span> <span class="o">=</span> <span class="n">returnsBool</span>
<span class="gp">>>> </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">r</span> <span class="o">=</span> <span class="n">e</span><span class="p">(</span><span class="s2">"new-node-set()/result"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span> <span class="n">t</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">r</span> <span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span> <span class="n">t</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">r</span> <span class="p">])</span>
<span class="go">['Alpha', 'Beta', 'Gamma', 'Delta']</span>
<span class="gp">>>> </span><span class="n">r</span> <span class="o">=</span> <span class="n">e</span><span class="p">(</span><span class="s2">"new-node-set()"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span> <span class="n">t</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">r</span> <span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span> <span class="n">t</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">r</span> <span class="p">])</span>
<span class="go">['results1', 'results2', 'subresult']</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span> <span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">r</span> <span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span> <span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">r</span> <span class="p">])</span>
<span class="go">[2, 3, 0]</span>
<span class="gp">>>> </span><span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span>
<span class="go">'Alpha'</span>
tail texts will be available in the result. This also means that in the above
example, the <cite>subresult</cite> elements in <cite>results2</cite> and <cite>results3</cite> are no longer
identical within the node-set, they belong to independent trees:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">r</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">r</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="go">subresult - subresult</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">r</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">r</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
<span class="go">False</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">results2</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">())</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">())</span>
<span class="go">None</span>
</pre></div>
<p>This is an implementation detail that you should be aware of, but you should
<p>And then you can implement the element in Python like this:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">class</span> <span class="nc">MyExtElement</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">XSLTExtension</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="n">self_node</span><span class="p">,</span> <span class="n">input_node</span><span class="p">,</span> <span class="n">output_parent</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"Hello from XSLT!"</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Hello from XSLT!"</span><span class="p">)</span>
<span class="gp">... </span> <span class="n">output_parent</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s2">"I did it!"</span>
<span class="gp">... </span> <span class="c1"># just copy own content input to output</span>
<span class="gp">... </span> <span class="n">output_parent</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> <span class="nb">list</span><span class="p">(</span><span class="n">self_node</span><span class="p">)</span> <span class="p">)</span>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>html5lib Parser</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="html5lib-parser">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu current" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">html5lib Parser</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu current" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">html5lib Parser</h1>
<p><a class="reference external" href="http://code.google.com/p/html5lib/">html5lib</a> is a Python package that implements the HTML5 parsing algorithm
which is heavily influenced by current browsers and based on the <a class="reference external" href="http://www.whatwg.org/specs/web-apps/current-work/">WHATWG
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>lxml - Processing XML and HTML with Python</title>
<meta content="lxml - the most feature-rich and easy-to-use library for processing XML and HTML in the Python language" name="description" />
<meta content="Python XML, XML processing, HTML, lxml, simple XML, ElementTree, etree, lxml.etree, objectify, XML parsing, XML validation, XPath, XSLT" name="keywords" />
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu current" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">lxml - XML and HTML with Python</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu current" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">lxml - XML and HTML with Python</h1>
<div class="pagequote line-block">
<div class="line"><a class="reference external" href="https://mailman-mail5.webfaction.com/pipermail/lxml/20080131/019119.html">» lxml takes all the pain out of XML. «</a></div>
<p class="center">Support lxml through <a class="reference external" href="https://github.com/users/scoder/sponsorship">GitHub Sponsors</a></p>
<p class="center">via a <a class="reference external" href="https://tidelift.com/subscription/pkg/pypi-lxml">Tidelift subscription</a></p>
<p class="center">or via PayPal:</p>
-<p class="center"><a class="reference external" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=R56JE3VCPDA9N"><img alt="Donate to the lxml project" src="https://lxml.de/paypal_btn_donateCC_LG.png" style="width: 160px; height: 47px;" /></a></p>
+<p class="center"><a class="reference external image-reference" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=R56JE3VCPDA9N"><img alt="Donate to the lxml project" src="https://lxml.de/paypal_btn_donateCC_LG.png" style="width: 160px; height: 47px;" /></a></p>
<p>Please <a class="reference external" href="http://consulting.behnel.de/">contact Stefan Behnel</a>
for other ways to support the lxml project,
as well as commercial consulting, customisations and trainings on lxml and
fast Python XML processing.</p>
+<p>Note that we are not accepting donations in crypto currencies.
+Much of the development and hosting for lxml is done in a carbon-neutral way
+or with compensated and very low emissions.
+Crypto currencies do not fit into that ambition.</p>
<p><a class="reference external" href="https://travis-ci.org/">Travis-CI</a> and <a class="reference external" href="https://www.appveyor.com/">AppVeyor</a>
support the lxml project with their build and CI servers.
Jetbrains supports the lxml project by donating free licenses of their
</div>
<div class="section" id="documentation">
<h1>Documentation</h1>
-<p>The complete lxml documentation is available for download as <a class="reference external" href="lxmldoc-4.6.3.pdf">PDF
+<p>The complete lxml documentation is available for download as <a class="reference external" href="lxmldoc-4.6.4.pdf">PDF
documentation</a>. The HTML documentation from this web site is part of
the normal <a class="reference external" href="#download">source download</a>.</p>
<ul class="simple">
Index</a> (PyPI). It has the source
that compiles on various platforms. The source distribution is signed
with <a class="reference external" href="pubkey.asc">this key</a>.</p>
-<p>The latest version is <a class="reference external" href="/files/lxml-4.6.3.tgz">lxml 4.6.3</a>, released 2021-03-21
-(<a class="reference external" href="/changes-4.6.3.html">changes for 4.6.3</a>). <a class="reference external" href="#old-versions">Older versions</a>
+<p>The latest version is <a class="reference external" href="/files/lxml-4.6.4.tgz">lxml 4.6.4</a>, released 2021-11-01
+(<a class="reference external" href="/changes-4.6.4.html">changes for 4.6.4</a>). <a class="reference external" href="#old-versions">Older versions</a>
are listed below.</p>
<p>Please take a look at the
<a class="reference external" href="installation.html">installation instructions</a> !</p>
part of the source distribution, so if you want to download the
documentation for offline use, take the source archive and copy the
<tt class="docutils literal">doc/html</tt> directory out of the source tree, or use the
-<a class="reference external" href="lxmldoc-4.6.3.pdf">PDF documentation</a>.</p>
+<a class="reference external" href="lxmldoc-4.6.4.pdf">PDF documentation</a>.</p>
<p>The latest <a class="reference external" href="https://github.com/lxml/lxml/archive/master.zip">installable developer sources</a>
are available from Github. It's also possible to check out
the latest development version of lxml from Github directly, using a command
<a class="reference external" href="http://lxml.de/2.0/">2.0</a>,
<a class="reference external" href="http://lxml.de/1.3/">1.3</a></p>
<ul class="simple">
+<li><a class="reference external" href="/files/lxml-4.6.4.tgz">lxml 4.6.4</a>, released 2021-11-01 (<a class="reference external" href="/changes-4.6.4.html">changes for 4.6.4</a>)</li>
<li><a class="reference external" href="/files/lxml-4.6.3.tgz">lxml 4.6.3</a>, released 2021-03-21 (<a class="reference external" href="/changes-4.6.3.html">changes for 4.6.3</a>)</li>
<li><a class="reference external" href="/files/lxml-4.6.2.tgz">lxml 4.6.2</a>, released 2020-11-26 (<a class="reference external" href="/changes-4.6.2.html">changes for 4.6.2</a>)</li>
<li><a class="reference external" href="/files/lxml-4.6.1.tgz">lxml 4.6.1</a>, released 2020-10-18 (<a class="reference external" href="/changes-4.6.1.html">changes for 4.6.1</a>)</li>
</div><div class="section" id="project-income-report">
<h1>Project income report</h1>
<ul class="simple">
+<li>Total project income in 2020: EUR 6065,86 (506.49 € / month)<ul>
+<li>Tidelift: EUR 4064.77</li>
+<li>Paypal: EUR 1401.09</li>
+<li>other: EUR 600.00</li>
+</ul>
+</li>
<li>Total project income in 2019: EUR 717.52 (59.79 € / month)<ul>
<li>Tidelift: EUR 360.30</li>
<li>Paypal: EUR 157.22</li>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Installing lxml</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="installing-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu current" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Installing lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu current" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Installing lxml</h1>
<div class="contents topic" id="contents">
<p class="topic-title">Contents</p>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Why lxml?</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="why-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu current" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Why lxml?</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu current" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Why lxml?</h1>
<div class="contents topic" id="contents">
<p class="topic-title">Contents</p>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>How to read the source of lxml</title>
<meta name="author" content="Stefan Behnel" />
<meta content="How to read and work on the source code of lxml" name="description" />
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="how-to-read-the-source-of-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu current" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">How to read the source of lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu current" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">How to read the source of lxml</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>lxml.html</title>
<meta name="author" content="Ian Bicking" />
<link rel="stylesheet" href="style.css" type="text/css" />
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="lxml-html">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu current" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">lxml.html</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu current" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">lxml.html</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
<span class="gp">... </span><span class="s1"> </body></html></span>
<span class="gp">... </span><span class="s1">'''</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
<span class="go"><html><body onload="" color="white"><p>Hi !</p></body></html></span>
-<span class="gp">>>> </span><span class="k">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
<span class="go"><html> <body color="white" onload=""> <p>Hi !</p> </body> </html></span>
-<span class="gp">>>> </span><span class="k">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
<span class="go"><html></span>
<span class="go"> <body color="white" onload=""></span>
<span class="go"> <p>Hi !</p></span>
<span class="gp">... </span> <span class="p">)</span>
<span class="gp">... </span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
<span class="go"><html></span>
<span class="go"> <head></span>
<span class="go"> <link href="great.css" rel="stylesheet" type="text/css"></span>
<span class="gp">... </span> <span class="n">name</span><span class="o">=</span><span class="s1">'John Smith'</span><span class="p">,</span>
<span class="gp">... </span> <span class="n">phone</span><span class="o">=</span><span class="s1">'555-555-3949'</span><span class="p">,</span>
<span class="gp">... </span> <span class="n">interest</span><span class="o">=</span><span class="nb">set</span><span class="p">([</span><span class="s1">'cats'</span><span class="p">,</span> <span class="s1">'llamas'</span><span class="p">]))</span>
-<span class="gp">>>> </span><span class="k">print</span> <span class="n">tostring</span><span class="p">(</span><span class="n">form</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span> <span class="n">tostring</span><span class="p">(</span><span class="n">form</span><span class="p">)</span>
<span class="go"><html></span>
<span class="go"> <body></span>
<span class="go"> <form></span>
<p>To remove the all suspicious content from this unparsed document, use the
<tt class="docutils literal">clean_html</tt> function:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">lxml.html.clean</span> <span class="kn">import</span> <span class="n">clean_html</span>
-<span class="gp">>>> </span><span class="k">print</span> <span class="n">clean_html</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span> <span class="n">clean_html</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
<span class="go"><div><style>/* deleted */</style><body></span>
<span class="go"> <a href="">a link</a></span>
which content is removed:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">lxml.html.clean</span> <span class="kn">import</span> <span class="n">Cleaner</span>
-<span class="gp">>>> </span><span class="n">cleaner</span> <span class="o">=</span> <span class="n">Cleaner</span><span class="p">(</span><span class="n">page_structure</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">links</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span> <span class="n">cleaner</span><span class="o">.</span><span class="n">clean_html</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">cleaner</span> <span class="o">=</span> <span class="n">Cleaner</span><span class="p">(</span><span class="n">page_structure</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">links</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span> <span class="n">cleaner</span><span class="o">.</span><span class="n">clean_html</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
<span class="go"><html></span>
<span class="go"> <head></span>
<span class="go"> <link rel="alternate" src="evil-rss" type="text/rss"></span>
<span class="go"> </body></span>
<span class="go"></html></span>
-<span class="gp">>>> </span><span class="n">cleaner</span> <span class="o">=</span> <span class="n">Cleaner</span><span class="p">(</span><span class="n">style</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">links</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">add_nofollow</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
-<span class="gp">... </span> <span class="n">page_structure</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">safe_attrs_only</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">cleaner</span> <span class="o">=</span> <span class="n">Cleaner</span><span class="p">(</span><span class="n">style</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">links</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">add_nofollow</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+<span class="gp">... </span> <span class="n">page_structure</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">safe_attrs_only</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span> <span class="n">cleaner</span><span class="o">.</span><span class="n">clean_html</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span> <span class="n">cleaner</span><span class="o">.</span><span class="n">clean_html</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
<span class="go"><html></span>
<span class="go"> <head></span>
<span class="go"> </head></span>
<span class="gp">>>> </span><span class="n">doc1</span> <span class="o">=</span> <span class="s1">'''<p>Here is some text.</p>'''</span>
<span class="gp">>>> </span><span class="n">doc2</span> <span class="o">=</span> <span class="s1">'''<p>Here is <b>a lot</b> of <i>text</i>.</p>'''</span>
<span class="gp">>>> </span><span class="n">doc3</span> <span class="o">=</span> <span class="s1">'''<p>Here is <b>a little</b> <i>text</i>.</p>'''</span>
-<span class="gp">>>> </span><span class="k">print</span> <span class="n">htmldiff</span><span class="p">(</span><span class="n">doc1</span><span class="p">,</span> <span class="n">doc2</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span> <span class="n">htmldiff</span><span class="p">(</span><span class="n">doc1</span><span class="p">,</span> <span class="n">doc2</span><span class="p">)</span>
<span class="go"><p>Here is <ins><b>a lot</b> of <i>text</i>.</ins> <del>some text.</del> </p></span>
-<span class="gp">>>> </span><span class="k">print</span> <span class="n">html_annotate</span><span class="p">([(</span><span class="n">doc1</span><span class="p">,</span> <span class="s1">'author1'</span><span class="p">),</span> <span class="p">(</span><span class="n">doc2</span><span class="p">,</span> <span class="s1">'author2'</span><span class="p">),</span>
+<span class="gp">>>> </span><span class="nb">print</span> <span class="n">html_annotate</span><span class="p">([(</span><span class="n">doc1</span><span class="p">,</span> <span class="s1">'author1'</span><span class="p">),</span> <span class="p">(</span><span class="n">doc2</span><span class="p">,</span> <span class="s1">'author2'</span><span class="p">),</span>
<span class="gp">... </span> <span class="p">(</span><span class="n">doc3</span><span class="p">,</span> <span class="s1">'author3'</span><span class="p">)])</span>
<span class="go"><p><span title="author1">Here is</span></span>
<span class="go"> <b><span title="author2">a</span></span>
example, looks like:</p>
<div class="syntax"><pre><span></span><span class="k">def</span> <span class="nf">default_markup</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">version</span><span class="p">):</span>
<span class="k">return</span> <span class="s1">'<span title="</span><span class="si">%s</span><span class="s1">"></span><span class="si">%s</span><span class="s1"></span>'</span> <span class="o">%</span> <span class="p">(</span>
- <span class="n">cgi</span><span class="o">.</span><span class="n">escape</span><span class="p">(</span><span class="nb">unicode</span><span class="p">(</span><span class="n">version</span><span class="p">),</span> <span class="mi">1</span><span class="p">),</span> <span class="n">text</span><span class="p">)</span>
+ <span class="n">cgi</span><span class="o">.</span><span class="n">escape</span><span class="p">(</span><span class="n">unicode</span><span class="p">(</span><span class="n">version</span><span class="p">),</span> <span class="mi">1</span><span class="p">),</span> <span class="n">text</span><span class="p">)</span>
</pre></div>
</div>
<div class="section" id="examples">
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>lxml.objectify</title>
<meta name="authors" content="Stefan Behnel Holger Joukl" />
<link rel="stylesheet" href="style.css" type="text/css" />
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="lxml-objectify">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu current" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">lxml.objectify</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu current" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">lxml.objectify</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
attribute will return the sequence of children with corresponding tag names:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"root"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">b</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"b"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="go">0</span>
<span class="gp">>>> </span><span class="n">b</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"b"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="go">1</span>
</pre></div>
<p>For convenience, you can omit the index '0' to access the first child:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">)</span>
<span class="go">0</span>
</pre></div>
<p>XML attributes are accessed as in the normal ElementTree API:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">c</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"c"</span><span class="p">,</span> <span class="n">myattr</span><span class="o">=</span><span class="s2">"someval"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"myattr"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"myattr"</span><span class="p">))</span>
<span class="go">someval</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"c"</span><span class="p">,</span> <span class="s2">"oh-oh"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"c"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"c"</span><span class="p">))</span>
<span class="go">oh-oh</span>
</pre></div>
<p>In addition to the normal ElementTree API for appending elements to trees,
updated to match the attribute name:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"yet_another_child"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">new_child</span> <span class="o">=</span> <span class="n">el</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">new_child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">new_child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">new_child</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">yet_another_child</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="p">[</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"y"</span><span class="p">),</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"y"</span><span class="p">)</span> <span class="p">]</span>
<span class="gp">>>> </span><span class="n">subel</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="s2">"sub"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">child</span> <span class="o">=</span> <span class="n">el</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">child</span><span class="o">.</span><span class="n">sub</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">child</span><span class="o">.</span><span class="n">sub</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">sub</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">child</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">el</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">child</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">sub</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">child</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">sub</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">sub</span>
</pre></div>
<p>Note that special care must be taken when changing the tag name of an element:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="s2">"notB"</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">b</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<span class="gr">AttributeError</span>: <span class="n">no such child: b</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">notB</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">notB</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">notB</span>
</pre></div>
</div>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">fileobject</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s1">'<test/>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">fileobject</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">(),</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">(),</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s1">'<test/>'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
<span class="go">True</span>
</pre></div>
<p>To build a new tree in memory, <tt class="docutils literal">objectify</tt> replicates the standard
factory function <tt class="docutils literal">Element()</tt> from <tt class="docutils literal">lxml.etree</tt>:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">obj_el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"new"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">obj_el</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">obj_el</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
<span class="go">True</span>
</pre></div>
<p>After creating such an Element, you can use the <a class="reference external" href="tutorial.html#the-element-class">usual API</a> of
through the <tt class="docutils literal">Element()</tt> factory of lxml.etree (instead of objectify)
will not support the <tt class="docutils literal">objectify</tt> API by themselves:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">subel</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">obj_el</span><span class="p">,</span> <span class="s2">"sub"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">subel</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">subel</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">independent_el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"new"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">independent_el</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">independent_el</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
<span class="go">False</span>
</pre></div>
</div>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">E</span><span class="o">.</span><span class="n">root</span><span class="p">(</span>
<span class="gp">... </span> <span class="n">E</span><span class="o">.</span><span class="n">a</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span>
<span class="gp">... </span> <span class="n">E</span><span class="o">.</span><span class="n">b</span><span class="p">(</span><span class="mf">6.21</span><span class="p">),</span>
-<span class="gp">... </span> <span class="n">E</span><span class="o">.</span><span class="n">c</span><span class="p">(</span><span class="bp">True</span><span class="p">),</span>
+<span class="gp">... </span> <span class="n">E</span><span class="o">.</span><span class="n">c</span><span class="p">(</span><span class="kc">True</span><span class="p">),</span>
<span class="gp">... </span> <span class="n">E</span><span class="o">.</span><span class="n">d</span><span class="p">(</span><span class="s2">"how"</span><span class="p">,</span> <span class="n">tell</span><span class="o">=</span><span class="s2">"me"</span><span class="p">)</span>
<span class="gp">... </span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root xmlns:py="http://codespeak.net/lxml/objectify/pytype"></span>
<span class="go"> <a py:pytype="int">5</a></span>
<span class="go"> <b py:pytype="float">6.21</b></span>
<span class="gp">... </span> <span class="n">HOWMANY</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
<span class="gp">... </span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root xmlns:py="http://codespeak.net/lxml/objectify/pytype"></span>
<span class="go"> <title py:pytype="str">The title</title></span>
<span class="go"> <how-many py:pytype="int">5</how-many></span>
creates pytype annotated Elements without a namespace. You can switch off the
pytype annotation by passing False to the <tt class="docutils literal">annotate</tt> keyword argument of the
constructor. You can also pass a default namespace and an <tt class="docutils literal">nsmap</tt>:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">myE</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ElementMaker</span><span class="p">(</span><span class="n">annotate</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
-<span class="gp">... </span> <span class="n">namespace</span><span class="o">=</span><span class="s2">"http://my/ns"</span><span class="p">,</span> <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="bp">None</span> <span class="p">:</span> <span class="s2">"http://my/ns"</span><span class="p">})</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">myE</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ElementMaker</span><span class="p">(</span><span class="n">annotate</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+<span class="gp">... </span> <span class="n">namespace</span><span class="o">=</span><span class="s2">"http://my/ns"</span><span class="p">,</span> <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="kc">None</span> <span class="p">:</span> <span class="s2">"http://my/ns"</span><span class="p">})</span>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">myE</span><span class="o">.</span><span class="n">root</span><span class="p">(</span> <span class="n">myE</span><span class="o">.</span><span class="n">someint</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root xmlns="http://my/ns"></span>
<span class="go"> <someint>2</someint></span>
<span class="go"></root></span>
<span class="gp">>>> </span><span class="n">b</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"{http://ns/}b"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">c</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"{http://other/}c"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}b</span>
</pre></div>
<p>Note that the <tt class="docutils literal">SubElement()</tt> factory of <tt class="docutils literal">lxml.etree</tt> does not
creation must be explicit about the namespace, and is simplified
through the E-factory as described above.</p>
<p>Lookups, however, inherit namespaces implicitly:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}b</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="o">...</span>
<span class="gr">AttributeError</span>: <span class="n">no such child: {http://ns/}c</span>
<p>To access an element in a different namespace than its parent, you can
use <tt class="docutils literal">getattr()</tt>:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">c</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"{http://other/}c"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://other/}c</span>
</pre></div>
<p>For convenience, there is also a quick way through item access:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">c</span> <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="s2">"{http://other/}c"</span><span class="p">]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://other/}c</span>
</pre></div>
<p>The same approach must be used to access children with tag names that are not
valid Python identifiers:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"{http://ns/}tag-name"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}tag-name</span>
<span class="gp">>>> </span><span class="n">new_el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"{http://ns/}new-element"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">new_el</span><span class="p">,</span> <span class="s2">"{http://ns/}child"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span> <span class="n">new_el</span><span class="p">,</span> <span class="n">new_el</span> <span class="p">]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]))</span>
<span class="go">2</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}tag-name</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]</span><span class="o">.</span><span class="n">child</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]</span><span class="o">.</span><span class="n">child</span><span class="p">))</span>
<span class="go">3</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]</span><span class="o">.</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">]</span><span class="o">.</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}child</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"tag-name"</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}child</span>
</pre></div>
<p>or for names that have a special meaning in lxml.objectify:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<root><text>TEXT</text></root>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<span class="gr">AttributeError</span>: <span class="n">'NoneType' object has no attribute 'text'</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"text"</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s2">"text"</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">TEXT</span>
</pre></div>
</div>
<span class="gp">... </span><span class="s1"> </xsd:complexType></span>
<span class="gp">... </span><span class="s1"> </xsd:schema></span>
<span class="gp">... </span><span class="s1">'''</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="n">schema</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLSchema</span><span class="p">(</span><span class="nb">file</span><span class="o">=</span><span class="n">f</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">schema</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLSchema</span><span class="p">(</span><span class="n">file</span><span class="o">=</span><span class="n">f</span><span class="p">)</span>
</pre></div>
<p>When creating the validating parser, we must make sure it <a class="reference external" href="#advance-element-class-lookup">returns
objectify trees</a>. This is best done with the <tt class="docutils literal">makeparser()</tt>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">xml</span> <span class="o">=</span> <span class="s2">"<a><b>test</b></a>"</span>
<span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">xml</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">b</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">b</span><span class="p">)</span>
<span class="go">test</span>
</pre></div>
<p>Or an invalid document:</p>
<span class="gp">>>> </span><span class="n">d</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"{http://other/}d"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">path</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">"root.b.c"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
<span class="go">root.b.c</span>
<span class="gp">>>> </span><span class="n">path</span><span class="o">.</span><span class="n">hasattr</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}c</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">"root.b.c"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}c</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">"root.{http://other/}d"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://other/}d</span>
-<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">"root.{not}there"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">"root.</span><span class="si">{not}</span><span class="s2">there"</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<span class="gr">AttributeError</span>: <span class="n">no such child: {not}there</span>
-<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">"{not}there"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">"</span><span class="si">{not}</span><span class="s2">there"</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<span class="gr">ValueError</span>: <span class="n">root element does not match: need {not}there, got {http://ns/}root</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">"root.b[1]"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}b</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">"root.{http://ns/}b[1]"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}b</span>
</pre></div>
<p>Apart from strings, ObjectPath also accepts lists of path segments:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">([</span><span class="s1">'root'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">])</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}c</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">([</span><span class="s1">'root'</span><span class="p">,</span> <span class="s1">'{http://ns/}b[1]'</span><span class="p">])</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}b</span>
</pre></div>
<p>You can also use relative paths starting with a '.' to ignore the actual root
element and only inherit its namespace:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">".b[1]"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}b</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">([</span><span class="s1">''</span><span class="p">,</span> <span class="s1">'b[1]'</span><span class="p">])</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}b</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">".unknown[1]"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<span class="gr">AttributeError</span>: <span class="n">no such child: {http://ns/}unknown</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">".{http://other/}unknown[1]"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<span class="gr">AttributeError</span>: <span class="n">no such child: {http://other/}unknown</span>
</pre></div>
<p>For convenience, a single dot represents the empty ObjectPath (identity):</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">"."</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://ns/}root</span>
</pre></div>
<p>ObjectPath objects can be used to manipulate trees:</p>
<span class="gp">>>> </span><span class="n">path</span><span class="o">.</span><span class="n">setattr</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"my value"</span><span class="p">)</span> <span class="c1"># creates children as necessary</span>
<span class="gp">>>> </span><span class="n">path</span><span class="o">.</span><span class="n">hasattr</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">my value</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">some</span><span class="o">.</span><span class="n">child</span><span class="p">[</span><span class="s2">"{http://other/}unknown"</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">some</span><span class="o">.</span><span class="n">child</span><span class="p">[</span><span class="s2">"{http://other/}unknown"</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">my value</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span> <span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> <span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span> <span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> <span class="p">))</span>
<span class="go">1</span>
<span class="gp">>>> </span><span class="n">path</span><span class="o">.</span><span class="n">addattr</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"my new value"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span> <span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> <span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span> <span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> <span class="p">))</span>
<span class="go">2</span>
<span class="gp">>>> </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> <span class="p">]</span>
<span class="go">['my value', 'my new value']</span>
<p>Note, however, that indexing is only supported in this context if the children
exist. Indexing of non existing children will not extend or create a list of
such children but raise an exception:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">path</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">".{non}existing[1]"</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">path</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s2">".</span><span class="si">{non}</span><span class="s2">existing[1]"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">path</span><span class="o">.</span><span class="n">setattr</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"my value"</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="n">root</span><span class="o">.</span><span class="n">b</span>
<span class="go">16</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+=</span> <span class="n">root</span><span class="o">.</span><span class="n">b</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
<span class="go">16</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="mi">2</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="mi">2</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="mi">2</span><span class="p">)</span>
<span class="go">4</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
<span class="go">3</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">)</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">c</span> <span class="o">=</span> <span class="bp">False</span>
+<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">c</span> <span class="o">=</span> <span class="kc">False</span>
<span class="gp">>>> </span><span class="k">if</span> <span class="ow">not</span> <span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"false!"</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"false!"</span><span class="p">)</span>
<span class="go">false!</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">d</span> <span class="o">+</span> <span class="s2">" test !"</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">d</span> <span class="o">+</span> <span class="s2">" test !"</span><span class="p">)</span>
<span class="go">hoi test !</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">d</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">d</span> <span class="o">%</span> <span class="p">(</span><span class="mi">1234</span><span class="p">,</span> <span class="mi">12345</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">d</span> <span class="o">%</span> <span class="p">(</span><span class="mi">1234</span><span class="p">,</span> <span class="mi">12345</span><span class="p">))</span>
<span class="go">1234 - 12345</span>
</pre></div>
<p>However, data elements continue to provide the objectify API. This means that
cannot behave as the Python types. Like all other tree elements, they show
the normal slicing behaviour of objectify elements:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s2">"<root><a>test</a><b>toast</b></root>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="s1">' me'</span><span class="p">)</span> <span class="c1"># behaves like a string, right?</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="s1">' me'</span><span class="p">)</span> <span class="c1"># behaves like a string, right?</span>
<span class="go">test me</span>
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span> <span class="c1"># but there's only one 'a' element!</span>
<span class="go">1</span>
<span class="gp">>>> </span><span class="p">[</span> <span class="n">a</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="p">]</span>
<span class="go">['a']</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">a</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
<span class="go">test</span>
<span class="gp">>>> </span><span class="p">[</span> <span class="nb">str</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">[:</span><span class="mi">1</span><span class="p">]</span> <span class="p">]</span>
<span class="go">['test']</span>
<span class="gr">TypeError</span>: <span class="n">attribute 'pyval' of 'StringElement' objects is not writable</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="mi">25</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
<span class="go">25</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">pyval</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">pyval</span><span class="p">)</span>
<span class="go">25</span>
</pre></div>
<p>In other words, <tt class="docutils literal">objectify</tt> data elements behave like immutable Python
<span class="gp">... </span><span class="s2"></root></span>
<span class="gp">... </span><span class="s2">"""</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = 1 [IntElement]</span>
<span class="go"> * attr1 = 'foo'</span>
</pre></div>
<p>You can freely switch between different types for the same child:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s2">"<root><a>5</a></root>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = 5 [IntElement]</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="s1">'nice string!'</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = 'nice string!' [StringElement]</span>
<span class="go"> * py:pytype = 'str'</span>
-<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="bp">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="kc">True</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = True [BoolElement]</span>
<span class="go"> * py:pytype = 'bool'</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = 1 [IntElement]</span>
<span class="go"> * py:pytype = 'int'</span>
<span class="go"> * py:pytype = 'int'</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = 1 [IntElement]</span>
<span class="go"> * py:pytype = 'int'</span>
<span class="gp">... </span><span class="s2"></root></span>
<span class="gp">... </span><span class="s2">"""</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = 1 [IntElement]</span>
<span class="go"> * attr1 = 'foo'</span>
<span class="go"> * xsi:nil = 'true'</span>
</pre></div>
<p>This behaviour can be switched off in the same way:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">enable_recursive_str</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">enable_recursive_str</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
</pre></div>
</div>
</div>
<p>The "type hint" mechanism deploys an XML attribute defined as
<tt class="docutils literal">lxml.objectify.PYTYPE_ATTRIBUTE</tt>. It may contain any of the following
string values: int, long, float, str, unicode, NoneType:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">PYTYPE_ATTRIBUTE</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">PYTYPE_ATTRIBUTE</span><span class="p">)</span>
<span class="go">{http://codespeak.net/lxml/objectify/pytype}pytype</span>
<span class="gp">>>> </span><span class="n">ns</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">PYTYPE_ATTRIBUTE</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'}'</span><span class="p">)</span>
<span class="gp">... </span><span class="s2"></root></span>
<span class="gp">... </span><span class="s2">"""</span> <span class="o">%</span> <span class="n">ns</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="mi">10</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="mi">10</span><span class="p">)</span>
<span class="go">510</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span> <span class="o">+</span> <span class="mi">10</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span> <span class="o">+</span> <span class="mi">10</span><span class="p">)</span>
<span class="go">15</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">)</span>
<span class="go">None</span>
</pre></div>
<p>Note that you can change the name and namespace used for this
utility function <tt class="docutils literal">annotate()</tt> that recursively generates this
attribute for the elements of a tree:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s2">"<root><a>test</a><b>5</b></root>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = 'test' [StringElement]</span>
<span class="go"> b = 5 [IntElement]</span>
<span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = 'test' [StringElement]</span>
<span class="go"> * py:pytype = 'str'</span>
<span class="gp">... </span><span class="s1"> <s xsi:type="xsd:string">5</s></span>
<span class="gp">... </span><span class="s1"> </root></span>
<span class="gp">... </span><span class="s1"> '''</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> d = 5.0 [FloatElement]</span>
<span class="go"> * xsi:type = 'xsd:double'</span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s1">'''</span><span class="se">\</span>
<span class="gp">... </span><span class="s1"> <root><a>test</a><b>5</b><c>true</c></root></span>
<span class="gp">... </span><span class="s1"> '''</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = 'test' [StringElement]</span>
<span class="go"> b = 5 [IntElement]</span>
<span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">xsiannotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> a = 'test' [StringElement]</span>
<span class="go"> * xsi:type = 'xsd:string'</span>
<span class="gp">... </span><span class="s1"> <s xsi:type="xsd:string">5</s></span>
<span class="gp">... </span><span class="s1"></root>'''</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> d = 5.0 [FloatElement]</span>
<span class="go"> * py:pytype = 'float'</span>
<span class="go"> * py:pytype = 'str'</span>
<span class="go"> * xsi:type = 'xsd:string'</span>
<span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">deannotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> d = 5 [IntElement]</span>
<span class="go"> i = 5 [IntElement]</span>
<span class="gp">... </span><span class="s1"> <n xsi:nil="true"/></span>
<span class="gp">... </span><span class="s1"></root>'''</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> d = 5.0 [FloatElement]</span>
<span class="go"> * py:pytype = 'float'</span>
<span class="go"> n = None [NoneElement]</span>
<span class="go"> * py:pytype = 'NoneType'</span>
<span class="go"> * xsi:nil = 'true'</span>
-<span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">deannotate</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">xsi_nil</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">deannotate</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">xsi_nil</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> d = 5 [IntElement]</span>
<span class="go"> i = 5 [IntElement]</span>
XSI type name:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"root"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">_pytype</span><span class="o">=</span><span class="s2">"int"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> x = 5 [IntElement]</span>
<span class="go"> * py:pytype = 'int'</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">_pytype</span><span class="o">=</span><span class="s2">"str"</span><span class="p">,</span> <span class="n">myattr</span><span class="o">=</span><span class="s2">"someval"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> x = '5' [StringElement]</span>
<span class="go"> * myattr = 'someval'</span>
<span class="go"> * py:pytype = 'str'</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">_xsi</span><span class="o">=</span><span class="s2">"integer"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">root = None [ObjectifiedElement]</span>
<span class="go"> x = 5 [IntElement]</span>
<span class="go"> * py:pytype = 'int'</span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"root"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">s</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">_xsi</span><span class="o">=</span><span class="s2">"string"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">deannotate</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">xsi</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">deannotate</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">xsi</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root xmlns:py="http://codespeak.net/lxml/objectify/pytype" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></span>
<span class="go"> <s xsi:type="xsd:string">5</s></span>
<span class="go"></root></span>
<span class="gp">>>> </span><span class="n">namespaces</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">nsmap</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
<span class="gp">>>> </span><span class="n">namespaces</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span> <span class="ow">in</span> <span class="n">namespaces</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span><span class="p">))</span>
<span class="go">py - http://codespeak.net/lxml/objectify/pytype</span>
<span class="go">xsd - http://www.w3.org/2001/XMLSchema</span>
<span class="go">xsi - http://www.w3.org/2001/XMLSchema-instance</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"{http://www.w3.org/2001/XMLSchema-instance}type"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"{http://www.w3.org/2001/XMLSchema-instance}type"</span><span class="p">))</span>
<span class="go">xsd:string</span>
</pre></div>
<p>While you can set custom namespace prefixes, it is necessary to provide valid
<span class="gp">>>> </span><span class="n">namespaces</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">nsmap</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
<span class="gp">>>> </span><span class="n">namespaces</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span> <span class="ow">in</span> <span class="n">namespaces</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span><span class="p">))</span>
<span class="go">foo - http://www.w3.org/2001/XMLSchema</span>
<span class="go">py - http://codespeak.net/lxml/objectify/pytype</span>
<span class="go">xsi - http://www.w3.org/2001/XMLSchema-instance</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"{http://www.w3.org/2001/XMLSchema-instance}type"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"{http://www.w3.org/2001/XMLSchema-instance}type"</span><span class="p">))</span>
<span class="go">foo:string</span>
</pre></div>
<p>Note how lxml chose a default prefix for the XML Schema Instance
<span class="gp">>>> </span><span class="n">namespaces</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">nsmap</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
<span class="gp">>>> </span><span class="n">namespaces</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span> <span class="ow">in</span> <span class="n">namespaces</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span><span class="p">))</span>
<span class="go">foo - http://www.w3.org/2001/XMLSchema</span>
<span class="go">myxsi - http://www.w3.org/2001/XMLSchema-instance</span>
<span class="go">py - http://codespeak.net/lxml/objectify/pytype</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"{http://www.w3.org/2001/XMLSchema-instance}type"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"{http://www.w3.org/2001/XMLSchema-instance}type"</span><span class="p">))</span>
<span class="go">foo:string</span>
</pre></div>
<p>Care must be taken if different namespace prefixes have been used for the same
when adding a new sub-element to a tree, but this mechanism does not adapt the
prefixes of attribute values:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s2">"""<root xmlns:schema="http://www.w3.org/2001/XMLSchema"/>"""</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root xmlns:schema="http://www.w3.org/2001/XMLSchema"/></span>
<span class="gp">>>> </span><span class="n">s</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="s2">"17"</span><span class="p">,</span> <span class="n">_xsi</span><span class="o">=</span><span class="s2">"string"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><value xmlns:py="http://codespeak.net/lxml/objectify/pytype" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" py:pytype="str" xsi:type="xsd:string">17</value></span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">s</span> <span class="o">=</span> <span class="n">s</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root xmlns:schema="http://www.w3.org/2001/XMLSchema"></span>
<span class="go"> <s xmlns:py="http://codespeak.net/lxml/objectify/pytype" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" py:pytype="str" xsi:type="xsd:string">17</s></span>
<span class="go"></root></span>
choose to deviate from the standard prefixes. A convenient way to do this for
xsi:type attributes is to use the <tt class="docutils literal">xsiannotate()</tt> utility:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">objectify</span><span class="o">.</span><span class="n">xsiannotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root xmlns:schema="http://www.w3.org/2001/XMLSchema"></span>
<span class="go"> <s xmlns:py="http://codespeak.net/lxml/objectify/pytype" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" py:pytype="str" xsi:type="schema:string">17</s></span>
<span class="go"></root></span>
<p>The registration of data classes uses the <tt class="docutils literal">PyType</tt> class:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">class</span> <span class="nc">ChristmasDate</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedDataElement</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">call_santa</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"Ho ho ho!"</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Ho ho ho!"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">def</span> <span class="nf">checkChristmasDate</span><span class="p">(</span><span class="n">date_string</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">if</span> <span class="ow">not</span> <span class="n">date_string</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'24.12.'</span><span class="p">):</span>
<span class="gp">... </span><span class="s1"> <a xsi:type="date">12.24.2000</a></span>
<span class="gp">... </span><span class="s1"> </root></span>
<span class="gp">... </span><span class="s1"> '''</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
<span class="go">12.24.2000</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">call_santa</span><span class="p">()</span>
<span class="go">Ho ho ho!</span>
spaces as data in your specific use case, you should go with a normal
parser and just set the element class lookup. Most applications,
however, will work fine with the following setup:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">makeparser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">makeparser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
<p>What this does internally, is:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifyElementClassLookup</span><span class="p">()</span>
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Parsing XML and HTML with lxml</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="parsing-xml-and-html-with-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu current" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Parsing XML and HTML with lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu current" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Parsing XML and HTML with lxml</h1>
<p>lxml provides a very simple and powerful API for parsing XML and HTML. It
supports one-step parsing as well as step-by-step parsing using an
<h2>Parser options</h2>
<p>The parsers accept a number of setup options as keyword arguments. The above
example is easily extended to clean up namespaces during parsing:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">ns_clean</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">ns_clean</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">),</span> <span class="n">parser</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">())</span>
<span class="go">b'<a xmlns="test"><b/></a>'</span>
<p>Parsers have an <tt class="docutils literal">error_log</tt> property that lists the errors and
warnings of the last parser run:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">error_log</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">error_log</span><span class="p">))</span>
<span class="go">0</span>
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<root></span><span class="se">\n</span><span class="s2"></b>"</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span> <span class="c1"># doctest: +ELLIPSIS</span>
<span class="c">...</span>
<span class="gr">lxml.etree.XMLSyntaxError</span>: <span class="n">Opening and ending tag mismatch: root line 1 and b, line 2, column 5...</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">error_log</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">error_log</span><span class="p">))</span>
<span class="go">1</span>
<span class="gp">>>> </span><span class="n">error</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">error_log</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
<span class="go">Opening and ending tag mismatch: root line 1 and b</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">line</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">line</span><span class="p">)</span>
<span class="go">2</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">column</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">column</span><span class="p">)</span>
<span class="go">5</span>
</pre></div>
<p>Each entry in the log has the following properties:</p>
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">broken_html</span><span class="p">),</span> <span class="n">parser</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">(),</span>
-<span class="gp">... </span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s2">"html"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="gp">... </span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s2">"html"</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="go"><html></span>
<span class="go"> <head></span>
<span class="go"> <title>test</title></span>
<p>Lxml has an HTML function, similar to the XML shortcut known from
ElementTree:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">html</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">HTML</span><span class="p">(</span><span class="n">broken_html</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s2">"html"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s2">"html"</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="go"><html></span>
<span class="go"> <head></span>
<span class="go"> <title>test</title></span>
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xhtml</span><span class="p">))</span>
<span class="gp">>>> </span><span class="n">docinfo</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">public_id</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">public_id</span><span class="p">)</span>
<span class="go">-//W3C//DTD XHTML 1.0 Transitional//EN</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">system_url</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">system_url</span><span class="p">)</span>
<span class="go">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</span>
<span class="gp">>>> </span><span class="n">docinfo</span><span class="o">.</span><span class="n">doctype</span> <span class="o">==</span> <span class="n">doctype_string</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">xml_version</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">xml_version</span><span class="p">)</span>
<span class="go">1.0</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">encoding</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">encoding</span><span class="p">)</span>
<span class="go">ascii</span>
-<span class="gp">>>> </span><span class="n">docinfo</span><span class="o">.</span><span class="n">system_url</span> <span class="o">=</span> <span class="bp">None</span>
-<span class="gp">>>> </span><span class="n">docinfo</span><span class="o">.</span><span class="n">public_id</span> <span class="o">=</span> <span class="bp">None</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="n">docinfo</span><span class="o">.</span><span class="n">system_url</span> <span class="o">=</span> <span class="kc">None</span>
+<span class="gp">>>> </span><span class="n">docinfo</span><span class="o">.</span><span class="n">public_id</span> <span class="o">=</span> <span class="kc">None</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">))</span>
<span class="go"><!DOCTYPE html></span>
<span class="go"><html><body/></html></span>
</pre></div>
a target object to the parser:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">class</span> <span class="nc">EchoTarget</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">attrib</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"start </span><span class="si">%s</span><span class="s2"> </span><span class="si">%r</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">tag</span><span class="p">,</span> <span class="nb">dict</span><span class="p">(</span><span class="n">attrib</span><span class="p">)))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"start </span><span class="si">%s</span><span class="s2"> </span><span class="si">%r</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">tag</span><span class="p">,</span> <span class="nb">dict</span><span class="p">(</span><span class="n">attrib</span><span class="p">)))</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">end</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"end </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">tag</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"end </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">tag</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"data </span><span class="si">%r</span><span class="s2">"</span> <span class="o">%</span> <span class="n">data</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"data </span><span class="si">%r</span><span class="s2">"</span> <span class="o">%</span> <span class="n">data</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"comment </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">text</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"comment </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">text</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">return</span> <span class="s2">"closed!"</span>
<span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">target</span> <span class="o">=</span> <span class="n">EchoTarget</span><span class="p">())</span>
<span class="go">end element</span>
<span class="go">close</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="go">closed!</span>
</pre></div>
<p>It is important for the <tt class="docutils literal">.close()</tt> method to reset the parser target
<span class="go">end element</span>
<span class="go">close</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="go">closed!</span>
</pre></div>
<p>Starting with lxml 2.3, the <tt class="docutils literal">.close()</tt> method will also be called in
<span class="gr">lxml.etree.XMLSyntaxError</span>: <span class="n">Opening and ending tag mismatch...</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">event</span> <span class="ow">in</span> <span class="n">parser</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">events</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
<span class="go">start element {}</span>
<span class="go">data u'some'</span>
<span class="go">close</span>
<span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<element>some<!--comment-->text</element>"</span><span class="p">,</span>
<span class="gp">... </span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">element</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">comment</span>
</pre></div>
</div>
parser:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">root</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">a</span>
</pre></div>
<p>If you do not call <tt class="docutils literal">close()</tt>, the parser will stay locked and
<span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="go">close</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="go">closed!</span>
</pre></div>
<p>Again, this prevents the automatic creation of an XML tree and leaves
<span class="gp">>>> </span><span class="k">def</span> <span class="nf">print_events</span><span class="p">(</span><span class="n">parser</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">parser</span><span class="o">.</span><span class="n">read_events</span><span class="p">():</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s1">'<root>some text'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">print_events</span><span class="p">(</span><span class="n">parser</span><span class="p">)</span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">def</span> <span class="nf">print_events</span><span class="p">(</span><span class="n">events</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">events</span><span class="p">:</span>
<span class="gp">... </span> <span class="k">if</span> <span class="n">action</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'start'</span><span class="p">,</span> <span class="s1">'end'</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="gp">... </span> <span class="k">elif</span> <span class="n">action</span> <span class="o">==</span> <span class="s1">'start-ns'</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">obj</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">obj</span><span class="p">))</span>
<span class="gp">... </span> <span class="k">else</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">action</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">action</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">event_types</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">,</span> <span class="s2">"start-ns"</span><span class="p">,</span> <span class="s2">"end-ns"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLPullParser</span><span class="p">(</span><span class="n">event_types</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s1">'<root><element key="value">text</element>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s1">'<element><child /></element>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">events</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: </span><span class="si">%d</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">elem</span><span class="p">)))</span> <span class="c1"># processing</span>
-<span class="gp">... </span> <span class="n">elem</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span><span class="n">keep_tail</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="c1"># delete children</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: </span><span class="si">%d</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">elem</span><span class="p">)))</span> <span class="c1"># processing</span>
+<span class="gp">... </span> <span class="n">elem</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span><span class="n">keep_tail</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># delete children</span>
<span class="go">element: 0</span>
<span class="go">child: 0</span>
<span class="go">element: 1</span>
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s1">'<empty-element xmlns="http://testns/" /></root>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">events</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: </span><span class="si">%d</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">elem</span><span class="p">)))</span> <span class="c1"># processing</span>
-<span class="gp">... </span> <span class="n">elem</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span><span class="n">keep_tail</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="c1"># delete children</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: </span><span class="si">%d</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">elem</span><span class="p">)))</span> <span class="c1"># processing</span>
+<span class="gp">... </span> <span class="n">elem</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span><span class="n">keep_tail</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># delete children</span>
<span class="go">{http://testns/}empty-element: 0</span>
<span class="go">root: 3</span>
of the current element:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">event</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">parser</span><span class="o">.</span><span class="n">read_events</span><span class="p">():</span>
<span class="gp">... </span> <span class="c1"># ... do something with the element</span>
-<span class="gp">... </span> <span class="n">element</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span><span class="n">keep_tail</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="c1"># clean up children</span>
-<span class="gp">... </span> <span class="k">while</span> <span class="n">element</span><span class="o">.</span><span class="n">getprevious</span><span class="p">()</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+<span class="gp">... </span> <span class="n">element</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span><span class="n">keep_tail</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># clean up children</span>
+<span class="gp">... </span> <span class="k">while</span> <span class="n">element</span><span class="o">.</span><span class="n">getprevious</span><span class="p">()</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="gp">... </span> <span class="k">del</span> <span class="n">element</span><span class="o">.</span><span class="n">getparent</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># clean up preceding siblings</span>
</pre></div>
<p>The <tt class="docutils literal">while</tt> loop deletes multiple siblings in a row. This is only necessary
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s1">'<empty-element xmlns="http://testns/" /></root>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">parser</span><span class="o">.</span><span class="n">read_events</span><span class="p">():</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="go">end: element</span>
<span class="go">end: element</span>
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s1">'<empty-element xmlns="http://testns/" /></root>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">parser</span><span class="o">.</span><span class="n">read_events</span><span class="p">():</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="go">start: {http://testns/}empty-element</span>
<span class="go">end: {http://testns/}empty-element</span>
</pre></div>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">parser</span><span class="o">.</span><span class="n">read_events</span><span class="p">():</span>
<span class="gp">... </span> <span class="k">if</span> <span class="n">action</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'start'</span><span class="p">,</span> <span class="s1">'end'</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="gp">... </span> <span class="k">elif</span> <span class="n">action</span> <span class="o">==</span> <span class="s1">'pi'</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: -</span><span class="si">%s</span><span class="s2">=</span><span class="si">%s</span><span class="s2">-"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: -</span><span class="si">%s</span><span class="s2">=</span><span class="si">%s</span><span class="s2">-"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
<span class="gp">... </span> <span class="k">else</span><span class="p">:</span> <span class="c1"># 'comment'</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: -</span><span class="si">%s</span><span class="s2">-"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: -</span><span class="si">%s</span><span class="s2">-"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
<span class="go">pi: -some=pi -</span>
<span class="go">comment: - a comment -</span>
<span class="go">start: root</span>
<span class="go">end: root</span>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">root</span>
</pre></div>
</div>
by the pull parser as the second item of the parse events tuple.</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">class</span> <span class="nc">Target</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">attrib</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'-> start(</span><span class="si">%s</span><span class="s1">)'</span> <span class="o">%</span> <span class="n">tag</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'-> start(</span><span class="si">%s</span><span class="s1">)'</span> <span class="o">%</span> <span class="n">tag</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">return</span> <span class="s1">'>>START: </span><span class="si">%s</span><span class="s1"><<'</span> <span class="o">%</span> <span class="n">tag</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">end</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'-> end(</span><span class="si">%s</span><span class="s1">)'</span> <span class="o">%</span> <span class="n">tag</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'-> end(</span><span class="si">%s</span><span class="s1">)'</span> <span class="o">%</span> <span class="n">tag</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">return</span> <span class="s1">'>>END: </span><span class="si">%s</span><span class="s1"><<'</span> <span class="o">%</span> <span class="n">tag</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'-> close()'</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'-> close()'</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">return</span> <span class="s2">"CLOSED!"</span>
<span class="gp">>>> </span><span class="n">event_types</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'start'</span><span class="p">,</span> <span class="s1">'end'</span><span class="p">)</span>
<span class="go">-> end(root)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">parser</span><span class="o">.</span><span class="n">read_events</span><span class="p">():</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
<span class="go">start: >>START: root<<</span>
<span class="go">start: >>START: child1<<</span>
<span class="go">end: >>END: child1<<</span>
<span class="go">end: >>END: child2<<</span>
<span class="go">end: >>END: root<<</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">close</span><span class="p">())</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">close</span><span class="p">())</span>
<span class="go">-> close()</span>
<span class="go">CLOSED!</span>
</pre></div>
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s1">'<root><child1 test="123" /><child2 evil="YES" /></root>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">parser</span><span class="o">.</span><span class="n">read_events</span><span class="p">():</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">(</span><span class="si">%r</span><span class="s1">)'</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">attrib</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">(</span><span class="si">%r</span><span class="s1">)'</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">attrib</span><span class="p">))</span>
<span class="go">end: child1({'test': '123'})</span>
<span class="go">end: child2({})</span>
<span class="go">end: root({})</span>
<span class="gp">>>> </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">))</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="go">end: element</span>
<span class="go">end: element</span>
<span class="go">end: {http://testns/}empty-element</span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">events</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">),</span> <span class="n">events</span><span class="o">=</span><span class="n">events</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="go">start: root</span>
<span class="go">start: element</span>
<span class="go">end: element</span>
<span class="gp">... </span> <span class="n">f</span><span class="p">,</span> <span class="n">events</span><span class="o">=</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">),</span> <span class="n">tag</span><span class="o">=</span><span class="s2">"element"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="go">start: element</span>
<span class="go">end: element</span>
<span class="go">start: element</span>
<span class="gp">... </span> <span class="n">root</span><span class="p">,</span> <span class="n">events</span><span class="o">=</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">),</span> <span class="n">tag</span><span class="o">=</span><span class="s2">"element"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="go">start: element</span>
<span class="go">end: element</span>
<span class="go">start: element</span>
<span class="gp">>>> </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterwalk</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">events</span><span class="o">=</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">))</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
<span class="gp">... </span> <span class="k">if</span> <span class="n">action</span> <span class="o">==</span> <span class="s1">'start'</span> <span class="ow">and</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span> <span class="o">==</span> <span class="s1">'a'</span><span class="p">:</span>
<span class="gp">... </span> <span class="n">context</span><span class="o">.</span><span class="n">skip_subtree</span><span class="p">()</span> <span class="c1"># ignore <b></span>
<span class="go">start: root</span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="go">b'<test> &#63697; + &#63698; </test>'</span>
-<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'UTF-8'</span><span class="p">,</span> <span class="n">xml_declaration</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'UTF-8'</span><span class="p">,</span> <span class="n">xml_declaration</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="go">b'<test> \xef\xa3\x91 + \xef\xa3\x92 </test>'</span>
</pre></div>
<p>As an extension, lxml.etree recognises the name 'unicode' as an argument
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Benchmarks and Speed</title>
<meta name="author" content="Stefan Behnel" />
<meta content="Performance evaluation of lxml and ElementTree: fast operations, common pitfalls and optimisation hints." name="description" />
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="benchmarks-and-speed">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu current" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Benchmarks and Speed</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu current" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Benchmarks and Speed</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
very easy to add as tiny test methods, so if you write a performance test for
a specific part of the API yourself, please consider sending it to the lxml
mailing list.</p>
-<p>The timings presented below compare lxml 3.1.1 (with libxml2 2.9.0) to the
+<p>The timings presented below compare lxml 4.6.3 (with libxml2 2.9.10) to the
latest released versions of ElementTree (with cElementTree as accelerator
-module) in the standard library of CPython 3.3.0. They were run
-single-threaded on a 2.9GHz 64bit double core Intel i7 machine under
-Ubuntu Linux 12.10 (Quantal). The C libraries were compiled with the
-same platform specific optimisation flags. The Python interpreter was
-also manually compiled for the platform. Note that many of the following
-ElementTree timings are therefore better than what a normal Python
-installation with the standard library (c)ElementTree modules would yield.
-Note also that CPython 2.7 and 3.2+ come with a newer ElementTree version,
-so older Python installations will not perform as good for (c)ElementTree,
-and sometimes substantially worse.</p>
+module) in the standard library of CPython 3.8.10. They were run
+single-threaded on a 2.3GHz 64bit double core Intel i5 machine under
+Ubuntu Linux 20.04 (Focal).</p>
<p>The scripts run a number of simple tests on the different libraries, using
different XML tree configurations: different tree sizes (T1-4), with or
without attributes (-/A), with or without ASCII string or unicode text
lxml is still more than 10 times as fast as the much improved
ElementTree 1.3 in recent Python versions:</p>
<pre class="literal-block">
-lxe: tostring_utf16 (S-TR T1) 7.9958 msec/pass
-cET: tostring_utf16 (S-TR T1) 83.1358 msec/pass
+lxe: tostring_utf16 (S-TR T1) 5.9340 msec/pass
+cET: tostring_utf16 (S-TR T1) 38.3270 msec/pass
-lxe: tostring_utf16 (UATR T1) 8.3222 msec/pass
-cET: tostring_utf16 (UATR T1) 84.4688 msec/pass
+lxe: tostring_utf16 (UATR T1) 6.2032 msec/pass
+cET: tostring_utf16 (UATR T1) 37.7944 msec/pass
-lxe: tostring_utf16 (S-TR T2) 8.2297 msec/pass
-cET: tostring_utf16 (S-TR T2) 87.3415 msec/pass
+lxe: tostring_utf16 (S-TR T2) 6.1841 msec/pass
+cET: tostring_utf16 (S-TR T2) 40.2577 msec/pass
-lxe: tostring_utf8 (S-TR T2) 6.5677 msec/pass
-cET: tostring_utf8 (S-TR T2) 76.2064 msec/pass
+lxe: tostring_utf8 (S-TR T2) 4.6697 msec/pass
+cET: tostring_utf8 (S-TR T2) 30.5173 msec/pass
-lxe: tostring_utf8 (U-TR T3) 1.1952 msec/pass
-cET: tostring_utf8 (U-TR T3) 22.0058 msec/pass
+lxe: tostring_utf8 (U-TR T3) 1.2085 msec/pass
+cET: tostring_utf8 (U-TR T3) 9.0246 msec/pass
</pre>
<p>The difference is somewhat smaller for plain text serialisation:</p>
<pre class="literal-block">
-lxe: tostring_text_ascii (S-TR T1) 2.7738 msec/pass
-cET: tostring_text_ascii (S-TR T1) 4.7629 msec/pass
+lxe: tostring_text_ascii (S-TR T1) 2.6727 msec/pass
+cET: tostring_text_ascii (S-TR T1) 2.9683 msec/pass
-lxe: tostring_text_ascii (S-TR T3) 0.8273 msec/pass
-cET: tostring_text_ascii (S-TR T3) 1.5273 msec/pass
+lxe: tostring_text_ascii (S-TR T3) 0.6952 msec/pass
+cET: tostring_text_ascii (S-TR T3) 1.0073 msec/pass
-lxe: tostring_text_utf16 (S-TR T1) 2.7659 msec/pass
-cET: tostring_text_utf16 (S-TR T1) 10.5038 msec/pass
+lxe: tostring_text_utf16 (S-TR T1) 2.7366 msec/pass
+cET: tostring_text_utf16 (S-TR T1) 7.3647 msec/pass
-lxe: tostring_text_utf16 (U-TR T1) 2.8017 msec/pass
-cET: tostring_text_utf16 (U-TR T1) 10.5207 msec/pass
+lxe: tostring_text_utf16 (U-TR T1) 3.0322 msec/pass
+cET: tostring_text_utf16 (U-TR T1) 7.5922 msec/pass
</pre>
<p>The <tt class="docutils literal">tostring()</tt> function also supports serialisation to a Python
unicode string object, which is currently faster in ElementTree
-under CPython 3.3:</p>
+under CPython 3.8:</p>
<pre class="literal-block">
-lxe: tostring_text_unicode (S-TR T1) 2.6896 msec/pass
-cET: tostring_text_unicode (S-TR T1) 1.0056 msec/pass
+lxe: tostring_text_unicode (S-TR T1) 2.7645 msec/pass
+cET: tostring_text_unicode (S-TR T1) 1.1806 msec/pass
-lxe: tostring_text_unicode (U-TR T1) 2.7366 msec/pass
-cET: tostring_text_unicode (U-TR T1) 1.0154 msec/pass
+lxe: tostring_text_unicode (U-TR T1) 2.9871 msec/pass
+cET: tostring_text_unicode (U-TR T1) 1.1659 msec/pass
-lxe: tostring_text_unicode (S-TR T3) 0.7997 msec/pass
-cET: tostring_text_unicode (S-TR T3) 0.3154 msec/pass
+lxe: tostring_text_unicode (S-TR T3) 0.7446 msec/pass
+cET: tostring_text_unicode (S-TR T3) 0.4532 msec/pass
lxe: tostring_text_unicode (U-TR T4) 0.0048 msec/pass
-cET: tostring_text_unicode (U-TR T4) 0.0160 msec/pass
+cET: tostring_text_unicode (U-TR T4) 0.0134 msec/pass
</pre>
<p>For parsing, lxml.etree and cElementTree compete for the medal.
Depending on the input, either of the two can be faster. The (c)ET
known to be very fast. Here are some timings from the benchmarking
suite:</p>
<pre class="literal-block">
-lxe: parse_bytesIO (SAXR T1) 13.0246 msec/pass
-cET: parse_bytesIO (SAXR T1) 8.2929 msec/pass
+lxe: parse_bytesIO (SAXR T1) 14.2074 msec/pass
+cET: parse_bytesIO (SAXR T1) 7.9336 msec/pass
-lxe: parse_bytesIO (S-XR T3) 1.3542 msec/pass
-cET: parse_bytesIO (S-XR T3) 2.4023 msec/pass
+lxe: parse_bytesIO (S-XR T3) 1.4477 msec/pass
+cET: parse_bytesIO (S-XR T3) 2.1925 msec/pass
-lxe: parse_bytesIO (UAXR T3) 7.5610 msec/pass
-cET: parse_bytesIO (UAXR T3) 11.2455 msec/pass
+lxe: parse_bytesIO (UAXR T3) 8.4128 msec/pass
+cET: parse_bytesIO (UAXR T3) 12.2926 msec/pass
</pre>
<p>And another couple of timings <a class="reference external" href="http://svn.effbot.org/public/elementtree-1.3/benchmark.py">from a benchmark</a> that Fredrik Lundh
<a class="reference external" href="http://effbot.org/zone/celementtree.htm#benchmarks">used to promote cElementTree</a>, comparing a number of different
parsers. First, parsing a 274KB XML file containing Shakespeare's
Hamlet:</p>
<pre class="literal-block">
-xml.etree.ElementTree.parse done in 0.017 seconds
+xml.etree.ElementTree.parse done in 0.006 seconds
xml.etree.cElementTree.parse done in 0.007 seconds
-xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.007 seconds
-lxml.etree.parse done in 0.003 seconds
-drop_whitespace.parse done in 0.003 seconds
+xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.006 seconds
+lxml.etree.parse done in 0.004 seconds
+drop_whitespace.parse done in 0.004 seconds
lxml.etree.XMLParser.feed(): 6636 nodes read in 0.004 seconds
-minidom tree read in 0.080 seconds
+minidom tree read in 0.066 seconds
</pre>
<p>And a 3.4MB XML file containing the Old Testament:</p>
<pre class="literal-block">
-xml.etree.ElementTree.parse done in 0.038 seconds
-xml.etree.cElementTree.parse done in 0.030 seconds
-xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.030 seconds
-lxml.etree.parse done in 0.016 seconds
-drop_whitespace.parse done in 0.015 seconds
-lxml.etree.XMLParser.feed(): 25317 nodes read in 0.022 seconds
-minidom tree read in 0.288 seconds
+xml.etree.ElementTree.parse done in 0.037 seconds
+xml.etree.cElementTree.parse done in 0.036 seconds
+xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.036 seconds
+lxml.etree.parse done in 0.025 seconds
+drop_whitespace.parse done in 0.022 seconds
+lxml.etree.XMLParser.feed(): 25317 nodes read in 0.026 seconds
+minidom tree read in 0.194 seconds
</pre>
<p>Here are the same benchmarks again, but including the memory usage
of the process in KB before and after parsing (using os.fork() to
make sure we start from a clean state each time). For the 274KB
hamlet.xml file:</p>
<pre class="literal-block">
-Memory usage: 7284
-xml.etree.ElementTree.parse done in 0.017 seconds
-Memory usage: 9432 (+2148)
+Memory usage: 9256
+xml.etree.ElementTree.parse done in 0.006 seconds
+Memory usage: 12764 (+3508)
xml.etree.cElementTree.parse done in 0.007 seconds
-Memory usage: 9432 (+2152)
-xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.007 seconds
-Memory usage: 9448 (+2164)
-lxml.etree.parse done in 0.003 seconds
-Memory usage: 11032 (+3748)
-drop_whitespace.parse done in 0.003 seconds
-Memory usage: 10224 (+2940)
+Memory usage: 12764 (+3508)
+xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.006 seconds
+Memory usage: 12720 (+3464)
+lxml.etree.parse done in 0.004 seconds
+Memory usage: 15052 (+5796)
+drop_whitespace.parse done in 0.004 seconds
+Memory usage: 14040 (+4784)
lxml.etree.XMLParser.feed(): 6636 nodes read in 0.004 seconds
-Memory usage: 11804 (+4520)
-minidom tree read in 0.080 seconds
-Memory usage: 12324 (+5040)
+Memory usage: 15812 (+6556)
+minidom tree read in 0.066 seconds
+Memory usage: 15332 (+6076)
</pre>
<p>And for the 3.4MB Old Testament XML file:</p>
<pre class="literal-block">
-Memory usage: 10420
-xml.etree.ElementTree.parse done in 0.038 seconds
-Memory usage: 20660 (+10240)
-xml.etree.cElementTree.parse done in 0.030 seconds
-Memory usage: 20660 (+10240)
-xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.030 seconds
-Memory usage: 20844 (+10424)
-lxml.etree.parse done in 0.016 seconds
-Memory usage: 27624 (+17204)
-drop_whitespace.parse done in 0.015 seconds
-Memory usage: 24468 (+14052)
-lxml.etree.XMLParser.feed(): 25317 nodes read in 0.022 seconds
-Memory usage: 29844 (+19424)
-minidom tree read in 0.288 seconds
-Memory usage: 28788 (+18368)
+Memory usage: 12456
+xml.etree.ElementTree.parse done in 0.037 seconds
+Memory usage: 23288 (+10832)
+xml.etree.cElementTree.parse done in 0.036 seconds
+Memory usage: 23288 (+10832)
+xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.036 seconds
+Memory usage: 23644 (+11220)
+lxml.etree.parse done in 0.025 seconds
+Memory usage: 31404 (+18948)
+drop_whitespace.parse done in 0.022 seconds
+Memory usage: 28752 (+16296)
+lxml.etree.XMLParser.feed(): 25317 nodes read in 0.026 seconds
+Memory usage: 33924 (+21500)
+minidom tree read in 0.194 seconds
+Memory usage: 31284 (+18828)
</pre>
<p>As can be seen from the sizes, both lxml.etree and cElementTree are
-rather memory friendly compared to the pure Python libraries
-ElementTree and (especially) minidom. Comparing to older CPython
+rather memory friendly and fast. Comparing to older CPython
versions, the memory footprint of the minidom library was considerably
reduced in CPython 3.3, by about a factor of 4 in this case.</p>
<p>For plain parser performance, lxml.etree and cElementTree tend to stay
winners well distributed over both sides. Similar timings can be
observed for the <tt class="docutils literal">iterparse()</tt> function:</p>
<pre class="literal-block">
-lxe: iterparse_bytesIO (SAXR T1) 17.9198 msec/pass
-cET: iterparse_bytesIO (SAXR T1) 14.4982 msec/pass
+lxe: iterparse_bytesIO (SAXR T1) 20.3598 msec/pass
+cET: iterparse_bytesIO (SAXR T1) 10.8948 msec/pass
-lxe: iterparse_bytesIO (UAXR T3) 8.8522 msec/pass
-cET: iterparse_bytesIO (UAXR T3) 12.9857 msec/pass
+lxe: iterparse_bytesIO (UAXR T3) 10.1640 msec/pass
+cET: iterparse_bytesIO (UAXR T3) 12.9926 msec/pass
</pre>
<p>However, if you benchmark the complete round-trip of a serialise-parse
cycle, the numbers will look similar to these:</p>
<pre class="literal-block">
-lxe: write_utf8_parse_bytesIO (S-TR T1) 19.8867 msec/pass
-cET: write_utf8_parse_bytesIO (S-TR T1) 80.7259 msec/pass
+lxe: write_utf8_parse_bytesIO (S-TR T1) 18.9857 msec/pass
+cET: write_utf8_parse_bytesIO (S-TR T1) 35.7475 msec/pass
-lxe: write_utf8_parse_bytesIO (UATR T2) 23.7896 msec/pass
-cET: write_utf8_parse_bytesIO (UATR T2) 98.0766 msec/pass
+lxe: write_utf8_parse_bytesIO (UATR T2) 22.4853 msec/pass
+cET: write_utf8_parse_bytesIO (UATR T2) 42.6254 msec/pass
-lxe: write_utf8_parse_bytesIO (S-TR T3) 3.0684 msec/pass
-cET: write_utf8_parse_bytesIO (S-TR T3) 24.6122 msec/pass
+lxe: write_utf8_parse_bytesIO (S-TR T3) 3.3801 msec/pass
+cET: write_utf8_parse_bytesIO (S-TR T3) 11.2493 msec/pass
-lxe: write_utf8_parse_bytesIO (SATR T4) 0.3495 msec/pass
-cET: write_utf8_parse_bytesIO (SATR T4) 1.9610 msec/pass
+lxe: write_utf8_parse_bytesIO (SATR T4) 0.4263 msec/pass
+cET: write_utf8_parse_bytesIO (SATR T4) 1.0326 msec/pass
</pre>
<p>For applications that require a high parser throughput of large files,
and that do little to no serialization, both cET and lxml.etree are a
benchmark (given in seconds):</p>
<pre class="literal-block">
lxe: -- S- U- -A SA UA
- T1: 0.0299 0.0343 0.0344 0.0293 0.0345 0.0342
- T2: 0.0368 0.0423 0.0418 0.0427 0.0474 0.0459
- T3: 0.0088 0.0084 0.0086 0.0251 0.0258 0.0261
- T4: 0.0002 0.0002 0.0002 0.0005 0.0006 0.0006
+ T1: 0.0219 0.0254 0.0257 0.0216 0.0259 0.0259
+ T2: 0.0234 0.0279 0.0283 0.0271 0.0318 0.0307
+ T3: 0.0051 0.0050 0.0058 0.0218 0.0233 0.0231
+ T4: 0.0001 0.0001 0.0001 0.0004 0.0004 0.0004
cET: -- S- U- -A SA UA
- T1: 0.0050 0.0045 0.0093 0.0044 0.0043 0.0043
- T2: 0.0073 0.0075 0.0074 0.0201 0.0075 0.0074
- T3: 0.0033 0.0213 0.0032 0.0034 0.0033 0.0035
+ T1: 0.0035 0.0029 0.0078 0.0031 0.0031 0.0029
+ T2: 0.0047 0.0051 0.0053 0.0046 0.0055 0.0048
+ T3: 0.0016 0.0216 0.0027 0.0021 0.0023 0.0026
T4: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
</pre>
<p>The timings are somewhat close to each other, although cET can be
a shallow copy of their list of children, lxml has to create a Python
object for each child and collect them in a list:</p>
<pre class="literal-block">
-lxe: root_list_children (--TR T1) 0.0038 msec/pass
-cET: root_list_children (--TR T1) 0.0010 msec/pass
+lxe: root_list_children (--TR T1) 0.0036 msec/pass
+cET: root_list_children (--TR T1) 0.0005 msec/pass
-lxe: root_list_children (--TR T2) 0.0455 msec/pass
-cET: root_list_children (--TR T2) 0.0050 msec/pass
+lxe: root_list_children (--TR T2) 0.0634 msec/pass
+cET: root_list_children (--TR T2) 0.0086 msec/pass
</pre>
<p>This handicap is also visible when accessing single children:</p>
<pre class="literal-block">
-lxe: first_child (--TR T2) 0.0424 msec/pass
-cET: first_child (--TR T2) 0.0384 msec/pass
+lxe: first_child (--TR T2) 0.0601 msec/pass
+cET: first_child (--TR T2) 0.0548 msec/pass
-lxe: last_child (--TR T1) 0.0477 msec/pass
-cET: last_child (--TR T1) 0.0467 msec/pass
+lxe: last_child (--TR T1) 0.0570 msec/pass
+cET: last_child (--TR T1) 0.0534 msec/pass
</pre>
<p>... unless you also add the time to find a child index in a bigger
list. ET and cET use Python lists here, which are based on arrays.
The data structure used by libxml2 is a linked tree, and thus, a
linked list of children:</p>
<pre class="literal-block">
-lxe: middle_child (--TR T1) 0.0710 msec/pass
-cET: middle_child (--TR T1) 0.0420 msec/pass
+lxe: middle_child (--TR T1) 0.0892 msec/pass
+cET: middle_child (--TR T1) 0.0510 msec/pass
-lxe: middle_child (--TR T2) 1.7393 msec/pass
-cET: middle_child (--TR T2) 0.0396 msec/pass
+lxe: middle_child (--TR T2) 2.3038 msec/pass
+cET: middle_child (--TR T2) 0.0508 msec/pass
</pre>
</div>
<div class="section" id="element-creation">
in. This results in a major performance difference for creating independent
Elements that end up in independently created documents:</p>
<pre class="literal-block">
-lxe: create_elements (--TC T2) 1.0045 msec/pass
-cET: create_elements (--TC T2) 0.0753 msec/pass
+lxe: create_elements (--TC T2) 0.8032 msec/pass
+cET: create_elements (--TC T2) 0.0675 msec/pass
</pre>
<p>Therefore, it is always preferable to create Elements for the document they
are supposed to end up in, either as SubElements of an Element or using the
explicit <tt class="docutils literal">Element.makeelement()</tt> call:</p>
<pre class="literal-block">
-lxe: makeelement (--TC T2) 1.0586 msec/pass
-cET: makeelement (--TC T2) 0.1483 msec/pass
+lxe: makeelement (--TC T2) 0.8030 msec/pass
+cET: makeelement (--TC T2) 0.0625 msec/pass
-lxe: create_subelements (--TC T2) 0.8826 msec/pass
-cET: create_subelements (--TC T2) 0.0827 msec/pass
+lxe: create_subelements (--TC T2) 0.8621 msec/pass
+cET: create_subelements (--TC T2) 0.0923 msec/pass
</pre>
<p>So, if the main performance bottleneck of an application is creating large XML
trees in memory through calls to Element and SubElement, cET is the best
<p>The following benchmark appends all root children of the second tree to the
root of the first tree:</p>
<pre class="literal-block">
-lxe: append_from_document (--TR T1,T2) 1.0812 msec/pass
-cET: append_from_document (--TR T1,T2) 0.1104 msec/pass
+lxe: append_from_document (--TR T1,T2) 1.3800 msec/pass
+cET: append_from_document (--TR T1,T2) 0.0513 msec/pass
-lxe: append_from_document (--TR T3,T4) 0.0155 msec/pass
-cET: append_from_document (--TR T3,T4) 0.0060 msec/pass
+lxe: append_from_document (--TR T3,T4) 0.0150 msec/pass
+cET: append_from_document (--TR T3,T4) 0.0026 msec/pass
</pre>
<p>Although these are fairly small numbers compared to parsing, this easily shows
the different performance classes for lxml and (c)ET. Where the latter do not
<p>This difference is not always as visible, but applies to most parts of the
API, like inserting newly created elements:</p>
<pre class="literal-block">
-lxe: insert_from_document (--TR T1,T2) 3.9763 msec/pass
-cET: insert_from_document (--TR T1,T2) 0.1459 msec/pass
+lxe: insert_from_document (--TR T1,T2) 5.2345 msec/pass
+cET: insert_from_document (--TR T1,T2) 0.0732 msec/pass
</pre>
<p>or replacing the child slice by a newly created element:</p>
<pre class="literal-block">
-lxe: replace_children_element (--TC T1) 0.0749 msec/pass
-cET: replace_children_element (--TC T1) 0.0081 msec/pass
+lxe: replace_children_element (--TC T1) 0.0720 msec/pass
+cET: replace_children_element (--TC T1) 0.0105 msec/pass
</pre>
<p>as opposed to replacing the slice with an existing element from the
same document:</p>
<pre class="literal-block">
-lxe: replace_children (--TC T1) 0.0052 msec/pass
-cET: replace_children (--TC T1) 0.0036 msec/pass
+lxe: replace_children (--TC T1) 0.0060 msec/pass
+cET: replace_children (--TC T1) 0.0050 msec/pass
</pre>
<p>While these numbers are too small to provide a major performance
impact in practice, you should keep this difference in mind when you
<h2>deepcopy</h2>
<p>Deep copying a tree is fast in lxml:</p>
<pre class="literal-block">
-lxe: deepcopy_all (--TR T1) 3.1650 msec/pass
-cET: deepcopy_all (--TR T1) 53.9973 msec/pass
+lxe: deepcopy_all (--TR T1) 4.1246 msec/pass
+cET: deepcopy_all (--TR T1) 2.5451 msec/pass
-lxe: deepcopy_all (-ATR T2) 3.7365 msec/pass
-cET: deepcopy_all (-ATR T2) 61.6267 msec/pass
+lxe: deepcopy_all (-ATR T2) 4.7867 msec/pass
+cET: deepcopy_all (-ATR T2) 2.7504 msec/pass
-lxe: deepcopy_all (S-TR T3) 0.7913 msec/pass
-cET: deepcopy_all (S-TR T3) 13.6220 msec/pass
+lxe: deepcopy_all (S-TR T3) 1.0097 msec/pass
+cET: deepcopy_all (S-TR T3) 0.6278 msec/pass
</pre>
<p>So, for example, if you have a database-like scenario where you parse in a
large tree and then search and copy independent subtrees from it for further
interest or the target element tag name is known, the <tt class="docutils literal">.iter()</tt>
method is a good choice:</p>
<pre class="literal-block">
-lxe: iter_all (--TR T1) 1.0529 msec/pass
-cET: iter_all (--TR T1) 0.2635 msec/pass
+lxe: iter_all (--TR T1) 1.3661 msec/pass
+cET: iter_all (--TR T1) 0.2670 msec/pass
-lxe: iter_islice (--TR T2) 0.0110 msec/pass
-cET: iter_islice (--TR T2) 0.0050 msec/pass
+lxe: iter_islice (--TR T2) 0.0122 msec/pass
+cET: iter_islice (--TR T2) 0.0033 msec/pass
-lxe: iter_tag (--TR T2) 0.0079 msec/pass
-cET: iter_tag (--TR T2) 0.0112 msec/pass
+lxe: iter_tag (--TR T2) 0.0098 msec/pass
+cET: iter_tag (--TR T2) 0.0086 msec/pass
-lxe: iter_tag_all (--TR T2) 0.1822 msec/pass
-cET: iter_tag_all (--TR T2) 0.5343 msec/pass
+lxe: iter_tag_all (--TR T2) 0.6840 msec/pass
+cET: iter_tag_all (--TR T2) 0.4323 msec/pass
</pre>
<p>This translates directly into similar timings for <tt class="docutils literal">Element.findall()</tt>:</p>
<pre class="literal-block">
-lxe: findall (--TR T2) 1.7176 msec/pass
-cET: findall (--TR T2) 0.9973 msec/pass
+lxe: findall (--TR T2) 3.9611 msec/pass
+cET: findall (--TR T2) 0.9227 msec/pass
-lxe: findall (--TR T3) 0.3967 msec/pass
-cET: findall (--TR T3) 0.2525 msec/pass
+lxe: findall (--TR T3) 0.3989 msec/pass
+cET: findall (--TR T3) 0.2670 msec/pass
-lxe: findall_tag (--TR T2) 0.2258 msec/pass
-cET: findall_tag (--TR T2) 0.5770 msec/pass
+lxe: findall_tag (--TR T2) 0.7420 msec/pass
+cET: findall_tag (--TR T2) 0.4942 msec/pass
-lxe: findall_tag (--TR T3) 0.1085 msec/pass
-cET: findall_tag (--TR T3) 0.1919 msec/pass
+lxe: findall_tag (--TR T3) 0.1099 msec/pass
+cET: findall_tag (--TR T3) 0.1748 msec/pass
</pre>
<p>Note that all three libraries currently use the same Python
implementation for <tt class="docutils literal">.findall()</tt>, except for their native tree
of the lxml API you use. The most straight forward way is to call the
<tt class="docutils literal">xpath()</tt> method on an Element or ElementTree:</p>
<pre class="literal-block">
-lxe: xpath_method (--TC T1) 0.3982 msec/pass
-lxe: xpath_method (--TC T2) 7.8895 msec/pass
-lxe: xpath_method (--TC T3) 0.0477 msec/pass
-lxe: xpath_method (--TC T4) 0.3982 msec/pass
+lxe: xpath_method (--TC T1) 0.2828 msec/pass
+lxe: xpath_method (--TC T2) 5.4705 msec/pass
+lxe: xpath_method (--TC T3) 0.0324 msec/pass
+lxe: xpath_method (--TC T4) 0.2804 msec/pass
</pre>
<p>This is well suited for testing and when the XPath expressions are as diverse
as the trees they are called on. However, if you have a single XPath
expression that you want to apply to a larger number of different elements,
the <tt class="docutils literal">XPath</tt> class is the most efficient way to do it:</p>
<pre class="literal-block">
-lxe: xpath_class (--TC T1) 0.0713 msec/pass
-lxe: xpath_class (--TC T2) 1.1325 msec/pass
-lxe: xpath_class (--TC T3) 0.0215 msec/pass
-lxe: xpath_class (--TC T4) 0.0722 msec/pass
+lxe: xpath_class (--TC T1) 0.0570 msec/pass
+lxe: xpath_class (--TC T2) 0.6924 msec/pass
+lxe: xpath_class (--TC T3) 0.0148 msec/pass
+lxe: xpath_class (--TC T4) 0.0446 msec/pass
</pre>
<p>Note that this still allows you to use variables in the expression, so you can
parse it once and then adapt it through variables at call time. In other
cases, where you have a fixed Element or ElementTree and want to run different
expressions on it, you should consider the <tt class="docutils literal">XPathEvaluator</tt>:</p>
<pre class="literal-block">
-lxe: xpath_element (--TR T1) 0.1101 msec/pass
-lxe: xpath_element (--TR T2) 2.0473 msec/pass
-lxe: xpath_element (--TR T3) 0.0267 msec/pass
-lxe: xpath_element (--TR T4) 0.1087 msec/pass
+lxe: xpath_element (--TR T1) 0.0684 msec/pass
+lxe: xpath_element (--TR T2) 1.0865 msec/pass
+lxe: xpath_element (--TR T3) 0.0174 msec/pass
+lxe: xpath_element (--TR T4) 0.0665 msec/pass
</pre>
<p>While it looks slightly slower, creating an XPath object for each of the
expressions generates a much higher overhead here:</p>
<pre class="literal-block">
-lxe: xpath_class_repeat (--TC T1 ) 0.3884 msec/pass
-lxe: xpath_class_repeat (--TC T2 ) 7.6182 msec/pass
-lxe: xpath_class_repeat (--TC T3 ) 0.0465 msec/pass
-lxe: xpath_class_repeat (--TC T4 ) 0.3877 msec/pass
+lxe: xpath_class_repeat (--TC T1 ) 0.2813 msec/pass
+lxe: xpath_class_repeat (--TC T2 ) 5.4042 msec/pass
+lxe: xpath_class_repeat (--TC T3 ) 0.0339 msec/pass
+lxe: xpath_class_repeat (--TC T4 ) 0.2706 msec/pass
</pre>
<p>Note that tree iteration can be substantially faster than XPath if
your code short-circuits after the first couple of elements were
<p>Here is an example where only the first matching element is being
searched, a case for which XPath has syntax support as well:</p>
<pre class="literal-block">
-lxe: find_single (--TR T2) 0.0184 msec/pass
-cET: find_single (--TR T2) 0.0052 msec/pass
+lxe: find_single (--TR T2) 0.0031 msec/pass
+cET: find_single (--TR T2) 0.0026 msec/pass
-lxe: iter_single (--TR T2) 0.0024 msec/pass
-cET: iter_single (--TR T2) 0.0007 msec/pass
+lxe: iter_single (--TR T2) 0.0019 msec/pass
+cET: iter_single (--TR T2) 0.0002 msec/pass
-lxe: xpath_single (--TR T2) 0.0033 msec/pass
+lxe: xpath_single (--TR T2) 0.0861 msec/pass
</pre>
<p>When looking for the first two elements out of many, the numbers
explode for XPath, as restricting the result subset requires a
more complex expression:</p>
<pre class="literal-block">
-lxe: iterfind_two (--TR T2) 0.0184 msec/pass
-cET: iterfind_two (--TR T2) 0.0062 msec/pass
+lxe: iterfind_two (--TR T2) 0.0050 msec/pass
+cET: iterfind_two (--TR T2) 0.0036 msec/pass
-lxe: iter_two (--TR T2) 0.0029 msec/pass
-cET: iter_two (--TR T2) 0.0017 msec/pass
+lxe: iter_two (--TR T2) 0.0021 msec/pass
+cET: iter_two (--TR T2) 0.0014 msec/pass
-lxe: xpath_two (--TR T2) 0.2768 msec/pass
+lxe: xpath_two (--TR T2) 0.0916 msec/pass
</pre>
</div>
<div class="section" id="a-longer-example">
tree. It avoids step-by-step Python element instantiations along the path,
which can substantially improve the access time:</p>
<pre class="literal-block">
-lxe: attribute (--TR T1) 4.1828 msec/pass
-lxe: attribute (--TR T2) 17.3802 msec/pass
-lxe: attribute (--TR T4) 3.8657 msec/pass
+lxe: attribute (--TR T1) 2.4018 msec/pass
+lxe: attribute (--TR T2) 16.3755 msec/pass
+lxe: attribute (--TR T4) 2.3725 msec/pass
-lxe: objectpath (--TR T1) 0.9289 msec/pass
-lxe: objectpath (--TR T2) 13.3109 msec/pass
-lxe: objectpath (--TR T4) 0.9289 msec/pass
+lxe: objectpath (--TR T1) 1.1816 msec/pass
+lxe: objectpath (--TR T2) 14.4675 msec/pass
+lxe: objectpath (--TR T4) 1.2276 msec/pass
-lxe: attributes_deep (--TR T1) 6.2900 msec/pass
-lxe: attributes_deep (--TR T2) 20.4713 msec/pass
-lxe: attributes_deep (--TR T4) 6.1679 msec/pass
+lxe: attributes_deep (--TR T1) 3.7086 msec/pass
+lxe: attributes_deep (--TR T2) 17.5436 msec/pass
+lxe: attributes_deep (--TR T4) 3.8407 msec/pass
-lxe: objectpath_deep (--TR T1) 1.3049 msec/pass
-lxe: objectpath_deep (--TR T2) 14.0815 msec/pass
-lxe: objectpath_deep (--TR T4) 1.3051 msec/pass
+lxe: objectpath_deep (--TR T1) 1.4980 msec/pass
+lxe: objectpath_deep (--TR T2) 14.7266 msec/pass
+lxe: objectpath_deep (--TR T4) 1.4834 msec/pass
</pre>
<p>Note, however, that parsing ObjectPath expressions is not for free either, so
this is most effective for frequently accessing the same element.</p>
subtrees and elements) to cache, you can trade memory usage against access
speed:</p>
<pre class="literal-block">
-lxe: attribute_cached (--TR T1) 3.1357 msec/pass
-lxe: attribute_cached (--TR T2) 15.8911 msec/pass
-lxe: attribute_cached (--TR T4) 2.9194 msec/pass
+lxe: attribute_cached (--TR T1) 1.9207 msec/pass
+lxe: attribute_cached (--TR T2) 15.6903 msec/pass
+lxe: attribute_cached (--TR T4) 1.8718 msec/pass
-lxe: attributes_deep_cached (--TR T1) 3.8984 msec/pass
-lxe: attributes_deep_cached (--TR T2) 16.8300 msec/pass
-lxe: attributes_deep_cached (--TR T4) 3.6936 msec/pass
+lxe: attributes_deep_cached (--TR T1) 2.6512 msec/pass
+lxe: attributes_deep_cached (--TR T2) 16.7937 msec/pass
+lxe: attributes_deep_cached (--TR T4) 2.5539 msec/pass
-lxe: objectpath_deep_cached (--TR T1) 0.7496 msec/pass
-lxe: objectpath_deep_cached (--TR T2) 12.3763 msec/pass
-lxe: objectpath_deep_cached (--TR T4) 0.7427 msec/pass
+lxe: objectpath_deep_cached (--TR T1) 0.8519 msec/pass
+lxe: objectpath_deep_cached (--TR T2) 13.9337 msec/pass
+lxe: objectpath_deep_cached (--TR T4) 0.8645 msec/pass
</pre>
<p>Things to note: you cannot currently use <tt class="docutils literal">weakref.WeakKeyDictionary</tt> objects
for this as lxml's element objects do not support weak references (which are
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Document loading and URL resolving</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="document-loading-and-url-resolving">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu current" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Document loading and URL resolving</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu current" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Document loading and URL resolving</h1>
<div class="contents topic" id="contents">
<p class="topic-title">Contents</p>
<span class="gp">>>> </span><span class="k">class</span> <span class="nc">DTDResolver</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">Resolver</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">resolve</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">context</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"Resolving URL '</span><span class="si">%s</span><span class="s2">'"</span> <span class="o">%</span> <span class="n">url</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Resolving URL '</span><span class="si">%s</span><span class="s2">'"</span> <span class="o">%</span> <span class="n">url</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">resolve_string</span><span class="p">(</span>
<span class="gp">... </span> <span class="s1">'<!ENTITY myentity "[resolved text: </span><span class="si">%s</span><span class="s1">]">'</span> <span class="o">%</span> <span class="n">url</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
</pre></div>
terminates if <tt class="docutils literal">resolve()</tt> returns the result of any of the above
<tt class="docutils literal"><span class="pre">resolve_*()</span></tt> methods.</p>
<p>Resolvers are registered local to a parser:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">load_dtd</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">load_dtd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">parser</span><span class="o">.</span><span class="n">resolvers</span><span class="o">.</span><span class="n">add</span><span class="p">(</span> <span class="n">DTDResolver</span><span class="p">()</span> <span class="p">)</span>
</pre></div>
<p>Note that we instantiate a parser that loads the DTD. This is not done by the
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">),</span> <span class="n">parser</span><span class="p">)</span>
<span class="go">Resolving URL 'MissingDTD.dtd'</span>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">[resolved text: MissingDTD.dtd]</span>
</pre></div>
<p>The entity in the document was correctly resolved by the generated DTD
<span class="gp">... </span><span class="s1"> '''</span> <span class="o">%</span> <span class="n">prefix</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">resolve</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">pubid</span><span class="p">,</span> <span class="n">context</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">if</span> <span class="n">url</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"Resolved url </span><span class="si">%s</span><span class="s2"> as prefix </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Resolved url </span><span class="si">%s</span><span class="s2"> as prefix </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="p">))</span>
<span class="gp">... </span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">resolve_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">result_xml</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
</pre></div>
<p>We demonstrate this in XSLT and use the following stylesheet as an example:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">honk_parser</span><span class="o">.</span><span class="n">resolvers</span><span class="o">.</span><span class="n">add</span><span class="p">(</span> <span class="n">PrefixResolver</span><span class="p">(</span><span class="s2">"hoi"</span><span class="p">)</span> <span class="p">)</span>
<span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">honk_doc</span><span class="p">)</span>
<span class="go">Resolved url hoi:test as prefix hoi</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
<span class="go"><?xml version="1.0"?></span>
<span class="go"><test>hoi-TEST</test></span>
</pre></div>
is resolved from within the stylesheet context:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">normal_doc</span><span class="p">)</span>
<span class="go">Resolved url hoi:test as prefix hoi</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
<span class="go"><?xml version="1.0"?></span>
<span class="go"><test>hoi-TEST</test></span>
</pre></div>
<span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">normal_doc</span><span class="p">)</span>
<span class="go">Resolved url hoi:test as prefix hoi</span>
-<span class="gp">>>> </span><span class="n">ac</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLTAccessControl</span><span class="p">(</span><span class="n">read_network</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">ac</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLTAccessControl</span><span class="p">(</span><span class="n">read_network</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">honk_doc</span><span class="p">,</span> <span class="n">access_control</span><span class="o">=</span><span class="n">ac</span><span class="p">)</span>
<span class="go">Resolved url honk:test as prefix honk</span>
<span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">normal_doc</span><span class="p">)</span>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Sax support</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="sax-support">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu current" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Sax support</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu current" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Sax support</h1>
<p>In this document we'll describe lxml's SAX support. lxml has support for
producing SAX events for an ElementTree or Element. lxml can also turn SAX
<span class="gp">>>> </span><span class="n">handler</span> <span class="o">=</span> <span class="n">lxml</span><span class="o">.</span><span class="n">sax</span><span class="o">.</span><span class="n">ElementTreeContentHandler</span><span class="p">()</span>
</pre></div>
<p>Now let's fire some SAX events at it:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">handler</span><span class="o">.</span><span class="n">startElementNS</span><span class="p">((</span><span class="bp">None</span><span class="p">,</span> <span class="s1">'a'</span><span class="p">),</span> <span class="s1">'a'</span><span class="p">,</span> <span class="p">{})</span>
-<span class="gp">>>> </span><span class="n">handler</span><span class="o">.</span><span class="n">startElementNS</span><span class="p">((</span><span class="bp">None</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">),</span> <span class="s1">'b'</span><span class="p">,</span> <span class="p">{(</span><span class="bp">None</span><span class="p">,</span> <span class="s1">'foo'</span><span class="p">):</span> <span class="s1">'bar'</span><span class="p">})</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">handler</span><span class="o">.</span><span class="n">startElementNS</span><span class="p">((</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'a'</span><span class="p">),</span> <span class="s1">'a'</span><span class="p">,</span> <span class="p">{})</span>
+<span class="gp">>>> </span><span class="n">handler</span><span class="o">.</span><span class="n">startElementNS</span><span class="p">((</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">),</span> <span class="s1">'b'</span><span class="p">,</span> <span class="p">{(</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'foo'</span><span class="p">):</span> <span class="s1">'bar'</span><span class="p">})</span>
<span class="gp">>>> </span><span class="n">handler</span><span class="o">.</span><span class="n">characters</span><span class="p">(</span><span class="s1">'Hello world'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="n">handler</span><span class="o">.</span><span class="n">endElementNS</span><span class="p">((</span><span class="bp">None</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">),</span> <span class="s1">'b'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="n">handler</span><span class="o">.</span><span class="n">endElementNS</span><span class="p">((</span><span class="bp">None</span><span class="p">,</span> <span class="s1">'a'</span><span class="p">),</span> <span class="s1">'a'</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">handler</span><span class="o">.</span><span class="n">endElementNS</span><span class="p">((</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">),</span> <span class="s1">'b'</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">handler</span><span class="o">.</span><span class="n">endElementNS</span><span class="p">((</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'a'</span><span class="p">),</span> <span class="s1">'a'</span><span class="p">)</span>
</pre></div>
<p>This constructs an equivalent tree. You can access it through the <tt class="docutils literal">etree</tt>
property of the handler:</p>
<span class="gp">... </span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="gp">... </span> <span class="bp">self</span><span class="o">.</span><span class="n">a_amount</span> <span class="o">=</span> <span class="mi">0</span>
<span class="gp">... </span> <span class="bp">self</span><span class="o">.</span><span class="n">b_amount</span> <span class="o">=</span> <span class="mi">0</span>
-<span class="gp">... </span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="bp">None</span>
+<span class="gp">... </span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="kc">None</span>
<span class="gp">...</span>
<span class="gp">... </span> <span class="k">def</span> <span class="nf">startElementNS</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">qname</span><span class="p">,</span> <span class="n">attributes</span><span class="p">):</span>
<span class="gp">... </span> <span class="n">uri</span><span class="p">,</span> <span class="n">localname</span> <span class="o">=</span> <span class="n">name</span>
</pre></div>
<p>PullDOM makes the result available through the <tt class="docutils literal">document</tt> attribute:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">dom</span> <span class="o">=</span> <span class="n">handler</span><span class="o">.</span><span class="n">document</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">dom</span><span class="o">.</span><span class="n">firstChild</span><span class="o">.</span><span class="n">localName</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">dom</span><span class="o">.</span><span class="n">firstChild</span><span class="o">.</span><span class="n">localName</span><span class="p">)</span>
<span class="go">a</span>
</pre></div>
</div>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
</head>
<body>
<h1>Sitemap of lxml.de - Processing XML and HTML with Python</h1>
- <div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li></ul><li><a href="http://lxml.de/files/">Download files</a></li></div></div></body>
+ <div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li></ul><li><a href="http://lxml.de/files/">Download files</a></li></div></div></body>
</html>
\ No newline at end of file
border: 2px solid darkred;
color: darkgreen;
line-height: 1em;
- margin: 1ex;
+ margin: 3ex 1ex 1ex;
padding: 3pt;
}
position: fixed;
}
+div.admonition {
+ border: solid 1px;
+ border-radius: 1ex;
+ margin: 0.5ex;
+ padding: 0.5ex 1.5ex 0.5ex 1.5ex;
+ background: lightyellow;
+}
+
+div.admonition > .admonition-title {
+ background: yellow;
+}
+
code {
color: Black;
background-color: #f0f0f0;
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>The lxml.etree Tutorial</title>
<meta name="author" content="Stefan Behnel" />
<meta content="The lxml tutorial on XML processing with Python" name="description" />
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="the-lxml-etree-tutorial">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu current" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">The lxml.etree Tutorial</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu current" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">The lxml.etree Tutorial</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
of) the following import chain as a fall-back to the original ElementTree:</p>
<div class="syntax"><pre><span></span><span class="k">try</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
- <span class="k">print</span><span class="p">(</span><span class="s2">"running with lxml.etree"</span><span class="p">)</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">"running with lxml.etree"</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># Python 2.5</span>
- <span class="kn">import</span> <span class="nn">xml.etree.cElementTree</span> <span class="kn">as</span> <span class="nn">etree</span>
- <span class="k">print</span><span class="p">(</span><span class="s2">"running with cElementTree on Python 2.5+"</span><span class="p">)</span>
+ <span class="kn">import</span> <span class="nn">xml.etree.cElementTree</span> <span class="k">as</span> <span class="nn">etree</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">"running with cElementTree on Python 2.5+"</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># Python 2.5</span>
- <span class="kn">import</span> <span class="nn">xml.etree.ElementTree</span> <span class="kn">as</span> <span class="nn">etree</span>
- <span class="k">print</span><span class="p">(</span><span class="s2">"running with ElementTree on Python 2.5+"</span><span class="p">)</span>
+ <span class="kn">import</span> <span class="nn">xml.etree.ElementTree</span> <span class="k">as</span> <span class="nn">etree</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">"running with ElementTree on Python 2.5+"</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># normal cElementTree install</span>
- <span class="kn">import</span> <span class="nn">cElementTree</span> <span class="kn">as</span> <span class="nn">etree</span>
- <span class="k">print</span><span class="p">(</span><span class="s2">"running with cElementTree"</span><span class="p">)</span>
+ <span class="kn">import</span> <span class="nn">cElementTree</span> <span class="k">as</span> <span class="nn">etree</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">"running with cElementTree"</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># normal ElementTree install</span>
- <span class="kn">import</span> <span class="nn">elementtree.ElementTree</span> <span class="kn">as</span> <span class="nn">etree</span>
- <span class="k">print</span><span class="p">(</span><span class="s2">"running with ElementTree"</span><span class="p">)</span>
+ <span class="kn">import</span> <span class="nn">elementtree.ElementTree</span> <span class="k">as</span> <span class="nn">etree</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">"running with ElementTree"</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
- <span class="k">print</span><span class="p">(</span><span class="s2">"Failed to import ElementTree from any known place"</span><span class="p">)</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">"Failed to import ElementTree from any known place"</span><span class="p">)</span>
</pre></div>
<p>To aid in writing portable code, this tutorial makes it clear in the examples
which part of the presented API is an extension of <tt class="docutils literal">lxml.etree</tt> over the
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"root"</span><span class="p">)</span>
</pre></div>
<p>The XML tag name of elements is accessed through the <tt class="docutils literal">tag</tt> property:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">root</span>
</pre></div>
<p>Elements are organised in an XML tree structure. To create child elements and
<span class="gp">>>> </span><span class="n">child3</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"child3"</span><span class="p">)</span>
</pre></div>
<p>To see that this is really XML, you can serialise the tree you have created:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root></span>
<span class="go"> <child1/></span>
<span class="go"> <child2/></span>
elements mimic the behaviour of normal Python lists as closely as
possible:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">child</span> <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">child1</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">3</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="c1"># lxml.etree only!</span>
<span class="gp">>>> </span><span class="n">children</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">child1</span>
<span class="go">child2</span>
<span class="go">child3</span>
<span class="gp">>>> </span><span class="n">start</span> <span class="o">=</span> <span class="n">root</span><span class="p">[:</span><span class="mi">1</span><span class="p">]</span>
<span class="gp">>>> </span><span class="n">end</span> <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">:]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">start</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">start</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">child0</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">end</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">end</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">child3</span>
</pre></div>
<p>Prior to ElementTree 1.3 and lxml 2.0, you could also check the truth value of
an Element to see if it has children, i.e. if the list of children is empty:</p>
<div class="syntax"><pre><span></span><span class="k">if</span> <span class="n">root</span><span class="p">:</span> <span class="c1"># this no longer works!</span>
- <span class="k">print</span><span class="p">(</span><span class="s2">"The root element has children"</span><span class="p">)</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">"The root element has children"</span><span class="p">)</span>
</pre></div>
<p>This is no longer supported as people tend to expect that a "something"
evaluates to True and expect Elements to be "something", may they have
children or not. So, many users find it surprising that any Element
would evaluate to False in an if-statement like the above. Instead,
use <tt class="docutils literal">len(element)</tt>, which is both more explicit and less error prone.</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">iselement</span><span class="p">(</span><span class="n">root</span><span class="p">))</span> <span class="c1"># test if it's some kind of Element</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">iselement</span><span class="p">(</span><span class="n">root</span><span class="p">))</span> <span class="c1"># test if it's some kind of Element</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="p">):</span> <span class="c1"># test if it has children</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"The root element has children"</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"The root element has children"</span><span class="p">)</span>
<span class="go">The root element has children</span>
</pre></div>
<p>There is another important case where the behaviour of Elements in lxml
(in 2.0 and later) deviates from that of lists and from that of the
original ElementTree (prior to version 1.3 or Python 2.7/3.2):</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">child0</span>
<span class="go">child1</span>
<span class="go">child2</span>
<span class="go">child3</span>
<span class="gp">>>> </span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># this moves the element in lxml.etree!</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">child3</span>
<span class="go">child1</span>
<span class="go">child2</span>
<span class="gp">>>> </span><span class="n">element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"neu"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">element</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="n">deepcopy</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">child1</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span> <span class="n">c</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">root</span> <span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span> <span class="n">c</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">root</span> <span class="p">])</span>
<span class="go">['child3', 'child1', 'child2']</span>
</pre></div>
<p>The siblings (or neighbours) of an element are accessed as next and previous
</pre></div>
<p>Attributes are just unordered name-value pairs, so a very convenient way
of dealing with them is through the dictionary-like interface of Elements:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"interesting"</span><span class="p">))</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"interesting"</span><span class="p">))</span>
<span class="go">totally</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"hello"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"hello"</span><span class="p">))</span>
<span class="go">None</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"hello"</span><span class="p">,</span> <span class="s2">"Huhu"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"hello"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"hello"</span><span class="p">))</span>
<span class="go">Huhu</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="go">['hello', 'interesting']</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1"> = </span><span class="si">%r</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1"> = </span><span class="si">%r</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
<span class="go">hello = 'Huhu'</span>
<span class="go">interesting = 'totally'</span>
</pre></div>
you can use the <tt class="docutils literal">attrib</tt> property:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">attributes</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">attrib</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">attributes</span><span class="p">[</span><span class="s2">"interesting"</span><span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">attributes</span><span class="p">[</span><span class="s2">"interesting"</span><span class="p">])</span>
<span class="go">totally</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"no-such-attribute"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"no-such-attribute"</span><span class="p">))</span>
<span class="go">None</span>
<span class="gp">>>> </span><span class="n">attributes</span><span class="p">[</span><span class="s2">"hello"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Guten Tag"</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">attributes</span><span class="p">[</span><span class="s2">"hello"</span><span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">attributes</span><span class="p">[</span><span class="s2">"hello"</span><span class="p">])</span>
<span class="go">Guten Tag</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"hello"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"hello"</span><span class="p">))</span>
<span class="go">Guten Tag</span>
</pre></div>
<p>Note that <tt class="docutils literal">attrib</tt> is a dict-like object backed by the Element itself.
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s2">"root"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s2">"TEXT"</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">TEXT</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<tt class="docutils literal">tostring()</tt> function accepts the keyword argument <tt class="docutils literal">with_tail</tt>:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">br</span><span class="p">)</span>
<span class="go">b'<br/>TAIL'</span>
-<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">br</span><span class="p">,</span> <span class="n">with_tail</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> <span class="c1"># lxml.etree only!</span>
+<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">br</span><span class="p">,</span> <span class="n">with_tail</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="c1"># lxml.etree only!</span>
<span class="go">b'<br/>'</span>
</pre></div>
<p>If you want to read <em>only</em> the text, i.e. without any intermediate
<h2>Using XPath to find text</h2>
<p>Another way to extract the text content of a tree is <a class="reference external" href="xpathxslt.html#xpath">XPath</a>, which
also allows you to extract the separate text chunks into a list:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">html</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s2">"string()"</span><span class="p">))</span> <span class="c1"># lxml.etree only!</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">html</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s2">"string()"</span><span class="p">))</span> <span class="c1"># lxml.etree only!</span>
<span class="go">TEXTTAIL</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">html</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s2">"//text()"</span><span class="p">))</span> <span class="c1"># lxml.etree only!</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">html</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s2">"//text()"</span><span class="p">))</span> <span class="c1"># lxml.etree only!</span>
<span class="go">['TEXT', 'TAIL']</span>
</pre></div>
<p>If you want to use this more often, you can wrap it in a function:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">build_text_list</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s2">"//text()"</span><span class="p">)</span> <span class="c1"># lxml.etree only!</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">build_text_list</span><span class="p">(</span><span class="n">html</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">build_text_list</span><span class="p">(</span><span class="n">html</span><span class="p">))</span>
<span class="go">['TEXT', 'TAIL']</span>
</pre></div>
<p>Note that a string result returned by XPath is a special 'smart'
from through its <tt class="docutils literal">getparent()</tt> method, just as you would with
Elements:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">texts</span> <span class="o">=</span> <span class="n">build_text_list</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="go">TEXT</span>
<span class="gp">>>> </span><span class="n">parent</span> <span class="o">=</span> <span class="n">texts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">parent</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">parent</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">body</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="go">TAIL</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">br</span>
</pre></div>
<p>You can also find out if it's normal text content or tail text:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">is_text</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">is_text</span><span class="p">)</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">is_text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">is_text</span><span class="p">)</span>
<span class="go">False</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">is_tail</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">is_tail</span><span class="p">)</span>
<span class="go">True</span>
</pre></div>
<p>While this works for the results of the <tt class="docutils literal">text()</tt> function, lxml will
not tell you the origin of a string value that was constructed by the
XPath functions <tt class="docutils literal">string()</tt> or <tt class="docutils literal">concat()</tt>:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">stringify</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s2">"string()"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">stringify</span><span class="p">(</span><span class="n">html</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">stringify</span><span class="p">(</span><span class="n">html</span><span class="p">))</span>
<span class="go">TEXTTAIL</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">stringify</span><span class="p">(</span><span class="n">html</span><span class="p">)</span><span class="o">.</span><span class="n">getparent</span><span class="p">())</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">stringify</span><span class="p">(</span><span class="n">html</span><span class="p">)</span><span class="o">.</span><span class="n">getparent</span><span class="p">())</span>
<span class="go">None</span>
</pre></div>
</div>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"child"</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s2">"Child 2"</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"another"</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s2">"Child 3"</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root></span>
<span class="go"> <child>Child 1</child></span>
<span class="go"> <child>Child 2</child></span>
<span class="go"></root></span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">():</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
<span class="go">root - None</span>
<span class="go">child - Child 1</span>
<span class="go">child - Child 2</span>
<tt class="docutils literal">iter()</tt> to have it filter for you. Starting with lxml 3.0, you can also
pass more than one tag to intercept on multiple tags during iteration.</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s2">"child"</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
<span class="go">child - Child 1</span>
<span class="go">child - Child 2</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s2">"another"</span><span class="p">,</span> <span class="s2">"child"</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
<span class="go">child - Child 1</span>
<span class="go">child - Child 2</span>
<span class="go">another - Child 3</span>
<span class="gp">>>> </span><span class="n">root</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">Comment</span><span class="p">(</span><span class="s2">"some comment"</span><span class="p">))</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">():</span>
-<span class="gp">... </span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">):</span> <span class="c1"># or 'str' in Python 3</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span> <span class="c1"># or 'str' in Python 3</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
<span class="gp">... </span> <span class="k">else</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"SPECIAL: </span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"SPECIAL: </span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
<span class="go">root - None</span>
<span class="go">child - Child 1</span>
<span class="go">child - Child 2</span>
<span class="go">SPECIAL: <!--some comment--> - some comment</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">tag</span><span class="o">=</span><span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
<span class="go">root - None</span>
<span class="go">child - Child 1</span>
<span class="go">child - Child 2</span>
<span class="go">another - Child 3</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">tag</span><span class="o">=</span><span class="n">etree</span><span class="o">.</span><span class="n">Entity</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">&#234;</span>
</pre></div>
<p>Note that passing a wildcard <tt class="docutils literal">"*"</tt> tag name will also yield all
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="go">b'<root><a><b/></a></root>'</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">xml_declaration</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">xml_declaration</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><?xml version='1.0' encoding='ASCII'?></span>
<span class="go"><root><a><b/></a></root></span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'iso-8859-1'</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'iso-8859-1'</span><span class="p">))</span>
<span class="go"><?xml version='1.0' encoding='iso-8859-1'?></span>
<span class="go"><root><a><b/></a></root></span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><root></span>
<span class="go"> <a></span>
<span class="go"> <b/></span>
whitespace indentation to the tree before serialising it, using the
<tt class="docutils literal">indent()</tt> function (added in lxml 4.5):</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s1">'<root><a><b/></span><span class="se">\n</span><span class="s1"></a></root>'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go"><root><a><b/></span>
<span class="go"></a></root></span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go"><root></span>
<span class="go"> <a></span>
<span class="go"> <b/></span>
<span class="go">'\n '</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">space</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go"><root></span>
<span class="go"> <a></span>
<span class="go"> <b/></span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s1">'html'</span><span class="p">)</span>
<span class="go">b'<html><head></head><body><p>Hello<br>World</p></body></html>'</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s1">'html'</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s1">'html'</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><html></span>
<span class="go"><head></head></span>
<span class="go"><body><p>Hello<br>World</p></body></span>
<span class="gp">... </span><span class="s1">'''</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementTree</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span><span class="o">.</span><span class="n">xml_version</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span><span class="o">.</span><span class="n">xml_version</span><span class="p">)</span>
<span class="go">1.0</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span><span class="o">.</span><span class="n">doctype</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span><span class="o">.</span><span class="n">doctype</span><span class="p">)</span>
<span class="go"><!DOCTYPE root SYSTEM "test"></span>
<span class="gp">>>> </span><span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span><span class="o">.</span><span class="n">public_id</span> <span class="o">=</span> <span class="s1">'-//W3C//DTD XHTML 1.0 Transitional//EN'</span>
<span class="gp">>>> </span><span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span><span class="o">.</span><span class="n">system_url</span> <span class="o">=</span> <span class="s1">'file://local.dtd'</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span><span class="o">.</span><span class="n">doctype</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span><span class="o">.</span><span class="n">doctype</span><span class="p">)</span>
<span class="go"><!DOCTYPE root PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "file://local.dtd"></span>
</pre></div>
<p>An <tt class="docutils literal">ElementTree</tt> is also what you get back when you call the
serialises as a complete document, as opposed to a single <tt class="docutils literal">Element</tt>.
This includes top-level processing instructions and comments, as well
as a DOCTYPE and other DTD content in the document:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">))</span> <span class="c1"># lxml 1.3.4 and later</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">))</span> <span class="c1"># lxml 1.3.4 and later</span>
<span class="go"><!DOCTYPE root PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "file://local.dtd" [</span>
<span class="go"><!ENTITY tasty "parsnips"></span>
<span class="go">]></span>
<p>In the original xml.etree.ElementTree implementation and in lxml
up to 1.3.3, the output looks the same as when serialising only
the root Element:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()))</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()))</span>
<span class="go"><root></span>
<span class="go"> <a>parsnips</a></span>
<span class="go"></root></span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">some_xml_data</span> <span class="o">=</span> <span class="s2">"<root>data</root>"</span>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">some_xml_data</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">root</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="go">b'<root>data</root>'</span>
<p>The <tt class="docutils literal">XML()</tt> function behaves like the <tt class="docutils literal">fromstring()</tt> function, but is
commonly used to write XML literals right into the source:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<root>data</root>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">root</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="go">b'<root>data</root>'</span>
<p>Note that <tt class="docutils literal">parse()</tt> returns an ElementTree object, not an Element object as
the string parser functions:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">root</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="go">b'<root>data</root>'</span>
<h2>Parser objects</h2>
<p>By default, <tt class="docutils literal">lxml.etree</tt> uses a standard parser with a default setup. If
you want to configure the parser, you can create a new instance:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="c1"># lxml.etree only!</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># lxml.etree only!</span>
</pre></div>
<p>This creates a parser that removes empty text between tags while parsing,
which can reduce the size of the tree and avoid dangling tail text if you know
content at leaf elements tends to be data content (even if blank). You can
easily remove it in an additional step by traversing the tree:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s2">"*"</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">if</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span>
-<span class="gp">... </span> <span class="n">element</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="bp">None</span>
+<span class="gp">... </span> <span class="k">if</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span>
+<span class="gp">... </span> <span class="n">element</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="kc">None</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="go">b'<root><a/><b/></root>'</span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">some_file_like</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">(</span><span class="sa">b</span><span class="s2">"<root><a>data</a></root>"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">event</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">some_file_like</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">, </span><span class="si">%4s</span><span class="s2">, </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">, </span><span class="si">%4s</span><span class="s2">, </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
<span class="go">end, a, data</span>
<span class="go">end, root, None</span>
</pre></div>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">event</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">some_file_like</span><span class="p">,</span>
<span class="gp">... </span> <span class="n">events</span><span class="o">=</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">)):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%5s</span><span class="s2">, </span><span class="si">%4s</span><span class="s2">, </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%5s</span><span class="s2">, </span><span class="si">%4s</span><span class="s2">, </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
<span class="go">start, root, None</span>
<span class="go">start, a, data</span>
<span class="go"> end, a, data</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">event</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">some_file_like</span><span class="p">):</span>
<span class="gp">... </span> <span class="k">if</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span> <span class="o">==</span> <span class="s1">'b'</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">elif</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span> <span class="o">==</span> <span class="s1">'a'</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"** cleaning up the subtree"</span><span class="p">)</span>
-<span class="gp">... </span> <span class="n">element</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span><span class="n">keep_tail</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"** cleaning up the subtree"</span><span class="p">)</span>
+<span class="gp">... </span> <span class="n">element</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span><span class="n">keep_tail</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="go">data</span>
<span class="go">** cleaning up the subtree</span>
<span class="go">None</span>
<span class="gp">... </span><span class="s1"></root>'''</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">xml_file</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="s1">'a'</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1"> -- </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">findtext</span><span class="p">(</span><span class="s1">'b'</span><span class="p">),</span> <span class="n">element</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
-<span class="gp">... </span> <span class="n">element</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span><span class="n">keep_tail</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1"> -- </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">findtext</span><span class="p">(</span><span class="s1">'b'</span><span class="p">),</span> <span class="n">element</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span> <span class="n">element</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span><span class="n">keep_tail</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="go">ABC -- abc</span>
<span class="go">MORE DATA -- more data</span>
<span class="go">XYZ -- xyz</span>
<span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">parser_target</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">events</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s1">'<root test="true"/>'</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
<span class="go">1</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">event</span> <span class="ow">in</span> <span class="n">events</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'event: </span><span class="si">%s</span><span class="s1"> - tag: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">event</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'event: </span><span class="si">%s</span><span class="s1"> - tag: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">event</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
<span class="gp">... </span> <span class="k">for</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">event</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">' * </span><span class="si">%s</span><span class="s1"> = </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">' * </span><span class="si">%s</span><span class="s1"> = </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
<span class="go">event: start - tag: root</span>
<span class="go"> * test = true</span>
</pre></div>
should take care that the <tt class="docutils literal">.close()</tt> method really resets the
target to a usable state (also in the case of an error!).</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">events</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s1">'<root test="true"/>'</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
<span class="go">2</span>
<span class="gp">>>> </span><span class="n">events</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s1">'<root test="true"/>'</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
<span class="go">3</span>
<span class="gp">>>> </span><span class="n">events</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s1">'<root test="true"/>'</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
<span class="go">4</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">event</span> <span class="ow">in</span> <span class="n">events</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'event: </span><span class="si">%s</span><span class="s1"> - tag: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">event</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'event: </span><span class="si">%s</span><span class="s1"> - tag: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">event</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
<span class="gp">... </span> <span class="k">for</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">event</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">' * </span><span class="si">%s</span><span class="s1"> = </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">' * </span><span class="si">%s</span><span class="s1"> = </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
<span class="go">event: start - tag: root</span>
<span class="go"> * test = true</span>
</pre></div>
<span class="gp">>>> </span><span class="n">body</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">xhtml</span><span class="p">,</span> <span class="s2">"{http://www.w3.org/1999/xhtml}body"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">body</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s2">"Hello World"</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">xhtml</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">xhtml</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><html:html xmlns:html="http://www.w3.org/1999/xhtml"></span>
<span class="go"> <html:body>Hello World</html:body></span>
<span class="go"></html:html></span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">XHTML_NAMESPACE</span> <span class="o">=</span> <span class="s2">"http://www.w3.org/1999/xhtml"</span>
<span class="gp">>>> </span><span class="n">XHTML</span> <span class="o">=</span> <span class="s2">"{</span><span class="si">%s</span><span class="s2">}"</span> <span class="o">%</span> <span class="n">XHTML_NAMESPACE</span>
-<span class="gp">>>> </span><span class="n">NSMAP</span> <span class="o">=</span> <span class="p">{</span><span class="bp">None</span> <span class="p">:</span> <span class="n">XHTML_NAMESPACE</span><span class="p">}</span> <span class="c1"># the default namespace (no prefix)</span>
+<span class="gp">>>> </span><span class="n">NSMAP</span> <span class="o">=</span> <span class="p">{</span><span class="kc">None</span> <span class="p">:</span> <span class="n">XHTML_NAMESPACE</span><span class="p">}</span> <span class="c1"># the default namespace (no prefix)</span>
<span class="gp">>>> </span><span class="n">xhtml</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="n">XHTML</span> <span class="o">+</span> <span class="s2">"html"</span><span class="p">,</span> <span class="n">nsmap</span><span class="o">=</span><span class="n">NSMAP</span><span class="p">)</span> <span class="c1"># lxml only!</span>
<span class="gp">>>> </span><span class="n">body</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">xhtml</span><span class="p">,</span> <span class="n">XHTML</span> <span class="o">+</span> <span class="s2">"body"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">body</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s2">"Hello World"</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">xhtml</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">xhtml</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><html xmlns="http://www.w3.org/1999/xhtml"></span>
<span class="go"> <body>Hello World</body></span>
<span class="go"></html></span>
<p>You can also use the <tt class="docutils literal">QName</tt> helper class to build or split qualified
tag names:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">tag</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">QName</span><span class="p">(</span><span class="s1">'http://www.w3.org/1999/xhtml'</span><span class="p">,</span> <span class="s1">'html'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">localname</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">localname</span><span class="p">)</span>
<span class="go">html</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">namespace</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">namespace</span><span class="p">)</span>
<span class="go">http://www.w3.org/1999/xhtml</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">{http://www.w3.org/1999/xhtml}html</span>
<span class="gp">>>> </span><span class="n">tag</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">QName</span><span class="p">(</span><span class="s1">'{http://www.w3.org/1999/xhtml}html'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">localname</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">localname</span><span class="p">)</span>
<span class="go">html</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">namespace</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">namespace</span><span class="p">)</span>
<span class="go">http://www.w3.org/1999/xhtml</span>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s1">'{http://www.w3.org/1999/xhtml}html'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">tag</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">QName</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">localname</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">localname</span><span class="p">)</span>
<span class="go">html</span>
<span class="gp">>>> </span><span class="n">tag</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">QName</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s1">'script'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">{http://www.w3.org/1999/xhtml}script</span>
<span class="gp">>>> </span><span class="n">tag</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">QName</span><span class="p">(</span><span class="s1">'{http://www.w3.org/1999/xhtml}html'</span><span class="p">,</span> <span class="s1">'script'</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tag</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">{http://www.w3.org/1999/xhtml}script</span>
</pre></div>
<p>lxml.etree allows you to look up the current namespaces defined for a
element.</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">body</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">XHTML</span> <span class="o">+</span> <span class="s2">"bgcolor"</span><span class="p">,</span> <span class="s2">"#CCFFAA"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">xhtml</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">xhtml</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><html xmlns="http://www.w3.org/1999/xhtml"></span>
<span class="go"> <body xmlns:html="http://www.w3.org/1999/xhtml" html:bgcolor="#CCFFAA">Hello World</body></span>
<span class="go"></html></span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">body</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"bgcolor"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">body</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"bgcolor"</span><span class="p">))</span>
<span class="go">None</span>
<span class="gp">>>> </span><span class="n">body</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">XHTML</span> <span class="o">+</span> <span class="s2">"bgcolor"</span><span class="p">)</span>
<span class="go">'#CCFFAA'</span>
<span class="gp">... </span> <span class="s2">"//{</span><span class="si">%s</span><span class="s2">}body"</span> <span class="o">%</span> <span class="n">XHTML_NAMESPACE</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">results</span> <span class="o">=</span> <span class="n">find_xhtml_body</span><span class="p">(</span><span class="n">xhtml</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://www.w3.org/1999/xhtml}body</span>
</pre></div>
<p>For convenience, you can use <tt class="docutils literal">"*"</tt> wildcards in all iterators of <tt class="docutils literal">lxml.etree</tt>,
both for tag names and namespaces:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'*'</span><span class="p">):</span> <span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span> <span class="c1"># any element</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'*'</span><span class="p">):</span> <span class="nb">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span> <span class="c1"># any element</span>
<span class="go">{http://www.w3.org/1999/xhtml}html</span>
<span class="go">{http://www.w3.org/1999/xhtml}body</span>
-<span class="gp">>>> </span><span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'{http://www.w3.org/1999/xhtml}*'</span><span class="p">):</span> <span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'{http://www.w3.org/1999/xhtml}*'</span><span class="p">):</span> <span class="nb">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://www.w3.org/1999/xhtml}html</span>
<span class="go">{http://www.w3.org/1999/xhtml}body</span>
-<span class="gp">>>> </span><span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'{*}body'</span><span class="p">):</span> <span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'{*}body'</span><span class="p">):</span> <span class="nb">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{http://www.w3.org/1999/xhtml}body</span>
</pre></div>
<p>To look for elements that do not have a namespace, either use the
<span class="go">['{http://www.w3.org/1999/xhtml}body']</span>
<span class="gp">>>> </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'body'</span><span class="p">)</span> <span class="p">]</span>
<span class="go">[]</span>
-<span class="gp">>>> </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'{}body'</span><span class="p">)</span> <span class="p">]</span>
+<span class="gp">>>> </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'</span><span class="si">{}</span><span class="s1">body'</span><span class="p">)</span> <span class="p">]</span>
<span class="go">[]</span>
-<span class="gp">>>> </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'{}*'</span><span class="p">)</span> <span class="p">]</span>
+<span class="gp">>>> </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">xhtml</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s1">'</span><span class="si">{}</span><span class="s1">*'</span><span class="p">)</span> <span class="p">]</span>
<span class="go">[]</span>
</pre></div>
</div>
<span class="gp">... </span> <span class="p">)</span>
<span class="gp">... </span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><html></span>
<span class="go"> <head></span>
<span class="go"> <title>This is a sample document</title></span>
<span class="gp">... </span> <span class="p">)</span>
<span class="gp">... </span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">my_doc</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">my_doc</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><p:doc xmlns:p="http://my.de/fault/namespace"></span>
<span class="go"> <p:title>The dog and the hog</p:title></span>
<span class="go"> <p:section></span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<root><a x='123'>aText<b/><c/><b/></a></root>"</span><span class="p">)</span>
</pre></div>
<p>Find a child of an Element:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"b"</span><span class="p">))</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"b"</span><span class="p">))</span>
<span class="go">None</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"a"</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"a"</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">a</span>
</pre></div>
<p>Find an Element anywhere in the tree:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">".//b"</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">".//b"</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
<span class="gp">>>> </span><span class="p">[</span> <span class="n">b</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterfind</span><span class="p">(</span><span class="s2">".//b"</span><span class="p">)</span> <span class="p">]</span>
<span class="go">['b', 'b']</span>
</pre></div>
<p>Find Elements with a certain attribute:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s2">".//a[@x]"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s2">".//a[@x]"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">a</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s2">".//a[@y]"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s2">".//a[@y]"</span><span class="p">))</span>
<span class="go">[]</span>
</pre></div>
<p>In lxml 3.4, there is a new helper to generate a structural ElementPath
expression for an Element:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementTree</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getelementpath</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getelementpath</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
<span class="go">a/b[1]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getelementpath</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getelementpath</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
<span class="go">a/c</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getelementpath</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getelementpath</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span>
<span class="go">a/b[2]</span>
<span class="gp">>>> </span><span class="n">tree</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getelementpath</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span> <span class="o">==</span> <span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
<span class="go">True</span>
<p>The <tt class="docutils literal">.iter()</tt> method is a special case that only finds specific tags
in the tree by their name, not based on a path. That means that the
following commands are equivalent in the success case:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">".//b"</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">".//b"</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">iterfind</span><span class="p">(</span><span class="s2">".//b"</span><span class="p">))</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">iterfind</span><span class="p">(</span><span class="s2">".//b"</span><span class="p">))</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s2">"b"</span><span class="p">))</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s2">"b"</span><span class="p">))</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
</pre></div>
<p>Note that the <tt class="docutils literal">.find()</tt> method simply returns None if no match is found,
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Validation with lxml</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="validation-with-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu current" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Validation with lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu current" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">Validation with lxml</h1>
<p>Apart from the built-in DTD support in parsers, lxml currently supports three
schema languages: <a class="reference external" href="http://en.wikipedia.org/wiki/Document_Type_Definition">DTD</a>, <a class="reference external" href="http://www.relaxng.org/">Relax NG</a> and <a class="reference external" href="http://www.w3.org/XML/Schema">XML Schema</a>. All three provide
a DTD or an XML schema. The DTD is retrieved automatically based on
the DOCTYPE of the parsed document. All you have to do is use a
parser that has DTD validation enabled:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">dtd_validation</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">dtd_validation</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
<p>Obviously, a request for validation enables the DTD loading feature.
There are two other options that enable loading the DTD, but that do
</pre></div>
<p>Now you can use it to validate documents:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<b/>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">dtd</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">dtd</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<b><a/></b>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">dtd</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">dtd</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
<span class="go">False</span>
</pre></div>
<p>The reason for the validation failure can be found in the error log:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">dtd</span><span class="o">.</span><span class="n">error_log</span><span class="o">.</span><span class="n">filter_from_errors</span><span class="p">()[</span><span class="mi">0</span><span class="p">])</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">dtd</span><span class="o">.</span><span class="n">error_log</span><span class="o">.</span><span class="n">filter_from_errors</span><span class="p">()[</span><span class="mi">0</span><span class="p">])</span>
<span class="go"><string>:1:0:ERROR:VALID:DTD_NOT_EMPTY: Element b was declared EMPTY this one has content</span>
</pre></div>
<p>As an alternative to parsing from a file, you can use the
<tt class="docutils literal">iterelements</tt> provides an iterator over the element declarations:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">dtd</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">DTD</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="s1">'<!ELEMENT a EMPTY><!ELEMENT b EMPTY>'</span><span class="p">))</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">dtd</span><span class="o">.</span><span class="n">iterelements</span><span class="p">():</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="go">a</span>
<span class="go">b</span>
</pre></div>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">invalid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s1">'<a><c></c></a>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">doc2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">invalid</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">if</span> <span class="ow">not</span> <span class="n">relaxng</span><span class="p">(</span><span class="n">doc2</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"invalid!"</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"invalid!"</span><span class="p">)</span>
<span class="go">invalid!</span>
</pre></div>
<p>If you prefer getting an exception when validating, you can use the
look up the error log of the validation process and check it for relevant
messages:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">log</span> <span class="o">=</span> <span class="n">relaxng</span><span class="o">.</span><span class="n">error_log</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">log</span><span class="o">.</span><span class="n">last_error</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">log</span><span class="o">.</span><span class="n">last_error</span><span class="p">)</span>
<span class="go"><string>:1:0:ERROR:RELAXNGV:RELAXNG_ERR_ELEMWRONG: Did not expect element c there</span>
</pre></div>
<p>You can see that the error (ERROR) happened during RelaxNG validation
(RELAXNGV). The message then tells you what went wrong. You can also
look at the error domain and its type directly:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">error</span> <span class="o">=</span> <span class="n">log</span><span class="o">.</span><span class="n">last_error</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">domain_name</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">domain_name</span><span class="p">)</span>
<span class="go">RELAXNGV</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">type_name</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">type_name</span><span class="p">)</span>
<span class="go">RELAXNG_ERR_ELEMWRONG</span>
</pre></div>
<p>Note that this error log is local to the RelaxNG object. It will only
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">invalid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s1">'<a><c></c></a>'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">doc2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">invalid</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">if</span> <span class="ow">not</span> <span class="n">xmlschema</span><span class="p">(</span><span class="n">doc2</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"invalid!"</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"invalid!"</span><span class="p">)</span>
<span class="go">invalid!</span>
</pre></div>
<p>If you prefer getting an exception when validating, you can use the
<p>Error reporting works as for the RelaxNG class:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">log</span> <span class="o">=</span> <span class="n">xmlschema</span><span class="o">.</span><span class="n">error_log</span>
<span class="gp">>>> </span><span class="n">error</span> <span class="o">=</span> <span class="n">log</span><span class="o">.</span><span class="n">last_error</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">domain_name</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">domain_name</span><span class="p">)</span>
<span class="go">SCHEMASV</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">type_name</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">type_name</span><span class="p">)</span>
<span class="go">SCHEMAV_ELEMENT_CONTENT</span>
</pre></div>
<p>If you were to print this log entry, you would get something like the
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">is_valid</span> <span class="o">=</span> <span class="n">isoschematron</span><span class="o">.</span><span class="n">Schematron</span><span class="p">(</span><span class="n">sct_doc</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">if</span> <span class="ow">not</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">doc</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"invalid!"</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"invalid!"</span><span class="p">)</span>
<span class="go">invalid!</span>
</pre></div>
<p>Built on a pure-xslt implementation, the actual validator is created as an
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">is_valid</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Schematron</span><span class="p">(</span><span class="n">sct_doc</span><span class="p">)</span>
<span class="gp">>>> </span><span class="k">if</span> <span class="ow">not</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">doc</span><span class="p">):</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"invalid!"</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"invalid!"</span><span class="p">)</span>
<span class="go">invalid!</span>
</pre></div>
<p>Note that libxml2 restricts error reporting to the parsing step (when creating
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>XPath and XSLT with lxml</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
</script><meta name="viewport" content="width=device-width, initial-scale=1" /></head>
<body onclick="hide_menu()">
<div class="document" id="xpath-and-xslt-with-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu current" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 3-menu"><li class="menu title"><a href="changes-4.6.3.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">XPath and XSLT with lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#project-income-report">Project income report</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="apidoc lxml-menu"><li class="menu title"><a href="apidoc/lxml.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu current" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 6 4-menu"><li class="menu title"><a href="changes-4.6.4.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><div class="banner"><div class="banner_image"><img src="python-xml-title.png" /></div><div class="banner_link"><a href="index.html#support-the-project">Like the tool? <br class="first" />Help making it better! <br class="second" />Your donation helps!</a></div></div><h1 class="title">XPath and XSLT with lxml</h1>
<p>lxml supports XPath 1.0, XSLT 1.0 and the EXSLT extensions through
libxml2 and libxslt in a standards compliant way.</p>
comparison</a> to learn when to use which. Their semantics when used on
Elements and ElementTrees are the same as for the <tt class="docutils literal">xpath()</tt> method described
here.</p>
-<p>Note that the <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods are usually faster than the full-blown XPath
-support. They also support incremental tree processing through the <tt class="docutils literal">.iterfind()</tt>
-method, whereas XPath always collects all results before returning them.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">The <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods are usually <em>faster</em> than the full-blown XPath
+support. They also support incremental tree processing through the
+<tt class="docutils literal">.iterfind()</tt> method, whereas XPath always collects all results before
+returning them. They are therefore recommended over XPath for both speed
+and memory reasons, whenever there is no need for highly selective XPath
+queries.</p>
+</div>
<div class="section" id="the-xpath-method">
<h2>The <tt class="docutils literal">xpath()</tt> method</h2>
<p>For ElementTree, the xpath method performs a global XPath query against the
<p>The <tt class="docutils literal">xpath()</tt> method has support for XPath variables:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">expr</span> <span class="o">=</span> <span class="s2">"//*[local-name() = $name]"</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"foo"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"foo"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">foo</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"bar"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"bar"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">bar</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s2">"$text"</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span> <span class="s2">"Hello World!"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s2">"$text"</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span> <span class="s2">"Hello World!"</span><span class="p">))</span>
<span class="go">Hello World!</span>
</pre></div>
</div>
<span class="gp">>>> </span><span class="n">find_text</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s2">"//text()"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">text</span> <span class="o">=</span> <span class="n">find_text</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
<span class="go">TEXT</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">text</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">text</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">TEXT</span>
-<span class="gp">>>> </span><span class="n">find_text</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s2">"//text()"</span><span class="p">,</span> <span class="n">smart_strings</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="n">find_text</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s2">"//text()"</span><span class="p">,</span> <span class="n">smart_strings</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">text</span> <span class="o">=</span> <span class="n">find_text</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
<span class="go">TEXT</span>
<span class="gp">>>> </span><span class="nb">hasattr</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="s1">'getparent'</span><span class="p">)</span>
<span class="go">False</span>
<span class="gp">>>> </span><span class="n">d2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="s2">"d"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementTree</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getpath</span><span class="p">(</span><span class="n">d2</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getpath</span><span class="p">(</span><span class="n">d2</span><span class="p">))</span>
<span class="go">/c/d[2]</span>
<span class="gp">>>> </span><span class="n">tree</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getpath</span><span class="p">(</span><span class="n">d2</span><span class="p">))</span> <span class="o">==</span> <span class="p">[</span><span class="n">d2</span><span class="p">]</span>
<span class="go">True</span>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<root><a><b/></a><b/></root>"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s2">"//b"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
</pre></div>
<p>The compilation takes as much time as in the <tt class="docutils literal">xpath()</tt> method, but it is
variables:</p>
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">count_elements</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s2">"count(//*[local-name() = $name])"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">count_elements</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"a"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">count_elements</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"a"</span><span class="p">))</span>
<span class="go">1.0</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">count_elements</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"b"</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">count_elements</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"b"</span><span class="p">))</span>
<span class="go">2.0</span>
</pre></div>
<p>This supports very efficient evaluation of modified versions of an XPath
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<root xmlns='NS'><a><b/></a><b/></root>"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s2">"//n:b"</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="p">{</span><span class="s1">'n'</span><span class="p">:</span><span class="s1">'NS'</span><span class="p">})</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{NS}b</span>
</pre></div>
</div>
<span class="gp">... </span> <span class="n">namespaces</span><span class="o">=</span><span class="p">{</span><span class="s1">'re'</span><span class="p">:</span><span class="n">regexpNS</span><span class="p">})</span>
<span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<root><a>aB</a><b>aBc</b></root>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
<span class="go">aBc</span>
</pre></div>
<p>You can disable this with the boolean keyword argument <tt class="docutils literal">regexp</tt> which
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<root><a><b/></a><b/></root>"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">xpatheval</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">xpatheval</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathElementEvaluator</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">xpatheval</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathElementEvaluator</span><span class="p">))</span>
<span class="go">True</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">xpatheval</span><span class="p">(</span><span class="s2">"//b"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">xpatheval</span><span class="p">(</span><span class="s2">"//b"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">b</span>
</pre></div>
<p>This class provides efficient support for evaluating different XPath
<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s2">"<root xmlns='ns'><a><b/></a><b/></root>"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s2">"//p:b"</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="p">{</span><span class="s1">'p'</span> <span class="p">:</span> <span class="s1">'ns'</span><span class="p">})</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{ns}b</span>
</pre></div>
<p><tt class="docutils literal">ETXPath</tt> allows you to change this to:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ETXPath</span><span class="p">(</span><span class="s2">"//{ns}b"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ETXPath</span><span class="p">(</span><span class="s2">"//</span><span class="si">{ns}</span><span class="s2">b"</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
<span class="go">{ns}b</span>
</pre></div>
</div>
<span class="gp">>>> </span><span class="nb">bytes</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="go">b'<?xml version="1.0"?>\n<foo>Text</foo>\n'</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">transform</span><span class="o">.</span><span class="n">error_log</span><span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">transform</span><span class="o">.</span><span class="n">error_log</span><span class="p">)</span>
<span class="go"><string>:0:0:ERROR:XSLT:ERR_OK: STARTING</span>
<span class="go"><string>:0:0:ERROR:XSLT:ERR_OK: DONE</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">transform</span><span class="o">.</span><span class="n">error_log</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'message from line </span><span class="si">%s</span><span class="s1">, col </span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'message from line </span><span class="si">%s</span><span class="s1">, col </span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span>
<span class="gp">... </span> <span class="n">entry</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">column</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">message</span><span class="p">))</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'domain: </span><span class="si">%s</span><span class="s1"> (</span><span class="si">%d</span><span class="s1">)'</span> <span class="o">%</span> <span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">domain_name</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">domain</span><span class="p">))</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'type: </span><span class="si">%s</span><span class="s1"> (</span><span class="si">%d</span><span class="s1">)'</span> <span class="o">%</span> <span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">type_name</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">type</span><span class="p">))</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'level: </span><span class="si">%s</span><span class="s1"> (</span><span class="si">%d</span><span class="s1">)'</span> <span class="o">%</span> <span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">level_name</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">level</span><span class="p">))</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s1">'filename: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="n">entry</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'domain: </span><span class="si">%s</span><span class="s1"> (</span><span class="si">%d</span><span class="s1">)'</span> <span class="o">%</span> <span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">domain_name</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">domain</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'type: </span><span class="si">%s</span><span class="s1"> (</span><span class="si">%d</span><span class="s1">)'</span> <span class="o">%</span> <span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">type_name</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">type</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'level: </span><span class="si">%s</span><span class="s1"> (</span><span class="si">%d</span><span class="s1">)'</span> <span class="o">%</span> <span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">level_name</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">level</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'filename: </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="n">entry</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
<span class="go">message from line 0, col 0: STARTING</span>
<span class="go">domain: XSLT (22)</span>
<span class="go">type: ERR_OK (0)</span>
<h2>Profiling</h2>
<p>If you want to know how your stylesheet performed, pass the <tt class="docutils literal">profile_run</tt>
keyword to the transform:</p>
-<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="s2">"/a/b/text()"</span><span class="p">,</span> <span class="n">profile_run</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<div class="syntax"><pre><span></span><span class="gp">>>> </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="s2">"/a/b/text()"</span><span class="p">,</span> <span class="n">profile_run</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">profile</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">xslt_profile</span>
</pre></div>
<p>The value of the <tt class="docutils literal">xslt_profile</tt> property is an ElementTree with profiling
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2021-03-21.
+Generated on: 2021-11-02.
</div>
</body>
+++ /dev/null
-Zope Public License (ZPL) Version 2.0
------------------------------------------------
-
-This software is Copyright (c) Zope Corporation (tm) and
-Contributors. All rights reserved.
-
-This license has been certified as open source. It has also
-been designated as GPL compatible by the Free Software
-Foundation (FSF).
-
-Redistribution and use in source and binary forms, with or
-without modification, are permitted provided that the
-following conditions are met:
-
-1. Redistributions in source code must retain the above
- copyright notice, this list of conditions, and the following
- disclaimer.
-
-2. Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions, and the following
- disclaimer in the documentation and/or other materials
- provided with the distribution.
-
-3. The name Zope Corporation (tm) must not be used to
- endorse or promote products derived from this software
- without prior written permission from Zope Corporation.
-
-4. The right to distribute this software or to use it for
- any purpose does not give you the right to use Servicemarks
- (sm) or Trademarks (tm) of Zope Corporation. Use of them is
- covered in a separate agreement (see
- http://www.zope.com/Marks).
-
-5. If any files are modified, you must cause the modified
- files to carry prominent notices stating that you changed
- the files and the date of any change.
-
-Disclaimer
-
- THIS SOFTWARE IS PROVIDED BY ZOPE CORPORATION ``AS IS''
- AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
- NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- NO EVENT SHALL ZOPE CORPORATION OR ITS CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- DAMAGE.
-
-
-This software consists of contributions made by Zope
-Corporation and many individuals on behalf of Zope
-Corporation. Specific attributions are listed in the
-accompanying credits file.
that compiles on various platforms. The source distribution is signed
with `this key <pubkey.asc>`_.
-The latest version is `lxml 4.6.3`_, released 2021-03-21
-(`changes for 4.6.3`_). `Older versions <#old-versions>`_
+The latest version is `lxml 4.6.4`_, released 2021-11-01
+(`changes for 4.6.4`_). `Older versions <#old-versions>`_
are listed below.
Please take a look at the
..
and the `latest in-development version <http://lxml.de/dev/>`_.
-.. _`PDF documentation`: lxmldoc-4.6.3.pdf
+.. _`PDF documentation`: lxmldoc-4.6.4.pdf
+
+* `lxml 4.6.4`_, released 2021-11-01 (`changes for 4.6.4`_)
* `lxml 4.6.3`_, released 2021-03-21 (`changes for 4.6.3`_)
* `older releases <http://lxml.de/4.3/#old-versions>`_
+.. _`lxml 4.6.4`: /files/lxml-4.6.4.tgz
.. _`lxml 4.6.3`: /files/lxml-4.6.3.tgz
.. _`lxml 4.6.2`: /files/lxml-4.6.2.tgz
.. _`lxml 4.6.1`: /files/lxml-4.6.1.tgz
.. _`lxml 4.4.1`: /files/lxml-4.4.1.tgz
.. _`lxml 4.4.0`: /files/lxml-4.4.0.tgz
+.. _`changes for 4.6.4`: /changes-4.6.4.html
.. _`changes for 4.6.3`: /changes-4.6.3.html
.. _`changes for 4.6.2`: /changes-4.6.2.html
.. _`changes for 4.6.1`: /changes-4.6.1.html
out_file.close()
-def publish(dirname, lxml_path, release):
+def publish(dirname, lxml_path, release, with_donations=True):
if not os.path.exists(dirname):
os.mkdir(dirname)
menu = Element("div", {'class': 'sidemenu', 'id': 'sidemenu'})
SubElement(menu, 'div', {'class': 'menutrigger', 'onclick': 'trigger_menu(event)'}).text = "Menu"
menu_div = SubElement(menu, 'div', {'class': 'menu'})
- inject_banner(menu_div)
+ if with_donations:
+ inject_banner(menu_div)
# build HTML pages and parse them back
for section, text_files in SITE_STRUCTURE:
rest2html(script, path, outpath, stylesheet_url)
tree = parse(outpath)
- page_div = tree.getroot()[1][0] # html->body->div[class=document]
- inject_banner(page_div)
+ if with_donations:
+ page_div = tree.getroot()[1][0] # html->body->div[class=document]
+ inject_banner(page_div)
- if filename == 'main.txt':
- # inject donation buttons
- #inject_flatter_button(tree)
- inject_donate_buttons(lxml_path, script, tree)
+ if filename == 'main.txt':
+ # inject donation buttons
+ #inject_flatter_button(tree)
+ inject_donate_buttons(lxml_path, script, tree)
trees[filename] = (tree, basename, outpath)
build_menu(tree, basename, section_head)
if __name__ == '__main__':
- publish(sys.argv[1], sys.argv[2], sys.argv[3])
+ no_donations = '--no-donations' in sys.argv[1:]
+ if no_donations:
+ sys.argv.remove('--no-donations')
+ publish(sys.argv[1], sys.argv[2], sys.argv[3], with_donations=not no_donations)
\input{_part_pygments.tex}
"""
+EPYDOC_IMPORT = r"""
+\input{_part_epydoc.tex}
+"""
+
def write_chapter(master, title, filename):
filename = os.path.join(os.path.dirname(filename),
"_part_%s" % os.path.basename(filename))
raise Exception("Bueee, no title in %s" % src_path)
return title, header
-
def publish(dirname, lxml_path, release):
if not os.path.exists(dirname):
os.mkdir(dirname)
# integrate generated API docs
print("Integrating API docs")
- apidocsname = 'lxml.tex'
- apipath = os.path.join(dirname, "..", "api", "_build", "latex", apidocsname)
+ apidocsname = 'api.tex'
+ apipath = os.path.join(dirname, apidocsname)
tex_postprocess(apipath, os.path.join(dirname, "_part_%s" % apidocsname),
process_line=fix_relative_hyperrefs)
- #copy_epydoc_macros(apipath, os.path.join(dirname, '_part_epydoc.tex'),
- # set(header))
+ copy_epydoc_macros(apipath, os.path.join(dirname, '_part_epydoc.tex'),
+ set(header))
# convert CHANGES.txt
for hln in header:
if hln.startswith(r"\documentclass"):
#hln = hln.replace('article', 'book')
- hln = DOCUMENT_CLASS
+ hln = DOCUMENT_CLASS + EPYDOC_IMPORT
elif hln.startswith(r"\begin{document}"):
- # pygments support
+ # pygments and epydoc support
master.write(PYGMENTS_IMPORT)
elif hln.startswith(r"\title{"):
hln = replace_content(
+++ /dev/null
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.2 (GNU/Linux)
-
-mQGiBEQf3JQRBACciSqxoX0q3VurkRENVVtG/pVqtFh/d2CohbVJlLCrO4s7nnPj
-CTfZFt6tmykZjsLJl24XpEJt0O/C0jLcaBqvXVgVvRXHz4DjEYYuQF4LPthhI4MA
-4T7ExptX4lU5g3BVJ46vPU8uRBbbxarBRas9rYewgnrYKWpZZCa7yMq+9wCgnyyR
-Si4E3viLwi77jda135nA6vcD/iqu8zIl9/dFuUcOvxJrhrm+UdY72puZ1TVczSAH
-GOqMjrKkfyHlaJh/ZzWENpTZIfOdVhy7Chvva18vH4Wz7jKj5UeIpRrBvjAD28r3
-Y3W5bfsnpPkvDOyU1vqBsw4q+/250GXEX0JqV2Rbf5yLVgEZPdGrswO460dr4UVS
-8RS0BACYTmyrz57AugHc5tRkqNw6o7ux2deOT0c3AbUcOWtOocGumCsUf+M1nOrc
-VWkeBWTv4HIIiecWYY/KwIemTthQGjxywaZDxOlBT0BOL/+vfYTq/plZULXr+g90
-rSe82+kLl9N5onkBDJKeDIcJDzRoxIRPV1i0Om/5JBI4jmUnv7QnU3RlZmFuIEJl
-aG5lbCA8c2NvZGVyQHVzZXJzLmJlcmxpb3MuZGU+iF8EExECACAFAkQiqKYCGwMG
-CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRANPVNpCNOgHi+2AJ0a0JH8iP3RqrOL
-JefvHz1dSl3MxACYo7Ma6CeIgsGnyaSSdNOmNVXn+IhGBBARAgAGBQJEIqk0AAoJ
-ELO5mMzzmgZbmCcAoKZ2En1IlsxBpaPPxgWYrUOWfc6hAKCBWODMMOYptCBkSrjg
-m3gsrjHgYbQsU3RlZmFuIEJlaG5lbCA8c2NvZGVyQHVzZXJzLnNvdXJjZWZvcmdl
-Lm5ldD6IYAQTEQIAIAUCRB/clAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ
-EA09U2kI06Aen2YAn0hvuDs+Gslq9vPRFFbsFNJI40PmAJ0chjiiEy0xV5C+n6YX
-XFuldRDILYhGBBARAgAGBQJEIp4AAAoJELO5mMzzmgZbgKQAn3pWrmFdj8YaEyuR
-tEjKVZJDQ6ZVAJ0Y1igwADT40BPra+G/xiLa3YbCrrkCDQREH9ynEAgAiR4/0r0d
-doViNECfSLClllu5K0Bo1SEiMtvVNC3sJYgVzBddD8Xn8UAdjyAgmaL5FC2FsNQu
-RxxKkNlHNYCq8ZSWtZaL2MQ+SyMUyHv6VXVCGuSW0COpzbx58u+SZpjyESJ1kaZc
-73SaIw6kv/dVQHjurwmlo1lg3dLZ3PG08WGCYUMqkkv2K+J7+puzE2Cjo31gTq4s
-LYDCV26wjVQ6BqT2EcHQhVEjh0xq5ugc908cr/2FQAKkTifEbF+OVBGWiFMGgri+
-6+G54/BV/RakpvNCFYBiZHn/M9mQaWt7XoTmnEQ1ldq5KNlRhkqnQRF/NK5VpGcQ
-29As28aqpZTECwADBgf/WlRvBRI1Q1eIv2falEv7C6sOxqc3kr5z1uUBTRG5v9t6
-ff9k/J4oC6cnQx00GK3ZR8ija6bl8zwu+0m0M3rW49Krb1rsiT7r4ahOZ7p9RRro
-oG3NbUJYgMG10D1nxpaioYqa/m+PpILJM0wfYZZEuX0xkZcOB24yb+J7EIcGR09T
-mMd5sXtdTU+w/p7Xi2cP61uQ8qixyHBH8E06qgW2JtVFV9rGn7CNUOvkNaUBRnY5
-QxhdkvKJRx7voOLYWZFUBIWgto+6vmTgKmc2Ho6qddzME9UgwUNcknRgm0cf6Cxr
-6zPtxZl8a6KemjQcK7kARSmMNCDkqp/Pohe519A5vYhJBBgRAgAJBQJEH9ynAhsM
-AAoJEA09U2kI06Aesv4AnjiVQVLzqnNS/64vvMMP1UARY3HtAJ90YxNGhRNIhWYL
-UU16oJlGD/9M1Q==
-=gWy2
------END PGP PUBLIC KEY BLOCK-----
a specific part of the API yourself, please consider sending it to the lxml
mailing list.
-The timings presented below compare lxml 3.1.1 (with libxml2 2.9.0) to the
+The timings presented below compare lxml 4.6.3 (with libxml2 2.9.10) to the
latest released versions of ElementTree (with cElementTree as accelerator
-module) in the standard library of CPython 3.3.0. They were run
-single-threaded on a 2.9GHz 64bit double core Intel i7 machine under
-Ubuntu Linux 12.10 (Quantal). The C libraries were compiled with the
-same platform specific optimisation flags. The Python interpreter was
-also manually compiled for the platform. Note that many of the following
-ElementTree timings are therefore better than what a normal Python
-installation with the standard library (c)ElementTree modules would yield.
-Note also that CPython 2.7 and 3.2+ come with a newer ElementTree version,
-so older Python installations will not perform as good for (c)ElementTree,
-and sometimes substantially worse.
+module) in the standard library of CPython 3.8.10. They were run
+single-threaded on a 2.3GHz 64bit double core Intel i5 machine under
+Ubuntu Linux 20.04 (Focal).
.. _`bench_etree.py`: https://github.com/lxml/lxml/blob/master/benchmark/bench_etree.py
.. _`bench_xpath.py`: https://github.com/lxml/lxml/blob/master/benchmark/bench_xpath.py
lxml is still more than 10 times as fast as the much improved
ElementTree 1.3 in recent Python versions::
- lxe: tostring_utf16 (S-TR T1) 7.9958 msec/pass
- cET: tostring_utf16 (S-TR T1) 83.1358 msec/pass
+ lxe: tostring_utf16 (S-TR T1) 5.9340 msec/pass
+ cET: tostring_utf16 (S-TR T1) 38.3270 msec/pass
- lxe: tostring_utf16 (UATR T1) 8.3222 msec/pass
- cET: tostring_utf16 (UATR T1) 84.4688 msec/pass
+ lxe: tostring_utf16 (UATR T1) 6.2032 msec/pass
+ cET: tostring_utf16 (UATR T1) 37.7944 msec/pass
- lxe: tostring_utf16 (S-TR T2) 8.2297 msec/pass
- cET: tostring_utf16 (S-TR T2) 87.3415 msec/pass
+ lxe: tostring_utf16 (S-TR T2) 6.1841 msec/pass
+ cET: tostring_utf16 (S-TR T2) 40.2577 msec/pass
- lxe: tostring_utf8 (S-TR T2) 6.5677 msec/pass
- cET: tostring_utf8 (S-TR T2) 76.2064 msec/pass
+ lxe: tostring_utf8 (S-TR T2) 4.6697 msec/pass
+ cET: tostring_utf8 (S-TR T2) 30.5173 msec/pass
- lxe: tostring_utf8 (U-TR T3) 1.1952 msec/pass
- cET: tostring_utf8 (U-TR T3) 22.0058 msec/pass
+ lxe: tostring_utf8 (U-TR T3) 1.2085 msec/pass
+ cET: tostring_utf8 (U-TR T3) 9.0246 msec/pass
The difference is somewhat smaller for plain text serialisation::
- lxe: tostring_text_ascii (S-TR T1) 2.7738 msec/pass
- cET: tostring_text_ascii (S-TR T1) 4.7629 msec/pass
+ lxe: tostring_text_ascii (S-TR T1) 2.6727 msec/pass
+ cET: tostring_text_ascii (S-TR T1) 2.9683 msec/pass
- lxe: tostring_text_ascii (S-TR T3) 0.8273 msec/pass
- cET: tostring_text_ascii (S-TR T3) 1.5273 msec/pass
+ lxe: tostring_text_ascii (S-TR T3) 0.6952 msec/pass
+ cET: tostring_text_ascii (S-TR T3) 1.0073 msec/pass
- lxe: tostring_text_utf16 (S-TR T1) 2.7659 msec/pass
- cET: tostring_text_utf16 (S-TR T1) 10.5038 msec/pass
+ lxe: tostring_text_utf16 (S-TR T1) 2.7366 msec/pass
+ cET: tostring_text_utf16 (S-TR T1) 7.3647 msec/pass
- lxe: tostring_text_utf16 (U-TR T1) 2.8017 msec/pass
- cET: tostring_text_utf16 (U-TR T1) 10.5207 msec/pass
+ lxe: tostring_text_utf16 (U-TR T1) 3.0322 msec/pass
+ cET: tostring_text_utf16 (U-TR T1) 7.5922 msec/pass
The ``tostring()`` function also supports serialisation to a Python
unicode string object, which is currently faster in ElementTree
-under CPython 3.3::
+under CPython 3.8::
- lxe: tostring_text_unicode (S-TR T1) 2.6896 msec/pass
- cET: tostring_text_unicode (S-TR T1) 1.0056 msec/pass
+ lxe: tostring_text_unicode (S-TR T1) 2.7645 msec/pass
+ cET: tostring_text_unicode (S-TR T1) 1.1806 msec/pass
- lxe: tostring_text_unicode (U-TR T1) 2.7366 msec/pass
- cET: tostring_text_unicode (U-TR T1) 1.0154 msec/pass
+ lxe: tostring_text_unicode (U-TR T1) 2.9871 msec/pass
+ cET: tostring_text_unicode (U-TR T1) 1.1659 msec/pass
- lxe: tostring_text_unicode (S-TR T3) 0.7997 msec/pass
- cET: tostring_text_unicode (S-TR T3) 0.3154 msec/pass
+ lxe: tostring_text_unicode (S-TR T3) 0.7446 msec/pass
+ cET: tostring_text_unicode (S-TR T3) 0.4532 msec/pass
lxe: tostring_text_unicode (U-TR T4) 0.0048 msec/pass
- cET: tostring_text_unicode (U-TR T4) 0.0160 msec/pass
+ cET: tostring_text_unicode (U-TR T4) 0.0134 msec/pass
For parsing, lxml.etree and cElementTree compete for the medal.
Depending on the input, either of the two can be faster. The (c)ET
known to be very fast. Here are some timings from the benchmarking
suite::
- lxe: parse_bytesIO (SAXR T1) 13.0246 msec/pass
- cET: parse_bytesIO (SAXR T1) 8.2929 msec/pass
+ lxe: parse_bytesIO (SAXR T1) 14.2074 msec/pass
+ cET: parse_bytesIO (SAXR T1) 7.9336 msec/pass
- lxe: parse_bytesIO (S-XR T3) 1.3542 msec/pass
- cET: parse_bytesIO (S-XR T3) 2.4023 msec/pass
+ lxe: parse_bytesIO (S-XR T3) 1.4477 msec/pass
+ cET: parse_bytesIO (S-XR T3) 2.1925 msec/pass
- lxe: parse_bytesIO (UAXR T3) 7.5610 msec/pass
- cET: parse_bytesIO (UAXR T3) 11.2455 msec/pass
+ lxe: parse_bytesIO (UAXR T3) 8.4128 msec/pass
+ cET: parse_bytesIO (UAXR T3) 12.2926 msec/pass
And another couple of timings `from a benchmark`_ that Fredrik Lundh
`used to promote cElementTree`_, comparing a number of different
parsers. First, parsing a 274KB XML file containing Shakespeare's
Hamlet::
- xml.etree.ElementTree.parse done in 0.017 seconds
+ xml.etree.ElementTree.parse done in 0.006 seconds
xml.etree.cElementTree.parse done in 0.007 seconds
- xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.007 seconds
- lxml.etree.parse done in 0.003 seconds
- drop_whitespace.parse done in 0.003 seconds
+ xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.006 seconds
+ lxml.etree.parse done in 0.004 seconds
+ drop_whitespace.parse done in 0.004 seconds
lxml.etree.XMLParser.feed(): 6636 nodes read in 0.004 seconds
- minidom tree read in 0.080 seconds
+ minidom tree read in 0.066 seconds
And a 3.4MB XML file containing the Old Testament::
- xml.etree.ElementTree.parse done in 0.038 seconds
- xml.etree.cElementTree.parse done in 0.030 seconds
- xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.030 seconds
- lxml.etree.parse done in 0.016 seconds
- drop_whitespace.parse done in 0.015 seconds
- lxml.etree.XMLParser.feed(): 25317 nodes read in 0.022 seconds
- minidom tree read in 0.288 seconds
+ xml.etree.ElementTree.parse done in 0.037 seconds
+ xml.etree.cElementTree.parse done in 0.036 seconds
+ xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.036 seconds
+ lxml.etree.parse done in 0.025 seconds
+ drop_whitespace.parse done in 0.022 seconds
+ lxml.etree.XMLParser.feed(): 25317 nodes read in 0.026 seconds
+ minidom tree read in 0.194 seconds
.. _`from a benchmark`: http://svn.effbot.org/public/elementtree-1.3/benchmark.py
.. _`used to promote cElementTree`: http://effbot.org/zone/celementtree.htm#benchmarks
make sure we start from a clean state each time). For the 274KB
hamlet.xml file::
- Memory usage: 7284
- xml.etree.ElementTree.parse done in 0.017 seconds
- Memory usage: 9432 (+2148)
+ Memory usage: 9256
+ xml.etree.ElementTree.parse done in 0.006 seconds
+ Memory usage: 12764 (+3508)
xml.etree.cElementTree.parse done in 0.007 seconds
- Memory usage: 9432 (+2152)
- xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.007 seconds
- Memory usage: 9448 (+2164)
- lxml.etree.parse done in 0.003 seconds
- Memory usage: 11032 (+3748)
- drop_whitespace.parse done in 0.003 seconds
- Memory usage: 10224 (+2940)
+ Memory usage: 12764 (+3508)
+ xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.006 seconds
+ Memory usage: 12720 (+3464)
+ lxml.etree.parse done in 0.004 seconds
+ Memory usage: 15052 (+5796)
+ drop_whitespace.parse done in 0.004 seconds
+ Memory usage: 14040 (+4784)
lxml.etree.XMLParser.feed(): 6636 nodes read in 0.004 seconds
- Memory usage: 11804 (+4520)
- minidom tree read in 0.080 seconds
- Memory usage: 12324 (+5040)
+ Memory usage: 15812 (+6556)
+ minidom tree read in 0.066 seconds
+ Memory usage: 15332 (+6076)
And for the 3.4MB Old Testament XML file::
- Memory usage: 10420
- xml.etree.ElementTree.parse done in 0.038 seconds
- Memory usage: 20660 (+10240)
- xml.etree.cElementTree.parse done in 0.030 seconds
- Memory usage: 20660 (+10240)
- xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.030 seconds
- Memory usage: 20844 (+10424)
- lxml.etree.parse done in 0.016 seconds
- Memory usage: 27624 (+17204)
- drop_whitespace.parse done in 0.015 seconds
- Memory usage: 24468 (+14052)
- lxml.etree.XMLParser.feed(): 25317 nodes read in 0.022 seconds
- Memory usage: 29844 (+19424)
- minidom tree read in 0.288 seconds
- Memory usage: 28788 (+18368)
+ Memory usage: 12456
+ xml.etree.ElementTree.parse done in 0.037 seconds
+ Memory usage: 23288 (+10832)
+ xml.etree.cElementTree.parse done in 0.036 seconds
+ Memory usage: 23288 (+10832)
+ xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.036 seconds
+ Memory usage: 23644 (+11220)
+ lxml.etree.parse done in 0.025 seconds
+ Memory usage: 31404 (+18948)
+ drop_whitespace.parse done in 0.022 seconds
+ Memory usage: 28752 (+16296)
+ lxml.etree.XMLParser.feed(): 25317 nodes read in 0.026 seconds
+ Memory usage: 33924 (+21500)
+ minidom tree read in 0.194 seconds
+ Memory usage: 31284 (+18828)
As can be seen from the sizes, both lxml.etree and cElementTree are
-rather memory friendly compared to the pure Python libraries
-ElementTree and (especially) minidom. Comparing to older CPython
+rather memory friendly and fast. Comparing to older CPython
versions, the memory footprint of the minidom library was considerably
reduced in CPython 3.3, by about a factor of 4 in this case.
winners well distributed over both sides. Similar timings can be
observed for the ``iterparse()`` function::
- lxe: iterparse_bytesIO (SAXR T1) 17.9198 msec/pass
- cET: iterparse_bytesIO (SAXR T1) 14.4982 msec/pass
+ lxe: iterparse_bytesIO (SAXR T1) 20.3598 msec/pass
+ cET: iterparse_bytesIO (SAXR T1) 10.8948 msec/pass
- lxe: iterparse_bytesIO (UAXR T3) 8.8522 msec/pass
- cET: iterparse_bytesIO (UAXR T3) 12.9857 msec/pass
+ lxe: iterparse_bytesIO (UAXR T3) 10.1640 msec/pass
+ cET: iterparse_bytesIO (UAXR T3) 12.9926 msec/pass
However, if you benchmark the complete round-trip of a serialise-parse
cycle, the numbers will look similar to these::
- lxe: write_utf8_parse_bytesIO (S-TR T1) 19.8867 msec/pass
- cET: write_utf8_parse_bytesIO (S-TR T1) 80.7259 msec/pass
+ lxe: write_utf8_parse_bytesIO (S-TR T1) 18.9857 msec/pass
+ cET: write_utf8_parse_bytesIO (S-TR T1) 35.7475 msec/pass
- lxe: write_utf8_parse_bytesIO (UATR T2) 23.7896 msec/pass
- cET: write_utf8_parse_bytesIO (UATR T2) 98.0766 msec/pass
+ lxe: write_utf8_parse_bytesIO (UATR T2) 22.4853 msec/pass
+ cET: write_utf8_parse_bytesIO (UATR T2) 42.6254 msec/pass
- lxe: write_utf8_parse_bytesIO (S-TR T3) 3.0684 msec/pass
- cET: write_utf8_parse_bytesIO (S-TR T3) 24.6122 msec/pass
+ lxe: write_utf8_parse_bytesIO (S-TR T3) 3.3801 msec/pass
+ cET: write_utf8_parse_bytesIO (S-TR T3) 11.2493 msec/pass
- lxe: write_utf8_parse_bytesIO (SATR T4) 0.3495 msec/pass
- cET: write_utf8_parse_bytesIO (SATR T4) 1.9610 msec/pass
+ lxe: write_utf8_parse_bytesIO (SATR T4) 0.4263 msec/pass
+ cET: write_utf8_parse_bytesIO (SATR T4) 1.0326 msec/pass
For applications that require a high parser throughput of large files,
and that do little to no serialization, both cET and lxml.etree are a
benchmark (given in seconds)::
lxe: -- S- U- -A SA UA
- T1: 0.0299 0.0343 0.0344 0.0293 0.0345 0.0342
- T2: 0.0368 0.0423 0.0418 0.0427 0.0474 0.0459
- T3: 0.0088 0.0084 0.0086 0.0251 0.0258 0.0261
- T4: 0.0002 0.0002 0.0002 0.0005 0.0006 0.0006
+ T1: 0.0219 0.0254 0.0257 0.0216 0.0259 0.0259
+ T2: 0.0234 0.0279 0.0283 0.0271 0.0318 0.0307
+ T3: 0.0051 0.0050 0.0058 0.0218 0.0233 0.0231
+ T4: 0.0001 0.0001 0.0001 0.0004 0.0004 0.0004
cET: -- S- U- -A SA UA
- T1: 0.0050 0.0045 0.0093 0.0044 0.0043 0.0043
- T2: 0.0073 0.0075 0.0074 0.0201 0.0075 0.0074
- T3: 0.0033 0.0213 0.0032 0.0034 0.0033 0.0035
+ T1: 0.0035 0.0029 0.0078 0.0031 0.0031 0.0029
+ T2: 0.0047 0.0051 0.0053 0.0046 0.0055 0.0048
+ T3: 0.0016 0.0216 0.0027 0.0021 0.0023 0.0026
T4: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
The timings are somewhat close to each other, although cET can be
a shallow copy of their list of children, lxml has to create a Python
object for each child and collect them in a list::
- lxe: root_list_children (--TR T1) 0.0038 msec/pass
- cET: root_list_children (--TR T1) 0.0010 msec/pass
+ lxe: root_list_children (--TR T1) 0.0036 msec/pass
+ cET: root_list_children (--TR T1) 0.0005 msec/pass
- lxe: root_list_children (--TR T2) 0.0455 msec/pass
- cET: root_list_children (--TR T2) 0.0050 msec/pass
+ lxe: root_list_children (--TR T2) 0.0634 msec/pass
+ cET: root_list_children (--TR T2) 0.0086 msec/pass
This handicap is also visible when accessing single children::
- lxe: first_child (--TR T2) 0.0424 msec/pass
- cET: first_child (--TR T2) 0.0384 msec/pass
+ lxe: first_child (--TR T2) 0.0601 msec/pass
+ cET: first_child (--TR T2) 0.0548 msec/pass
- lxe: last_child (--TR T1) 0.0477 msec/pass
- cET: last_child (--TR T1) 0.0467 msec/pass
+ lxe: last_child (--TR T1) 0.0570 msec/pass
+ cET: last_child (--TR T1) 0.0534 msec/pass
... unless you also add the time to find a child index in a bigger
list. ET and cET use Python lists here, which are based on arrays.
The data structure used by libxml2 is a linked tree, and thus, a
linked list of children::
- lxe: middle_child (--TR T1) 0.0710 msec/pass
- cET: middle_child (--TR T1) 0.0420 msec/pass
+ lxe: middle_child (--TR T1) 0.0892 msec/pass
+ cET: middle_child (--TR T1) 0.0510 msec/pass
- lxe: middle_child (--TR T2) 1.7393 msec/pass
- cET: middle_child (--TR T2) 0.0396 msec/pass
+ lxe: middle_child (--TR T2) 2.3038 msec/pass
+ cET: middle_child (--TR T2) 0.0508 msec/pass
Element creation
in. This results in a major performance difference for creating independent
Elements that end up in independently created documents::
- lxe: create_elements (--TC T2) 1.0045 msec/pass
- cET: create_elements (--TC T2) 0.0753 msec/pass
+ lxe: create_elements (--TC T2) 0.8032 msec/pass
+ cET: create_elements (--TC T2) 0.0675 msec/pass
Therefore, it is always preferable to create Elements for the document they
are supposed to end up in, either as SubElements of an Element or using the
explicit ``Element.makeelement()`` call::
- lxe: makeelement (--TC T2) 1.0586 msec/pass
- cET: makeelement (--TC T2) 0.1483 msec/pass
+ lxe: makeelement (--TC T2) 0.8030 msec/pass
+ cET: makeelement (--TC T2) 0.0625 msec/pass
- lxe: create_subelements (--TC T2) 0.8826 msec/pass
- cET: create_subelements (--TC T2) 0.0827 msec/pass
+ lxe: create_subelements (--TC T2) 0.8621 msec/pass
+ cET: create_subelements (--TC T2) 0.0923 msec/pass
So, if the main performance bottleneck of an application is creating large XML
trees in memory through calls to Element and SubElement, cET is the best
The following benchmark appends all root children of the second tree to the
root of the first tree::
- lxe: append_from_document (--TR T1,T2) 1.0812 msec/pass
- cET: append_from_document (--TR T1,T2) 0.1104 msec/pass
+ lxe: append_from_document (--TR T1,T2) 1.3800 msec/pass
+ cET: append_from_document (--TR T1,T2) 0.0513 msec/pass
- lxe: append_from_document (--TR T3,T4) 0.0155 msec/pass
- cET: append_from_document (--TR T3,T4) 0.0060 msec/pass
+ lxe: append_from_document (--TR T3,T4) 0.0150 msec/pass
+ cET: append_from_document (--TR T3,T4) 0.0026 msec/pass
Although these are fairly small numbers compared to parsing, this easily shows
the different performance classes for lxml and (c)ET. Where the latter do not
This difference is not always as visible, but applies to most parts of the
API, like inserting newly created elements::
- lxe: insert_from_document (--TR T1,T2) 3.9763 msec/pass
- cET: insert_from_document (--TR T1,T2) 0.1459 msec/pass
+ lxe: insert_from_document (--TR T1,T2) 5.2345 msec/pass
+ cET: insert_from_document (--TR T1,T2) 0.0732 msec/pass
or replacing the child slice by a newly created element::
- lxe: replace_children_element (--TC T1) 0.0749 msec/pass
- cET: replace_children_element (--TC T1) 0.0081 msec/pass
+ lxe: replace_children_element (--TC T1) 0.0720 msec/pass
+ cET: replace_children_element (--TC T1) 0.0105 msec/pass
as opposed to replacing the slice with an existing element from the
same document::
- lxe: replace_children (--TC T1) 0.0052 msec/pass
- cET: replace_children (--TC T1) 0.0036 msec/pass
+ lxe: replace_children (--TC T1) 0.0060 msec/pass
+ cET: replace_children (--TC T1) 0.0050 msec/pass
While these numbers are too small to provide a major performance
impact in practice, you should keep this difference in mind when you
Deep copying a tree is fast in lxml::
- lxe: deepcopy_all (--TR T1) 3.1650 msec/pass
- cET: deepcopy_all (--TR T1) 53.9973 msec/pass
+ lxe: deepcopy_all (--TR T1) 4.1246 msec/pass
+ cET: deepcopy_all (--TR T1) 2.5451 msec/pass
- lxe: deepcopy_all (-ATR T2) 3.7365 msec/pass
- cET: deepcopy_all (-ATR T2) 61.6267 msec/pass
+ lxe: deepcopy_all (-ATR T2) 4.7867 msec/pass
+ cET: deepcopy_all (-ATR T2) 2.7504 msec/pass
- lxe: deepcopy_all (S-TR T3) 0.7913 msec/pass
- cET: deepcopy_all (S-TR T3) 13.6220 msec/pass
+ lxe: deepcopy_all (S-TR T3) 1.0097 msec/pass
+ cET: deepcopy_all (S-TR T3) 0.6278 msec/pass
So, for example, if you have a database-like scenario where you parse in a
large tree and then search and copy independent subtrees from it for further
interest or the target element tag name is known, the ``.iter()``
method is a good choice::
- lxe: iter_all (--TR T1) 1.0529 msec/pass
- cET: iter_all (--TR T1) 0.2635 msec/pass
+ lxe: iter_all (--TR T1) 1.3661 msec/pass
+ cET: iter_all (--TR T1) 0.2670 msec/pass
- lxe: iter_islice (--TR T2) 0.0110 msec/pass
- cET: iter_islice (--TR T2) 0.0050 msec/pass
+ lxe: iter_islice (--TR T2) 0.0122 msec/pass
+ cET: iter_islice (--TR T2) 0.0033 msec/pass
- lxe: iter_tag (--TR T2) 0.0079 msec/pass
- cET: iter_tag (--TR T2) 0.0112 msec/pass
+ lxe: iter_tag (--TR T2) 0.0098 msec/pass
+ cET: iter_tag (--TR T2) 0.0086 msec/pass
- lxe: iter_tag_all (--TR T2) 0.1822 msec/pass
- cET: iter_tag_all (--TR T2) 0.5343 msec/pass
+ lxe: iter_tag_all (--TR T2) 0.6840 msec/pass
+ cET: iter_tag_all (--TR T2) 0.4323 msec/pass
This translates directly into similar timings for ``Element.findall()``::
- lxe: findall (--TR T2) 1.7176 msec/pass
- cET: findall (--TR T2) 0.9973 msec/pass
+ lxe: findall (--TR T2) 3.9611 msec/pass
+ cET: findall (--TR T2) 0.9227 msec/pass
- lxe: findall (--TR T3) 0.3967 msec/pass
- cET: findall (--TR T3) 0.2525 msec/pass
+ lxe: findall (--TR T3) 0.3989 msec/pass
+ cET: findall (--TR T3) 0.2670 msec/pass
- lxe: findall_tag (--TR T2) 0.2258 msec/pass
- cET: findall_tag (--TR T2) 0.5770 msec/pass
+ lxe: findall_tag (--TR T2) 0.7420 msec/pass
+ cET: findall_tag (--TR T2) 0.4942 msec/pass
- lxe: findall_tag (--TR T3) 0.1085 msec/pass
- cET: findall_tag (--TR T3) 0.1919 msec/pass
+ lxe: findall_tag (--TR T3) 0.1099 msec/pass
+ cET: findall_tag (--TR T3) 0.1748 msec/pass
Note that all three libraries currently use the same Python
implementation for ``.findall()``, except for their native tree
of the lxml API you use. The most straight forward way is to call the
``xpath()`` method on an Element or ElementTree::
- lxe: xpath_method (--TC T1) 0.3982 msec/pass
- lxe: xpath_method (--TC T2) 7.8895 msec/pass
- lxe: xpath_method (--TC T3) 0.0477 msec/pass
- lxe: xpath_method (--TC T4) 0.3982 msec/pass
+ lxe: xpath_method (--TC T1) 0.2828 msec/pass
+ lxe: xpath_method (--TC T2) 5.4705 msec/pass
+ lxe: xpath_method (--TC T3) 0.0324 msec/pass
+ lxe: xpath_method (--TC T4) 0.2804 msec/pass
This is well suited for testing and when the XPath expressions are as diverse
as the trees they are called on. However, if you have a single XPath
expression that you want to apply to a larger number of different elements,
the ``XPath`` class is the most efficient way to do it::
- lxe: xpath_class (--TC T1) 0.0713 msec/pass
- lxe: xpath_class (--TC T2) 1.1325 msec/pass
- lxe: xpath_class (--TC T3) 0.0215 msec/pass
- lxe: xpath_class (--TC T4) 0.0722 msec/pass
+ lxe: xpath_class (--TC T1) 0.0570 msec/pass
+ lxe: xpath_class (--TC T2) 0.6924 msec/pass
+ lxe: xpath_class (--TC T3) 0.0148 msec/pass
+ lxe: xpath_class (--TC T4) 0.0446 msec/pass
Note that this still allows you to use variables in the expression, so you can
parse it once and then adapt it through variables at call time. In other
cases, where you have a fixed Element or ElementTree and want to run different
expressions on it, you should consider the ``XPathEvaluator``::
- lxe: xpath_element (--TR T1) 0.1101 msec/pass
- lxe: xpath_element (--TR T2) 2.0473 msec/pass
- lxe: xpath_element (--TR T3) 0.0267 msec/pass
- lxe: xpath_element (--TR T4) 0.1087 msec/pass
+ lxe: xpath_element (--TR T1) 0.0684 msec/pass
+ lxe: xpath_element (--TR T2) 1.0865 msec/pass
+ lxe: xpath_element (--TR T3) 0.0174 msec/pass
+ lxe: xpath_element (--TR T4) 0.0665 msec/pass
While it looks slightly slower, creating an XPath object for each of the
expressions generates a much higher overhead here::
- lxe: xpath_class_repeat (--TC T1 ) 0.3884 msec/pass
- lxe: xpath_class_repeat (--TC T2 ) 7.6182 msec/pass
- lxe: xpath_class_repeat (--TC T3 ) 0.0465 msec/pass
- lxe: xpath_class_repeat (--TC T4 ) 0.3877 msec/pass
+ lxe: xpath_class_repeat (--TC T1 ) 0.2813 msec/pass
+ lxe: xpath_class_repeat (--TC T2 ) 5.4042 msec/pass
+ lxe: xpath_class_repeat (--TC T3 ) 0.0339 msec/pass
+ lxe: xpath_class_repeat (--TC T4 ) 0.2706 msec/pass
Note that tree iteration can be substantially faster than XPath if
your code short-circuits after the first couple of elements were
Here is an example where only the first matching element is being
searched, a case for which XPath has syntax support as well::
- lxe: find_single (--TR T2) 0.0184 msec/pass
- cET: find_single (--TR T2) 0.0052 msec/pass
+ lxe: find_single (--TR T2) 0.0031 msec/pass
+ cET: find_single (--TR T2) 0.0026 msec/pass
- lxe: iter_single (--TR T2) 0.0024 msec/pass
- cET: iter_single (--TR T2) 0.0007 msec/pass
+ lxe: iter_single (--TR T2) 0.0019 msec/pass
+ cET: iter_single (--TR T2) 0.0002 msec/pass
- lxe: xpath_single (--TR T2) 0.0033 msec/pass
+ lxe: xpath_single (--TR T2) 0.0861 msec/pass
When looking for the first two elements out of many, the numbers
explode for XPath, as restricting the result subset requires a
more complex expression::
- lxe: iterfind_two (--TR T2) 0.0184 msec/pass
- cET: iterfind_two (--TR T2) 0.0062 msec/pass
+ lxe: iterfind_two (--TR T2) 0.0050 msec/pass
+ cET: iterfind_two (--TR T2) 0.0036 msec/pass
- lxe: iter_two (--TR T2) 0.0029 msec/pass
- cET: iter_two (--TR T2) 0.0017 msec/pass
+ lxe: iter_two (--TR T2) 0.0021 msec/pass
+ cET: iter_two (--TR T2) 0.0014 msec/pass
- lxe: xpath_two (--TR T2) 0.2768 msec/pass
+ lxe: xpath_two (--TR T2) 0.0916 msec/pass
A longer example
tree. It avoids step-by-step Python element instantiations along the path,
which can substantially improve the access time::
- lxe: attribute (--TR T1) 4.1828 msec/pass
- lxe: attribute (--TR T2) 17.3802 msec/pass
- lxe: attribute (--TR T4) 3.8657 msec/pass
+ lxe: attribute (--TR T1) 2.4018 msec/pass
+ lxe: attribute (--TR T2) 16.3755 msec/pass
+ lxe: attribute (--TR T4) 2.3725 msec/pass
- lxe: objectpath (--TR T1) 0.9289 msec/pass
- lxe: objectpath (--TR T2) 13.3109 msec/pass
- lxe: objectpath (--TR T4) 0.9289 msec/pass
+ lxe: objectpath (--TR T1) 1.1816 msec/pass
+ lxe: objectpath (--TR T2) 14.4675 msec/pass
+ lxe: objectpath (--TR T4) 1.2276 msec/pass
- lxe: attributes_deep (--TR T1) 6.2900 msec/pass
- lxe: attributes_deep (--TR T2) 20.4713 msec/pass
- lxe: attributes_deep (--TR T4) 6.1679 msec/pass
+ lxe: attributes_deep (--TR T1) 3.7086 msec/pass
+ lxe: attributes_deep (--TR T2) 17.5436 msec/pass
+ lxe: attributes_deep (--TR T4) 3.8407 msec/pass
- lxe: objectpath_deep (--TR T1) 1.3049 msec/pass
- lxe: objectpath_deep (--TR T2) 14.0815 msec/pass
- lxe: objectpath_deep (--TR T4) 1.3051 msec/pass
+ lxe: objectpath_deep (--TR T1) 1.4980 msec/pass
+ lxe: objectpath_deep (--TR T2) 14.7266 msec/pass
+ lxe: objectpath_deep (--TR T4) 1.4834 msec/pass
Note, however, that parsing ObjectPath expressions is not for free either, so
this is most effective for frequently accessing the same element.
subtrees and elements) to cache, you can trade memory usage against access
speed::
- lxe: attribute_cached (--TR T1) 3.1357 msec/pass
- lxe: attribute_cached (--TR T2) 15.8911 msec/pass
- lxe: attribute_cached (--TR T4) 2.9194 msec/pass
+ lxe: attribute_cached (--TR T1) 1.9207 msec/pass
+ lxe: attribute_cached (--TR T2) 15.6903 msec/pass
+ lxe: attribute_cached (--TR T4) 1.8718 msec/pass
- lxe: attributes_deep_cached (--TR T1) 3.8984 msec/pass
- lxe: attributes_deep_cached (--TR T2) 16.8300 msec/pass
- lxe: attributes_deep_cached (--TR T4) 3.6936 msec/pass
+ lxe: attributes_deep_cached (--TR T1) 2.6512 msec/pass
+ lxe: attributes_deep_cached (--TR T2) 16.7937 msec/pass
+ lxe: attributes_deep_cached (--TR T4) 2.5539 msec/pass
- lxe: objectpath_deep_cached (--TR T1) 0.7496 msec/pass
- lxe: objectpath_deep_cached (--TR T2) 12.3763 msec/pass
- lxe: objectpath_deep_cached (--TR T4) 0.7427 msec/pass
+ lxe: objectpath_deep_cached (--TR T1) 0.8519 msec/pass
+ lxe: objectpath_deep_cached (--TR T2) 13.9337 msec/pass
+ lxe: objectpath_deep_cached (--TR T4) 0.8645 msec/pass
Things to note: you cannot currently use ``weakref.WeakKeyDictionary`` objects
for this as lxml's element objects do not support weak references (which are
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="version" content="S5 1.1" />
<title>Implementing XML languages with lxml</title>
<style type="text/css">
<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span>
<span class="gp">... </span> <span class="s2">"<root> <a><b/><b/></a> <c><d/><e><f/></e><g/></c> </root>"</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="p">])</span> <span class="c1"># children</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="p">])</span> <span class="c1"># children</span>
<span class="go">['a', 'c']</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">()])</span> <span class="c1"># self and descendants</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">()])</span> <span class="c1"># self and descendants</span>
<span class="go">['root', 'a', 'b', 'b', 'c', 'd', 'e', 'f', 'g']</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterdescendants</span><span class="p">()])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterdescendants</span><span class="p">()])</span>
<span class="go">['a', 'b', 'b', 'c', 'd', 'e', 'f', 'g']</span>
<span class="gp">... </span> <span class="n">bfs_queue</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">el</span><span class="p">)</span> <span class="c1"># append its children</span>
<span class="gp">... </span> <span class="k">yield</span> <span class="n">el</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">iter_breadth_first</span><span class="p">(</span><span class="n">root</span><span class="p">)])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">iter_breadth_first</span><span class="p">(</span><span class="n">root</span><span class="p">)])</span>
<span class="go">['root', 'a', 'c', 'b', 'b', 'd', 'e', 'g', 'f']</span>
</pre></div>
</div>
<span class="gp">>>> </span><span class="n">tree_walker</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterwalk</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">events</span><span class="o">=</span><span class="p">(</span><span class="s1">'start'</span><span class="p">,</span> <span class="s1">'end'</span><span class="p">))</span>
<span class="gp">>>> </span><span class="k">for</span> <span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">element</span><span class="p">)</span> <span class="ow">in</span> <span class="n">tree_walker</span><span class="p">:</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">event</span><span class="p">))</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">event</span><span class="p">))</span>
<span class="go">root (start)</span>
<span class="go">a (start)</span>
<span class="go">b (start)</span>
<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">find_paragraphs</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s2">"//p"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">paragraphs</span> <span class="o">=</span> <span class="n">find_paragraphs</span><span class="p">(</span><span class="n">xml_tree</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span> <span class="n">p</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">paragraphs</span> <span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span> <span class="n">p</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">paragraphs</span> <span class="p">])</span>
<span class="go">['So be it!', 'stuff']</span>
</pre></div>
</li>
<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">find_dialogs</span> <span class="o">=</span> <span class="n">cssselect</span><span class="o">.</span><span class="n">CSSSelector</span><span class="p">(</span><span class="s2">"speech.dialog p"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">paragraphs</span> <span class="o">=</span> <span class="n">find_dialogs</span><span class="p">(</span><span class="n">xml_tree</span><span class="p">)</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span> <span class="n">p</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">paragraphs</span> <span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span> <span class="n">p</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">paragraphs</span> <span class="p">])</span>
<span class="go">['So be it!']</span>
</pre></div>
</li>
</pre></div>
</li>
<li><p class="first">using the <tt class="docutils literal">fromstring()</tt> function with a specific parser:</p>
-<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">HTMLParser</span><span class="p">(</span><span class="n">remove_comments</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">HTMLParser</span><span class="p">(</span><span class="n">remove_comments</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">root_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">some_html_data</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
</pre></div>
</li>
<p>The ElementMaker (or <em>E-factory</em>)</p>
<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">lxml.builder</span> <span class="kn">import</span> <span class="n">ElementMaker</span>
<span class="gp">>>> </span><span class="n">A</span> <span class="o">=</span> <span class="n">ElementMaker</span><span class="p">(</span><span class="n">namespace</span><span class="o">=</span><span class="s2">"http://www.w3.org/2005/Atom"</span><span class="p">,</span>
-<span class="gp">... </span> <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="bp">None</span> <span class="p">:</span> <span class="s2">"http://www.w3.org/2005/Atom"</span><span class="p">})</span>
+<span class="gp">... </span> <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="kc">None</span> <span class="p">:</span> <span class="s2">"http://www.w3.org/2005/Atom"</span><span class="p">})</span>
</pre></div>
<div class="incremental"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">atom</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span>
<span class="gp">... </span> <span class="n">A</span><span class="o">.</span><span class="n">author</span><span class="p">(</span> <span class="n">A</span><span class="o">.</span><span class="n">name</span><span class="p">(</span><span class="s2">"Stefan Behnel"</span><span class="p">)</span> <span class="p">),</span>
<span class="gp">... </span><span class="p">)</span>
</pre></div>
</div><div class="incremental"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">lxml.etree</span> <span class="kn">import</span> <span class="n">tostring</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span> <span class="n">tostring</span><span class="p">(</span><span class="n">atom</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="p">)</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span> <span class="n">tostring</span><span class="p">(</span><span class="n">atom</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="p">)</span>
</pre></div>
</div></div>
<div class="slide" id="example-generate-xml-2">
<span class="n">ATOM_NAMESPACE</span> <span class="o">=</span> <span class="s2">"http://www.w3.org/2005/Atom"</span>
<span class="n">A</span> <span class="o">=</span> <span class="n">ElementMaker</span><span class="p">(</span><span class="n">namespace</span><span class="o">=</span><span class="n">ATOM_NAMESPACE</span><span class="p">,</span>
- <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="bp">None</span> <span class="p">:</span> <span class="n">ATOM_NAMESPACE</span><span class="p">})</span>
+ <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="kc">None</span> <span class="p">:</span> <span class="n">ATOM_NAMESPACE</span><span class="p">})</span>
<span class="n">feed</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">feed</span>
<span class="n">entry</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">entry</span>
<span class="c1"># plus a little validation function: isvalid()</span>
-<span class="n">isvalid</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">RelaxNG</span><span class="p">(</span><span class="nb">file</span><span class="o">=</span><span class="s2">"atom.rng"</span><span class="p">)</span>
+<span class="n">isvalid</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">RelaxNG</span><span class="p">(</span><span class="n">file</span><span class="o">=</span><span class="s2">"atom.rng"</span><span class="p">)</span>
</pre></div>
</div>
<div class="slide" id="the-atom-generator-module">
<h1>The Atom generator module</h1>
<!-- >>> import sys
>>> sys.path.insert(0, "ep2008") -->
-<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">atomgen</span> <span class="kn">as</span> <span class="nn">A</span>
+<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">atomgen</span> <span class="k">as</span> <span class="nn">A</span>
<span class="gp">>>> </span><span class="n">atom</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span>
<span class="gp">... </span> <span class="n">A</span><span class="o">.</span><span class="n">author</span><span class="p">(</span> <span class="n">A</span><span class="o">.</span><span class="n">name</span><span class="p">(</span><span class="s2">"Stefan Behnel"</span><span class="p">)</span> <span class="p">),</span>
<div class="slide" id="mixing-languages-1">
<h1>Mixing languages (1)</h1>
<p>Atom can embed <em>serialised</em> HTML</p>
-<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">lxml.html.builder</span> <span class="kn">as</span> <span class="nn">h</span>
+<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">lxml.html.builder</span> <span class="k">as</span> <span class="nn">h</span>
<span class="gp">>>> </span><span class="n">html_fragment</span> <span class="o">=</span> <span class="n">h</span><span class="o">.</span><span class="n">DIV</span><span class="p">(</span>
<span class="gp">... </span> <span class="s2">"this is some</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span>
<span class="gp">>>> </span><span class="n">summary</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">summary</span><span class="p">(</span><span class="n">serialised_html</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"html"</span><span class="p">)</span>
</pre></div>
-</div><div class="incremental"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">summary</span><span class="p">))</span>
+</div><div class="incremental"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">summary</span><span class="p">))</span>
<span class="go"><summary xmlns="http://www.w3.org/2005/Atom" type="html"></span>
<span class="go"> &lt;div&gt;this is some</span>
<span class="go"> &lt;a href="http://w3.org/MarkUp/"&gt;HTML&lt;/a&gt;</span>
<span class="gp">>>> </span><span class="n">summary</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">summary</span><span class="p">(</span><span class="n">xhtml_fragment</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"xhtml"</span><span class="p">)</span>
</pre></div>
-<div class="incremental"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">summary</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<div class="incremental"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">summary</span><span class="p">,</span> <span class="n">pretty_print</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
<span class="go"><summary xmlns="http://www.w3.org/2005/Atom" type="xhtml"></span>
<span class="go"> <html:div xmlns:html="http://www.w3.org/1999/xhtml">this is some</span>
<span class="go"> <html:a href="http://w3.org/MarkUp/">HTML</html:a></span>
<div class="highlight"><pre><span></span><span class="o">>>></span> <span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">objectify</span>
<span class="o">>>></span> <span class="n">feed</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">"atom-example.xml"</span><span class="p">)</span>
-<span class="o">>>></span> <span class="k">print</span><span class="p">(</span><span class="n">feed</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
+<span class="o">>>></span> <span class="nb">print</span><span class="p">(</span><span class="n">feed</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
<span class="n">Example</span> <span class="n">Feed</span>
-<span class="o">>>></span> <span class="k">print</span><span class="p">([</span><span class="n">entry</span><span class="o">.</span><span class="n">title</span> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">])</span>
+<span class="o">>>></span> <span class="nb">print</span><span class="p">([</span><span class="n">entry</span><span class="o">.</span><span class="n">title</span> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">])</span>
<span class="p">[</span><span class="s1">'Atom-Powered Robots Run Amok'</span><span class="p">]</span>
-<span class="o">>>></span> <span class="k">print</span><span class="p">(</span><span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
+<span class="o">>>></span> <span class="nb">print</span><span class="p">(</span><span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
<span class="n">Atom</span><span class="o">-</span><span class="n">Powered</span> <span class="n">Robots</span> <span class="n">Run</span> <span class="n">Amok</span>
</pre></div>
</div>
<span class="s2">"initialise the IDs of feed and entries"</span>
<span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">chain</span><span class="p">([</span><span class="bp">self</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">entry</span><span class="p">):</span>
- <span class="k">if</span> <span class="n">element</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">_ATOM_NS</span> <span class="o">+</span> <span class="s2">"id"</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">element</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">_ATOM_NS</span> <span class="o">+</span> <span class="s2">"id"</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="nb">id</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_ATOM_NS</span> <span class="o">+</span> <span class="s2">"id"</span><span class="p">)</span>
<span class="nb">id</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">make_guid</span><span class="p">()</span>
</pre></div>
<span class="c1"># or use ns.update(vars()) with appropriate class names</span>
<span class="c1"># create a parser that does some whitespace cleanup</span>
-<span class="n">atom_parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="n">atom_parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1"># make it use our Atom classes</span>
<span class="n">atom_parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">_atom_lookup</span><span class="p">)</span>
<div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">atom</span>
<span class="gp">>>> </span><span class="n">feed</span> <span class="o">=</span> <span class="n">atom</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">"ep2008/atom-example.xml"</span><span class="p">)</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">))</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">))</span>
<span class="go">1</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span><span class="n">entry</span><span class="o">.</span><span class="n">title</span> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span><span class="n">entry</span><span class="o">.</span><span class="n">title</span> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">])</span>
<span class="go">['Atom-Powered Robots Run Amok']</span>
<span class="gp">>>> </span><span class="n">link_tag</span> <span class="o">=</span> <span class="s2">"{</span><span class="si">%s</span><span class="s2">}link"</span> <span class="o">%</span> <span class="n">atom</span><span class="o">.</span><span class="n">ATOM_NAMESPACE</span>
-<span class="gp">>>> </span><span class="k">print</span><span class="p">([</span><span class="n">link</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"href"</span><span class="p">)</span> <span class="k">for</span> <span class="n">link</span> <span class="ow">in</span> <span class="n">feed</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">link_tag</span><span class="p">)])</span>
+<span class="gp">>>> </span><span class="nb">print</span><span class="p">([</span><span class="n">link</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"href"</span><span class="p">)</span> <span class="k">for</span> <span class="n">link</span> <span class="ow">in</span> <span class="n">feed</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">link_tag</span><span class="p">)])</span>
<span class="go">['http://example.org/', 'http://example.org/2003/12/13/atom03']</span>
</pre></div>
</div>
--- /dev/null
+import operator
+import re
+
+_parse_result_line = re.compile(
+ "\s*(?P<library>\w+):\s*(?P<name>\w+)\s+\((?P<config>[-\w]+\s[\w,]+)\s*\)\s+(?P<time>[0-9.]+\s+msec/pass)"
+).match
+
+_make_key = operator.itemgetter('library', 'name', 'config')
+
+
+def read_benchmark_results(benchmark_files):
+ benchmark_results = {}
+ for file_path in benchmark_files:
+ with open(file_path) as f:
+ for line in f:
+ result = _parse_result_line(line)
+ if not result:
+ continue
+ d = result.groupdict()
+ benchmark_results[_make_key(d)] = d['time']
+
+ return benchmark_results
+
+
+def update_results(text_file, benchmark_results):
+ with open(text_file) as f:
+ for line in f:
+ match = _parse_result_line(line)
+ if not match:
+ yield line
+ continue
+
+ d = match.groupdict()
+ key = _make_key(d)
+ try:
+ new_time = benchmark_results[key]
+ except KeyError:
+ print("Failed to update benchmark results of %r" % d)
+ yield line
+ else:
+ yield line.replace(d['time'], new_time)
+
+
+def main(log_files, doc_file="doc/performance.txt"):
+ results = read_benchmark_results(log_files)
+ if not results:
+ return
+
+ print("Found %d benchmark results" % len(results))
+ new_text = "".join(update_results(doc_file, results))
+ with open(doc_file, 'w') as f:
+ f.write(new_text)
+ print("Updated benchmark results in %s" % doc_file)
+
+
+if __name__ == '__main__':
+ import sys
+ main(sys.argv[1:])
Elements and ElementTrees are the same as for the ``xpath()`` method described
here.
-Note that the ``.find*()`` methods are usually faster than the full-blown XPath
-support. They also support incremental tree processing through the ``.iterfind()``
-method, whereas XPath always collects all results before returning them.
+.. note::
+
+ The ``.find*()`` methods are usually *faster* than the full-blown XPath
+ support. They also support incremental tree processing through the
+ ``.iterfind()`` method, whereas XPath always collects all results before
+ returning them. They are therefore recommended over XPath for both speed
+ and memory reasons, whenever there is no need for highly selective XPath
+ queries.
.. _`performance comparison`: performance.html#xpath
# override these and pass --static for a static build. See
# doc/build.txt for more information. If you do not pass --static
# changing this will have no effect.
-STATIC_INCLUDE_DIRS = []
-STATIC_LIBRARY_DIRS = []
-STATIC_CFLAGS = []
-STATIC_BINARIES = []
+def static_env_list(name, separator=None):
+ return [x.strip() for x in os.environ.get(name, "").split(separator) if x.strip()]
+
+STATIC_INCLUDE_DIRS = static_env_list("LXML_STATIC_INCLUDE_DIRS", separator=os.pathsep)
+STATIC_LIBRARY_DIRS = static_env_list("LXML_STATIC_LIBRARY_DIRS", separator=os.pathsep)
+STATIC_CFLAGS = static_env_list("LXML_STATIC_CFLAGS")
+STATIC_BINARIES = static_env_list("LXML_STATIC_BINARIES", separator=os.pathsep)
# create lxml-version.h file
versioninfo.create_version_h()
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
+ 'Programming Language :: Python :: 3.10',
'Programming Language :: C',
'Operating System :: OS Independent',
'Topic :: Text Processing :: Markup :: HTML',
if OPTION_RUN_TESTS:
print("Running tests.")
import test
- sys.exit( test.main(sys.argv[:1]) )
+ try:
+ sys.exit( test.main(sys.argv[:1]) )
+ except ImportError:
+ pass # we assume that the binaries were not built with this setup.py run
Metadata-Version: 2.1
Name: lxml
-Version: 4.6.3
+Version: 4.6.4
Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
Home-page: https://lxml.de/
Author: lxml dev team
Maintainer: lxml dev team
Maintainer-email: lxml-dev@lxml.de
License: BSD
-Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It
- provides safe and convenient access to these libraries using the ElementTree
- API.
-
- It extends the ElementTree API significantly to offer support for XPath,
- RelaxNG, XML Schema, XSLT, C14N and much more.
-
- To contact the project, go to the `project home page
- <https://lxml.de/>`_ or see our bug tracker at
- https://launchpad.net/lxml
-
- In case you want to use the current in-development version of lxml,
- you can get it from the github repository at
- https://github.com/lxml/lxml . Note that this requires Cython to
- build the sources, see the build instructions on the project home
- page. To the same end, running ``easy_install lxml==dev`` will
- install lxml from
- https://github.com/lxml/lxml/tarball/master#egg=lxml-dev if you have
- an appropriate version of Cython installed.
-
-
- After an official release of a new stable series, bug fixes may become
- available at
- https://github.com/lxml/lxml/tree/lxml-4.6 .
- Running ``easy_install lxml==4.6bugfix`` will install
- the unreleased branch state from
- https://github.com/lxml/lxml/tarball/lxml-4.6#egg=lxml-4.6bugfix
- as soon as a maintenance branch has been established. Note that this
- requires Cython to be installed at an appropriate version for the build.
-
- 4.6.3 (2021-03-21)
- ==================
-
- Bugs fixed
- ----------
-
- * A vulnerability (CVE-2021-28957) was discovered in the HTML Cleaner by Kevin Chung,
- which allowed JavaScript to pass through. The cleaner now removes the HTML5
- ``formaction`` attribute.
-
-
-
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: C
Classifier: Operating System :: OS Independent
Classifier: Topic :: Text Processing :: Markup :: HTML
Classifier: Topic :: Text Processing :: Markup :: XML
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*
+Provides-Extra: source
Provides-Extra: cssselect
Provides-Extra: html5
Provides-Extra: htmlsoup
-Provides-Extra: source
+License-File: LICENSE.txt
+License-File: LICENSES.txt
+
+lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It
+provides safe and convenient access to these libraries using the ElementTree
+API.
+
+It extends the ElementTree API significantly to offer support for XPath,
+RelaxNG, XML Schema, XSLT, C14N and much more.
+
+To contact the project, go to the `project home page
+<https://lxml.de/>`_ or see our bug tracker at
+https://launchpad.net/lxml
+
+In case you want to use the current in-development version of lxml,
+you can get it from the github repository at
+https://github.com/lxml/lxml . Note that this requires Cython to
+build the sources, see the build instructions on the project home
+page. To the same end, running ``easy_install lxml==dev`` will
+install lxml from
+https://github.com/lxml/lxml/tarball/master#egg=lxml-dev if you have
+an appropriate version of Cython installed.
+
+
+After an official release of a new stable series, bug fixes may become
+available at
+https://github.com/lxml/lxml/tree/lxml-4.6 .
+Running ``easy_install lxml==4.6bugfix`` will install
+the unreleased branch state from
+https://github.com/lxml/lxml/tarball/lxml-4.6#egg=lxml-4.6bugfix
+as soon as a maintenance branch has been established. Note that this
+requires Cython to be installed at an appropriate version for the build.
+
+4.6.4 (2021-11-01)
+==================
+
+Features added
+--------------
+
+* GH#317: A new property ``system_url`` was added to DTD entities.
+ Patch by Thirdegree.
+
+* GH#314: The ``STATIC_*`` variables in ``setup.py`` can now be passed via env vars.
+ Patch by Isaac Jurado.
+
+
+
+
CHANGES.txt
CREDITS.txt
INSTALL.txt
+LICENSE.txt
LICENSES.txt
MANIFEST.in
Makefile
doc/sax.txt
doc/test.xml
doc/tutorial.txt
+doc/update_performance_results.py
doc/valgrind.txt
doc/validation.txt
doc/xpathxslt.txt
doc/html/api.html
doc/html/build.html
doc/html/capi.html
-doc/html/changes-4.6.3.html
+doc/html/changes-4.6.4.html
doc/html/compatibility.html
doc/html/credits.html
doc/html/cssselect.html
doc/html/element_classes.html
doc/html/elementsoup.html
doc/html/extensions.html
-doc/html/flattr-badge-large.png
doc/html/html5parser.html
doc/html/index.html
doc/html/installation.html
doc/html/apidoc/search.html
doc/html/apidoc/_modules/index.html
doc/html/apidoc/_modules/lxml.html
-doc/html/apidoc/_modules/collections/abc.html
doc/html/apidoc/_modules/lxml/ElementInclude.html
doc/html/apidoc/_modules/lxml/doctestcompare.html
doc/html/apidoc/_modules/lxml/html.html
doc/html/apidoc/_static/css/theme.css
doc/licenses/BSD.txt
doc/licenses/GPL.txt
-doc/licenses/ZopePublicLicense.txt
doc/licenses/elementtree.txt
-doc/pdf/pubkey.asc
doc/s5/Makefile
doc/s5/lxml-ep2008.html
doc/s5/lxml-ep2008.txt
doc/s5/rst2s5.py
-doc/s5/tagpython.png
doc/s5/ep2008/atom-example.xml
doc/s5/ep2008/atom.py
doc/s5/ep2008/atom.rng
src/lxml/tests/__init__.py
src/lxml/tests/common_imports.py
src/lxml/tests/dummy_http_server.py
+src/lxml/tests/fuzz_xml_parse.py
src/lxml/tests/selftest.py
src/lxml/tests/selftest2.py
src/lxml/tests/shakespeare.html
# this is a package
-__version__ = "4.6.3"
+__version__ = "4.6.4"
def get_include():
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata
{
"distutils": {
"define_macros": [
[
- "CYTHON_CLINE_IN_TRACEBACK",
+ "CYTHON_CLINE_IN_TRACEBACK",
"0"
]
- ],
- "extra_compile_args": [
- "-w"
- ],
+ ],
"include_dirs": [
- "/usr/include/libxml2",
- "src",
+ "/usr/include/libxml2",
+ "src",
"src/lxml/includes"
- ],
- "name": "lxml._elementpath",
+ ],
+ "name": "lxml._elementpath",
"sources": [
"src/lxml/_elementpath.py"
]
- },
+ },
"module_name": "lxml._elementpath"
}
END: Cython Metadata */
+#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
+#endif /* PY_SSIZE_T_CLEAN */
#include "Python.h"
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_29_22"
-#define CYTHON_HEX_VERSION 0x001D16F0
+#define CYTHON_ABI "0_29_24"
+#define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
#define CYTHON_PEP393_ENABLED 1
+ #if defined(PyUnicode_IS_READY)
#define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
0 : _PyUnicode_Ready((PyObject *)(op)))
+ #else
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #endif
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
#define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
#if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
#else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
#endif
PyObject *gi_qualname;
PyObject *gi_modulename;
PyObject *gi_code;
+ PyObject *gi_frame;
int resume_label;
char is_running;
} __pyx_CoroutineObject;
static PyObject *__pyx_pf_4lxml_12_elementpath_3prepare_child(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_next, PyObject *__pyx_v_token) {
struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_1_prepare_child *__pyx_cur_scope;
PyObject *__pyx_v_select = 0;
+ PyObject *__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1 = 0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_select);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
static PyObject *__pyx_pf_4lxml_12_elementpath_5prepare_star(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_next, CYTHON_UNUSED PyObject *__pyx_v_token) {
PyObject *__pyx_v_select = 0;
+ PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2 = 0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_select);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_next, PyObject *__pyx_v_token) {
struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_4_prepare_descendant *__pyx_cur_scope;
PyObject *__pyx_v_select = 0;
+ PyObject *__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3 = 0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_select);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3);
__Pyx_XDECREF(__pyx_v_token);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
static PyObject *__pyx_pf_4lxml_12_elementpath_11prepare_parent(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_next, CYTHON_UNUSED PyObject *__pyx_v_token) {
PyObject *__pyx_v_select = 0;
+ PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4 = 0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_select);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
PyObject *__pyx_v_signature = NULL;
PyObject *__pyx_v_predicate = NULL;
PyObject *__pyx_v_select = 0;
+ PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_2generator5 = 0;
+ PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_5generator6 = 0;
+ PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7 = 0;
+ PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8 = 0;
+ PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9 = 0;
+ PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10 = 0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
__Pyx_XDECREF(__pyx_v_signature);
__Pyx_XDECREF(__pyx_v_predicate);
__Pyx_XDECREF(__pyx_v_select);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_17prepare_predicate_2generator5);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_17prepare_predicate_5generator6);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10);
__Pyx_XDECREF(__pyx_v_token);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
PyObject *__pyx_v__next = NULL;
PyObject *__pyx_v_token = NULL;
PyObject *__pyx_v_selector = NULL;
+ PyObject *__pyx_gb_4lxml_12_elementpath_20_build_path_iterator_2generator11 = 0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
__Pyx_XDECREF(__pyx_v__next);
__Pyx_XDECREF(__pyx_v_token);
__Pyx_XDECREF(__pyx_v_selector);
+ __Pyx_XDECREF(__pyx_gb_4lxml_12_elementpath_20_build_path_iterator_2generator11);
__Pyx_XDECREF(__pyx_v_path);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
#endif
/*--- Library function declarations ---*/
/*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
+ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
PyEval_InitThreads();
#endif
- #endif
/*--- Module creation code ---*/
#if CYTHON_PEP489_MULTI_PHASE_INIT
__pyx_m = __pyx_pyinit_module;
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
- ternaryfunc call = func->ob_type->tp_call;
+ ternaryfunc call = Py_TYPE(func)->tp_call;
if (unlikely(!call))
return PyObject_Call(func, arg, kw);
if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
- return PyUnicode_FromString(m->func.m_ml->ml_name);
+ Py_INCREF(m->func_qualname);
+ return m->func_qualname;
#else
return PyString_FromString(m->func.m_ml->ml_name);
#endif
}
#endif
Py_CLEAR(gen->gi_code);
+ Py_CLEAR(gen->gi_frame);
Py_CLEAR(gen->gi_name);
Py_CLEAR(gen->gi_qualname);
Py_CLEAR(gen->gi_modulename);
if (PyObject_CallFinalizerFromDealloc(self))
#else
Py_TYPE(gen)->tp_del(self);
- if (self->ob_refcnt > 0)
+ if (Py_REFCNT(self) > 0)
#endif
{
return;
}
__Pyx_ErrRestore(error_type, error_value, error_traceback);
#if !CYTHON_USE_TP_FINALIZE
- assert(self->ob_refcnt > 0);
+ assert(Py_REFCNT(self) > 0);
if (--self->ob_refcnt == 0) {
return;
}
{
- Py_ssize_t refcnt = self->ob_refcnt;
+ Py_ssize_t refcnt = Py_REFCNT(self);
_Py_NewReference(self);
__Pyx_SET_REFCNT(self, refcnt);
}
#if CYTHON_COMPILING_IN_CPYTHON
- assert(PyType_IS_GC(self->ob_type) &&
+ assert(PyType_IS_GC(Py_TYPE(self)) &&
_Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
_Py_DEC_REFTOTAL;
#endif
Py_XDECREF(tmp);
return 0;
}
+static PyObject *
+__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
+{
+ PyObject *frame = self->gi_frame;
+ if (!frame) {
+ if (unlikely(!self->gi_code)) {
+ Py_RETURN_NONE;
+ }
+ frame = (PyObject *) PyFrame_New(
+ PyThreadState_Get(), /*PyThreadState *tstate,*/
+ (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/
+ __pyx_d, /*PyObject *globals,*/
+ 0 /*PyObject *locals*/
+ );
+ if (unlikely(!frame))
+ return NULL;
+ self->gi_frame = frame;
+ }
+ Py_INCREF(frame);
+ return frame;
+}
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
PyObject *name, PyObject *qualname, PyObject *module_name) {
gen->gi_modulename = module_name;
Py_XINCREF(code);
gen->gi_code = code;
+ gen->gi_frame = NULL;
PyObject_GC_Track(gen);
return gen;
}
(char*) PyDoc_STR("name of the generator"), 0},
{(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
(char*) PyDoc_STR("qualified name of the generator"), 0},
+ {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
+ (char*) PyDoc_STR("Frame of the generator"), 0},
{0, 0, 0, 0, 0}
};
static PyTypeObject __pyx_GeneratorType_type = {
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata
{
"distutils": {
"define_macros": [
[
- "CYTHON_CLINE_IN_TRACEBACK",
+ "CYTHON_CLINE_IN_TRACEBACK",
"0"
]
- ],
- "extra_compile_args": [
- "-w"
- ],
+ ],
"include_dirs": [
- "/usr/include/libxml2",
- "src",
+ "/usr/include/libxml2",
+ "src",
"src/lxml/includes"
- ],
- "name": "lxml.builder",
+ ],
+ "name": "lxml.builder",
"sources": [
"src/lxml/builder.py"
]
- },
+ },
"module_name": "lxml.builder"
}
END: Cython Metadata */
+#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
+#endif /* PY_SSIZE_T_CLEAN */
#include "Python.h"
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_29_22"
-#define CYTHON_HEX_VERSION 0x001D16F0
+#define CYTHON_ABI "0_29_24"
+#define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
#define CYTHON_PEP393_ENABLED 1
+ #if defined(PyUnicode_IS_READY)
#define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
0 : _PyUnicode_Ready((PyObject *)(op)))
+ #else
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #endif
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
#define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
#if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
#else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
#endif
/* CallableCheck.proto */
#if CYTHON_USE_TYPE_SLOTS && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyCallable_Check(obj) ((obj)->ob_type->tp_call != NULL)
+#define __Pyx_PyCallable_Check(obj) (Py_TYPE(obj)->tp_call != NULL)
#else
#define __Pyx_PyCallable_Check(obj) PyCallable_Check(obj)
#endif
#endif
/*--- Library function declarations ---*/
/*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
+ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
PyEval_InitThreads();
#endif
- #endif
/*--- Module creation code ---*/
#if CYTHON_PEP489_MULTI_PHASE_INIT
__pyx_m = __pyx_pyinit_module;
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
- ternaryfunc call = func->ob_type->tp_call;
+ ternaryfunc call = Py_TYPE(func)->tp_call;
if (unlikely(!call))
return PyObject_Call(func, arg, kw);
if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
- return PyUnicode_FromString(m->func.m_ml->ml_name);
+ Py_INCREF(m->func_qualname);
+ return m->func_qualname;
#else
return PyString_FromString(m->func.m_ml->ml_name);
#endif
_assertValidDTDNode(self, self._c_node)
return funicodeOrNone(self._c_node.content)
+ @property
+ def system_url(self):
+ _assertValidDTDNode(self, self._c_node)
+ return funicodeOrNone(self._c_node.SystemID)
+
################################################################################
# DTD
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata
{
"distutils": {
"define_macros": [
[
- "CYTHON_CLINE_IN_TRACEBACK",
+ "CYTHON_CLINE_IN_TRACEBACK",
"0"
]
- ],
+ ],
"depends": [
- "/usr/include/libxml2/libxml/HTMLtree.h",
- "/usr/include/libxml2/libxml/chvalid.h",
- "/usr/include/libxml2/libxml/encoding.h",
- "/usr/include/libxml2/libxml/globals.h",
- "/usr/include/libxml2/libxml/hash.h",
- "/usr/include/libxml2/libxml/tree.h",
- "/usr/include/libxml2/libxml/uri.h",
- "/usr/include/libxml2/libxml/valid.h",
- "/usr/include/libxml2/libxml/xmlIO.h",
- "/usr/include/libxml2/libxml/xmlmemory.h",
- "/usr/include/libxml2/libxml/xmlsave.h",
- "/usr/include/libxml2/libxml/xmlstring.h",
- "/usr/include/libxml2/libxml/xmlversion.h",
- "src/lxml/apihelpers.pxi",
- "src/lxml/classlookup.pxi",
- "src/lxml/cleanup.pxi",
- "src/lxml/debug.pxi",
- "src/lxml/docloader.pxi",
- "src/lxml/dtd.pxi",
- "src/lxml/extensions.pxi",
- "src/lxml/includes/__init__.pxd",
- "src/lxml/includes/c14n.pxd",
- "src/lxml/includes/config.pxd",
- "src/lxml/includes/dtdvalid.pxd",
- "src/lxml/includes/etree_defs.h",
- "src/lxml/includes/htmlparser.pxd",
- "src/lxml/includes/lxml-version.h",
- "src/lxml/includes/relaxng.pxd",
- "src/lxml/includes/schematron.pxd",
- "src/lxml/includes/tree.pxd",
- "src/lxml/includes/uri.pxd",
- "src/lxml/includes/xinclude.pxd",
- "src/lxml/includes/xmlerror.pxd",
- "src/lxml/includes/xmlparser.pxd",
- "src/lxml/includes/xmlschema.pxd",
- "src/lxml/includes/xpath.pxd",
- "src/lxml/includes/xslt.pxd",
- "src/lxml/iterparse.pxi",
- "src/lxml/lxml_endian.h",
- "src/lxml/nsclasses.pxi",
- "src/lxml/parser.pxi",
- "src/lxml/parsertarget.pxi",
- "src/lxml/proxy.pxi",
- "src/lxml/public-api.pxi",
- "src/lxml/readonlytree.pxi",
- "src/lxml/relaxng.pxi",
- "src/lxml/saxparser.pxi",
- "src/lxml/schematron.pxi",
- "src/lxml/serializer.pxi",
- "src/lxml/xinclude.pxi",
- "src/lxml/xmlerror.pxi",
- "src/lxml/xmlid.pxi",
- "src/lxml/xmlschema.pxi",
- "src/lxml/xpath.pxi",
- "src/lxml/xslt.pxi",
+ "/usr/include/libxml2/libxml/HTMLtree.h",
+ "/usr/include/libxml2/libxml/chvalid.h",
+ "/usr/include/libxml2/libxml/encoding.h",
+ "/usr/include/libxml2/libxml/globals.h",
+ "/usr/include/libxml2/libxml/hash.h",
+ "/usr/include/libxml2/libxml/tree.h",
+ "/usr/include/libxml2/libxml/uri.h",
+ "/usr/include/libxml2/libxml/valid.h",
+ "/usr/include/libxml2/libxml/xmlIO.h",
+ "/usr/include/libxml2/libxml/xmlmemory.h",
+ "/usr/include/libxml2/libxml/xmlsave.h",
+ "/usr/include/libxml2/libxml/xmlstring.h",
+ "/usr/include/libxml2/libxml/xmlversion.h",
+ "src/lxml/apihelpers.pxi",
+ "src/lxml/classlookup.pxi",
+ "src/lxml/cleanup.pxi",
+ "src/lxml/debug.pxi",
+ "src/lxml/docloader.pxi",
+ "src/lxml/dtd.pxi",
+ "src/lxml/extensions.pxi",
+ "src/lxml/includes/__init__.pxd",
+ "src/lxml/includes/c14n.pxd",
+ "src/lxml/includes/config.pxd",
+ "src/lxml/includes/dtdvalid.pxd",
+ "src/lxml/includes/etree_defs.h",
+ "src/lxml/includes/htmlparser.pxd",
+ "src/lxml/includes/lxml-version.h",
+ "src/lxml/includes/relaxng.pxd",
+ "src/lxml/includes/schematron.pxd",
+ "src/lxml/includes/tree.pxd",
+ "src/lxml/includes/uri.pxd",
+ "src/lxml/includes/xinclude.pxd",
+ "src/lxml/includes/xmlerror.pxd",
+ "src/lxml/includes/xmlparser.pxd",
+ "src/lxml/includes/xmlschema.pxd",
+ "src/lxml/includes/xpath.pxd",
+ "src/lxml/includes/xslt.pxd",
+ "src/lxml/iterparse.pxi",
+ "src/lxml/lxml_endian.h",
+ "src/lxml/nsclasses.pxi",
+ "src/lxml/parser.pxi",
+ "src/lxml/parsertarget.pxi",
+ "src/lxml/proxy.pxi",
+ "src/lxml/public-api.pxi",
+ "src/lxml/readonlytree.pxi",
+ "src/lxml/relaxng.pxi",
+ "src/lxml/saxparser.pxi",
+ "src/lxml/schematron.pxi",
+ "src/lxml/serializer.pxi",
+ "src/lxml/xinclude.pxi",
+ "src/lxml/xmlerror.pxi",
+ "src/lxml/xmlid.pxi",
+ "src/lxml/xmlschema.pxi",
+ "src/lxml/xpath.pxi",
+ "src/lxml/xslt.pxi",
"src/lxml/xsltext.pxi"
- ],
- "extra_compile_args": [
- "-w"
- ],
+ ],
"include_dirs": [
- "src/lxml",
- "src/lxml/includes",
- "/usr/include/libxml2",
+ "src/lxml",
+ "src/lxml/includes",
+ "/usr/include/libxml2",
"src"
- ],
+ ],
"libraries": [
- "xslt",
- "exslt",
- "xml2",
- "rt",
- "z",
+ "xslt",
+ "exslt",
+ "xml2",
+ "rt",
+ "z",
"m"
- ],
- "name": "lxml.etree",
+ ],
+ "name": "lxml.etree",
"sources": [
"src/lxml/etree.pyx"
]
- },
+ },
"module_name": "lxml.etree"
}
END: Cython Metadata */
+#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
+#endif /* PY_SSIZE_T_CLEAN */
#include "Python.h"
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_29_22"
-#define CYTHON_HEX_VERSION 0x001D16F0
+#define CYTHON_ABI "0_29_24"
+#define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
#define CYTHON_PEP393_ENABLED 1
+ #if defined(PyUnicode_IS_READY)
#define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
0 : _PyUnicode_Ready((PyObject *)(op)))
+ #else
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #endif
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
#define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
#if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
#else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
#endif
__pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT
};
-/* "src/lxml/serializer.pxi":1389
+/* "src/lxml/serializer.pxi":1388
*
*
* cdef enum _IncrementalFileWriterStatus: # <<<<<<<<<<<<<<
int set_document_loader;
};
-/* "src/lxml/serializer.pxi":1051
+/* "src/lxml/serializer.pxi":1050
* raise ValueError(f'Prefix {prefix} of QName "{prefixed_name}" is not declared in scope')
*
* cdef _qname(self, qname, uri=None): # <<<<<<<<<<<<<<
PyObject *uri;
};
-/* "src/lxml/serializer.pxi":1131
+/* "src/lxml/serializer.pxi":1130
* self._start(tag, attrs, new_namespaces)
*
* cdef _start(self, tag, attrs, new_namespaces, qname_text=None): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":648
+/* "src/lxml/serializer.pxi":647
* @cython.final
* @cython.internal
* cdef class _FilelikeWriter: # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":966
+/* "src/lxml/serializer.pxi":965
*
*
* cdef class C14NWriterTarget: # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1289
+/* "src/lxml/serializer.pxi":1288
* # incremental serialisation
*
* cdef class xmlfile: # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1378
+/* "src/lxml/serializer.pxi":1377
*
*
* cdef class htmlfile(xmlfile): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1399
+/* "src/lxml/serializer.pxi":1398
* @cython.final
* @cython.internal
* cdef class _IncrementalFileWriter: # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1703
+/* "src/lxml/serializer.pxi":1702
* @cython.final
* @cython.internal
* cdef class _AsyncDataWriter: # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1722
+/* "src/lxml/serializer.pxi":1721
* @cython.final
* @cython.internal
* cdef class _AsyncIncrementalFileWriter: # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1787
+/* "src/lxml/serializer.pxi":1786
* @cython.final
* @cython.internal
* cdef class _AsyncFileWriterElement: # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1812
+/* "src/lxml/serializer.pxi":1811
* @cython.internal
* @cython.freelist(8)
* cdef class _FileWriterElement: # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1836
+/* "src/lxml/serializer.pxi":1835
* @cython.internal
* @cython.freelist(8)
* cdef class _MethodChanger: # <<<<<<<<<<<<<<
};
-/* "src/lxml/dtd.pxi":265
+/* "src/lxml/dtd.pxi":270
* # DTD
*
* cdef class DTD(_Validator): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":630
+/* "src/lxml/serializer.pxi":629
*
* @contextmanager
* def _open_utf8_file(file, compression=0): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1039
+/* "src/lxml/serializer.pxi":1038
* self._root_done = False
*
* def _iter_namespaces(self, ns_stack): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1358
+/* "src/lxml/serializer.pxi":1357
* self.output_file = None
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1369
+/* "src/lxml/serializer.pxi":1368
* return self.async_writer
*
* async def __aexit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1745
+/* "src/lxml/serializer.pxi":1744
* return None
*
* async def flush(self): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1751
+/* "src/lxml/serializer.pxi":1750
* await self._async_outfile.write(data)
*
* async def write_declaration(self, version=None, standalone=None, doctype=None): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1757
+/* "src/lxml/serializer.pxi":1756
* await self._async_outfile.write(data)
*
* async def write_doctype(self, doctype): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1763
+/* "src/lxml/serializer.pxi":1762
* await self._async_outfile.write(data)
*
* async def write(self, *args, with_tail=True, pretty_print=False, method=None): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1776
+/* "src/lxml/serializer.pxi":1775
* return _AsyncFileWriterElement(element_writer, self)
*
* async def _close(self, bint raise_on_error): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1796
+/* "src/lxml/serializer.pxi":1795
* self._writer = writer
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1802
+/* "src/lxml/serializer.pxi":1801
* await self._writer._async_outfile.write(data)
*
* async def __aexit__(self, *args): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1864
+/* "src/lxml/serializer.pxi":1863
* self._exited = True
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
};
-/* "src/lxml/serializer.pxi":1868
+/* "src/lxml/serializer.pxi":1867
* return self.__enter__()
*
* async def __aexit__(self, *args): # <<<<<<<<<<<<<<
};
-/* "src/lxml/dtd.pxi":320
+/* "src/lxml/dtd.pxi":325
* return funicodeOrNone(self._c_dtd.SystemID)
*
* def iterelements(self): # <<<<<<<<<<<<<<
};
-/* "src/lxml/dtd.pxi":333
+/* "src/lxml/dtd.pxi":338
* return list(self.iterelements())
*
* def iterentities(self): # <<<<<<<<<<<<<<
static void __pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserContext(struct __pyx_obj_4lxml_5etree__TargetParserContext *, xmlDoc *);
-/* "src/lxml/serializer.pxi":648
+/* "src/lxml/serializer.pxi":647
* @cython.final
* @cython.internal
* cdef class _FilelikeWriter: # <<<<<<<<<<<<<<
static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5etree__FilelikeWriter *);
-/* "src/lxml/serializer.pxi":966
+/* "src/lxml/serializer.pxi":965
*
*
* cdef class C14NWriterTarget: # <<<<<<<<<<<<<<
static struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *__pyx_vtabptr_4lxml_5etree_C14NWriterTarget;
-/* "src/lxml/serializer.pxi":1399
+/* "src/lxml/serializer.pxi":1398
* @cython.final
* @cython.internal
* cdef class _IncrementalFileWriter: # <<<<<<<<<<<<<<
static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *, int);
-/* "src/lxml/serializer.pxi":1703
+/* "src/lxml/serializer.pxi":1702
* @cython.final
* @cython.internal
* cdef class _AsyncDataWriter: # <<<<<<<<<<<<<<
static PyObject *__pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(struct __pyx_obj_4lxml_5etree__AsyncDataWriter *);
-/* "src/lxml/serializer.pxi":1722
+/* "src/lxml/serializer.pxi":1721
* @cython.final
* @cython.internal
* cdef class _AsyncIncrementalFileWriter: # <<<<<<<<<<<<<<
static struct __pyx_vtabstruct_4lxml_5etree__Validator *__pyx_vtabptr_4lxml_5etree__Validator;
-/* "src/lxml/dtd.pxi":265
+/* "src/lxml/dtd.pxi":270
* # DTD
*
* cdef class DTD(_Validator): # <<<<<<<<<<<<<<
/* CallableCheck.proto */
#if CYTHON_USE_TYPE_SLOTS && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyCallable_Check(obj) ((obj)->ob_type->tp_call != NULL)
+#define __Pyx_PyCallable_Check(obj) (Py_TYPE(obj)->tp_call != NULL)
#else
#define __Pyx_PyCallable_Check(obj) PyCallable_Check(obj)
#endif
PyObject *gi_qualname;
PyObject *gi_modulename;
PyObject *gi_code;
+ PyObject *gi_frame;
int resume_label;
char is_running;
} __pyx_CoroutineObject;
/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_xmlParserErrors(xmlParserErrors value);
-/* CIntFromPy.proto */
-static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);
-
/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
+/* CIntFromPy.proto */
+static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);
+
/* CIntFromPy.proto */
static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *);
static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4name___get__(struct __pyx_obj_4lxml_5etree__DTDEntityDecl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4orig___get__(struct __pyx_obj_4lxml_5etree__DTDEntityDecl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_7content___get__(struct __pyx_obj_4lxml_5etree__DTDEntityDecl *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_10system_url___get__(struct __pyx_obj_4lxml_5etree__DTDEntityDecl *__pyx_v_self); /* proto */
static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_self, PyObject *__pyx_v_file, PyObject *__pyx_v_external_id); /* proto */
static PyObject *__pyx_pf_4lxml_5etree_3DTD_4name___get__(struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_5etree_3DTD_11external_id___get__(struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_self); /* proto */
__Pyx_INCREF(__pyx_v__path);
__Pyx_GIVEREF(__pyx_v__path);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__path);
- __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_evaluator), __pyx_t_3, __pyx_v__variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1582, __pyx_L1_error)
+ __pyx_t_2 = PyDict_Copy(__pyx_v__variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1582, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_evaluator), __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1582, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
goto __pyx_L0;
/* "lxml/etree.pyx":1573
__Pyx_INCREF(__pyx_v__path);
__Pyx_GIVEREF(__pyx_v__path);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v__path);
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_evaluator), __pyx_t_4, __pyx_v__variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2296, __pyx_L1_error)
+ __pyx_t_3 = PyDict_Copy(__pyx_v__variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2296, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_evaluator), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2296, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
/* "lxml/etree.pyx":2273
__Pyx_INCREF(((PyObject *)__pyx_v_self));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self));
PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self));
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_style), __pyx_t_4, __pyx_v__kw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2315, __pyx_L1_error)
+ __pyx_t_3 = PyDict_Copy(__pyx_v__kw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2315, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_style), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2315, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
/* "lxml/etree.pyx":2298
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
__pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3458, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3458, __pyx_L1_error)
+ __pyx_t_2 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3458, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3458, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3458, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_2);
- PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3458, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_4);
+ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
goto __pyx_L0;
/* "lxml/etree.pyx":3449
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("lxml.etree.tostringlist", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
+ PyObject *__pyx_t_4 = NULL;
int __pyx_t_5;
+ int __pyx_t_6;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
__Pyx_INCREF(((PyObject *)__pyx_v_self));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self));
PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1564, __pyx_L1_error)
+ __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1564, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1564, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "src/lxml/parser.pxi":1565
* def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
* events = ('end',)
* self._setBaseURL(base_url)
*/
- __pyx_t_4 = (__pyx_v_events == Py_None);
- __pyx_t_5 = (__pyx_t_4 != 0);
- if (__pyx_t_5) {
+ __pyx_t_5 = (__pyx_v_events == Py_None);
+ __pyx_t_6 = (__pyx_t_5 != 0);
+ if (__pyx_t_6) {
/* "src/lxml/parser.pxi":1566
* XMLParser.__init__(self, **kwargs)
* self._collectEvents(events, tag)
*
*/
- __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1567, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1567, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "src/lxml/parser.pxi":1568
* events = ('end',)
*
* def read_events(self):
*/
- __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1568, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1568, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "src/lxml/parser.pxi":1563
* source, you can pass the ``base_url``.
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("lxml.etree.XMLPullParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
+ PyObject *__pyx_t_4 = NULL;
int __pyx_t_5;
+ int __pyx_t_6;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
__Pyx_INCREF(((PyObject *)__pyx_v_self));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self));
PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1737, __pyx_L1_error)
+ __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1737, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1737, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "src/lxml/parser.pxi":1738
* def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
* events = ('end',)
* self._setBaseURL(base_url)
*/
- __pyx_t_4 = (__pyx_v_events == Py_None);
- __pyx_t_5 = (__pyx_t_4 != 0);
- if (__pyx_t_5) {
+ __pyx_t_5 = (__pyx_v_events == Py_None);
+ __pyx_t_6 = (__pyx_t_5 != 0);
+ if (__pyx_t_6) {
/* "src/lxml/parser.pxi":1739
* HTMLParser.__init__(self, **kwargs)
* self._collectEvents(events, tag)
*
*/
- __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1740, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1740, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "src/lxml/parser.pxi":1741
* events = ('end',)
*
* def read_events(self):
*/
- __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1741, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1741, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "src/lxml/parser.pxi":1736
* source, you can pass the ``base_url``.
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("lxml.etree.HTMLPullParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
* needs_conversion = 1
*
* if needs_conversion: # <<<<<<<<<<<<<<
- * text = python.PyUnicode_DecodeUTF8(
- * <const_char*>c_text, tree.xmlBufferLength(c_buffer), 'strict')
+ * text = (<const_char*>c_text)[:tree.xmlBufferLength(c_buffer)].decode('utf8')
+ * if encoding is not unicode:
*/
__pyx_t_2 = (__pyx_v_needs_conversion != 0);
if (__pyx_t_2) {
/* "src/lxml/serializer.pxi":71
*
* if needs_conversion:
- * text = python.PyUnicode_DecodeUTF8( # <<<<<<<<<<<<<<
- * <const_char*>c_text, tree.xmlBufferLength(c_buffer), 'strict')
+ * text = (<const_char*>c_text)[:tree.xmlBufferLength(c_buffer)].decode('utf8') # <<<<<<<<<<<<<<
* if encoding is not unicode:
+ * encoding = _utf8(encoding)
*/
- __pyx_t_3 = PyUnicode_DecodeUTF8(((const char *)__pyx_v_c_text), xmlBufferLength(__pyx_v_c_buffer), ((char *)"strict")); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 71, __pyx_L14_error)
+ __pyx_t_3 = __Pyx_decode_c_string(((const char *)__pyx_v_c_text), 0, xmlBufferLength(__pyx_v_c_buffer), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 71, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_text = __pyx_t_3;
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":73
- * text = python.PyUnicode_DecodeUTF8(
- * <const_char*>c_text, tree.xmlBufferLength(c_buffer), 'strict')
+ /* "src/lxml/serializer.pxi":72
+ * if needs_conversion:
+ * text = (<const_char*>c_text)[:tree.xmlBufferLength(c_buffer)].decode('utf8')
* if encoding is not unicode: # <<<<<<<<<<<<<<
* encoding = _utf8(encoding)
* text = python.PyUnicode_AsEncodedString(
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":74
- * <const_char*>c_text, tree.xmlBufferLength(c_buffer), 'strict')
+ /* "src/lxml/serializer.pxi":73
+ * text = (<const_char*>c_text)[:tree.xmlBufferLength(c_buffer)].decode('utf8')
* if encoding is not unicode:
* encoding = _utf8(encoding) # <<<<<<<<<<<<<<
* text = python.PyUnicode_AsEncodedString(
* text, encoding, 'strict')
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 74, __pyx_L14_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 73, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":76
+ /* "src/lxml/serializer.pxi":75
* encoding = _utf8(encoding)
* text = python.PyUnicode_AsEncodedString(
* text, encoding, 'strict') # <<<<<<<<<<<<<<
* else:
* text = (<unsigned char*>c_text)[:tree.xmlBufferLength(c_buffer)]
*/
- __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_encoding); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(9, 76, __pyx_L14_error)
+ __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_encoding); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(9, 75, __pyx_L14_error)
- /* "src/lxml/serializer.pxi":75
+ /* "src/lxml/serializer.pxi":74
* if encoding is not unicode:
* encoding = _utf8(encoding)
* text = python.PyUnicode_AsEncodedString( # <<<<<<<<<<<<<<
* text, encoding, 'strict')
* else:
*/
- __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_text, __pyx_t_6, ((char *)"strict")); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 75, __pyx_L14_error)
+ __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_text, __pyx_t_6, ((char *)"strict")); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 74, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_text, __pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":73
- * text = python.PyUnicode_DecodeUTF8(
- * <const_char*>c_text, tree.xmlBufferLength(c_buffer), 'strict')
+ /* "src/lxml/serializer.pxi":72
+ * if needs_conversion:
+ * text = (<const_char*>c_text)[:tree.xmlBufferLength(c_buffer)].decode('utf8')
* if encoding is not unicode: # <<<<<<<<<<<<<<
* encoding = _utf8(encoding)
* text = python.PyUnicode_AsEncodedString(
* needs_conversion = 1
*
* if needs_conversion: # <<<<<<<<<<<<<<
- * text = python.PyUnicode_DecodeUTF8(
- * <const_char*>c_text, tree.xmlBufferLength(c_buffer), 'strict')
+ * text = (<const_char*>c_text)[:tree.xmlBufferLength(c_buffer)].decode('utf8')
+ * if encoding is not unicode:
*/
goto __pyx_L22;
}
- /* "src/lxml/serializer.pxi":78
+ /* "src/lxml/serializer.pxi":77
* text, encoding, 'strict')
* else:
* text = (<unsigned char*>c_text)[:tree.xmlBufferLength(c_buffer)] # <<<<<<<<<<<<<<
* tree.xmlBufferFree(c_buffer)
*/
/*else*/ {
- __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_v_c_text)) + 0, xmlBufferLength(__pyx_v_c_buffer) - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 78, __pyx_L14_error)
+ __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_v_c_text)) + 0, xmlBufferLength(__pyx_v_c_buffer) - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 77, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_text = __pyx_t_3;
__pyx_t_3 = 0;
__pyx_L22:;
}
- /* "src/lxml/serializer.pxi":80
+ /* "src/lxml/serializer.pxi":79
* text = (<unsigned char*>c_text)[:tree.xmlBufferLength(c_buffer)]
* finally:
* tree.xmlBufferFree(c_buffer) # <<<<<<<<<<<<<<
__pyx_L15:;
}
- /* "src/lxml/serializer.pxi":81
+ /* "src/lxml/serializer.pxi":80
* finally:
* tree.xmlBufferFree(c_buffer)
* return text # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":84
+/* "src/lxml/serializer.pxi":83
*
*
* cdef _tostring(_Element element, encoding, doctype, method, # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_encoding);
__Pyx_INCREF(__pyx_v_doctype);
- /* "src/lxml/serializer.pxi":98
+ /* "src/lxml/serializer.pxi":97
* cdef int c_method
* cdef int error_result
* if element is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":99
+ /* "src/lxml/serializer.pxi":98
* cdef int error_result
* if element is None:
* return None # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":98
+ /* "src/lxml/serializer.pxi":97
* cdef int c_method
* cdef int error_result
* if element is None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":100
+ /* "src/lxml/serializer.pxi":99
* if element is None:
* return None
* _assertValidNode(element) # <<<<<<<<<<<<<<
* c_method = _findOutputMethod(method)
* if c_method == OUTPUT_METHOD_TEXT:
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 100, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 99, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":101
+ /* "src/lxml/serializer.pxi":100
* return None
* _assertValidNode(element)
* c_method = _findOutputMethod(method) # <<<<<<<<<<<<<<
* if c_method == OUTPUT_METHOD_TEXT:
* return _textToString(element._c_node, encoding, with_tail)
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 101, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 100, __pyx_L1_error)
__pyx_v_c_method = __pyx_t_3;
- /* "src/lxml/serializer.pxi":102
+ /* "src/lxml/serializer.pxi":101
* _assertValidNode(element)
* c_method = _findOutputMethod(method)
* if c_method == OUTPUT_METHOD_TEXT: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":103
+ /* "src/lxml/serializer.pxi":102
* c_method = _findOutputMethod(method)
* if c_method == OUTPUT_METHOD_TEXT:
* return _textToString(element._c_node, encoding, with_tail) # <<<<<<<<<<<<<<
* c_enc = NULL
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __pyx_f_4lxml_5etree__textToString(__pyx_v_element->_c_node, __pyx_v_encoding, __pyx_v_with_tail); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 103, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__textToString(__pyx_v_element->_c_node, __pyx_v_encoding, __pyx_v_with_tail); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 102, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":102
+ /* "src/lxml/serializer.pxi":101
* _assertValidNode(element)
* c_method = _findOutputMethod(method)
* if c_method == OUTPUT_METHOD_TEXT: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":104
+ /* "src/lxml/serializer.pxi":103
* if c_method == OUTPUT_METHOD_TEXT:
* return _textToString(element._c_node, encoding, with_tail)
* if encoding is None or encoding is unicode: # <<<<<<<<<<<<<<
__pyx_L6_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":105
+ /* "src/lxml/serializer.pxi":104
* return _textToString(element._c_node, encoding, with_tail)
* if encoding is None or encoding is unicode:
* c_enc = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_c_enc = NULL;
- /* "src/lxml/serializer.pxi":104
+ /* "src/lxml/serializer.pxi":103
* if c_method == OUTPUT_METHOD_TEXT:
* return _textToString(element._c_node, encoding, with_tail)
* if encoding is None or encoding is unicode: # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "src/lxml/serializer.pxi":107
+ /* "src/lxml/serializer.pxi":106
* c_enc = NULL
* else:
* encoding = _utf8(encoding) # <<<<<<<<<<<<<<
* if doctype is None:
*/
/*else*/ {
- __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 107, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 106, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":108
+ /* "src/lxml/serializer.pxi":107
* else:
* encoding = _utf8(encoding)
* c_enc = _cstr(encoding) # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "src/lxml/serializer.pxi":109
+ /* "src/lxml/serializer.pxi":108
* encoding = _utf8(encoding)
* c_enc = _cstr(encoding)
* if doctype is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":110
+ /* "src/lxml/serializer.pxi":109
* c_enc = _cstr(encoding)
* if doctype is None:
* c_doctype = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_c_doctype = NULL;
- /* "src/lxml/serializer.pxi":109
+ /* "src/lxml/serializer.pxi":108
* encoding = _utf8(encoding)
* c_enc = _cstr(encoding)
* if doctype is None: # <<<<<<<<<<<<<<
goto __pyx_L8;
}
- /* "src/lxml/serializer.pxi":112
+ /* "src/lxml/serializer.pxi":111
* c_doctype = NULL
* else:
* doctype = _utf8(doctype) # <<<<<<<<<<<<<<
* # it is necessary to *and* find the encoding handler *and* use
*/
/*else*/ {
- __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_doctype); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 112, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_doctype); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 111, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_doctype, __pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":113
+ /* "src/lxml/serializer.pxi":112
* else:
* doctype = _utf8(doctype)
* c_doctype = _xcstr(doctype) # <<<<<<<<<<<<<<
}
__pyx_L8:;
- /* "src/lxml/serializer.pxi":116
+ /* "src/lxml/serializer.pxi":115
* # it is necessary to *and* find the encoding handler *and* use
* # encoding during output
* enchandler = tree.xmlFindCharEncodingHandler(c_enc) # <<<<<<<<<<<<<<
*/
__pyx_v_enchandler = xmlFindCharEncodingHandler(__pyx_v_c_enc);
- /* "src/lxml/serializer.pxi":117
+ /* "src/lxml/serializer.pxi":116
* # encoding during output
* enchandler = tree.xmlFindCharEncodingHandler(c_enc)
* if enchandler is NULL and c_enc is not NULL: # <<<<<<<<<<<<<<
__pyx_L10_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":118
+ /* "src/lxml/serializer.pxi":117
* enchandler = tree.xmlFindCharEncodingHandler(c_enc)
* if enchandler is NULL and c_enc is not NULL:
* if encoding is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":119
+ /* "src/lxml/serializer.pxi":118
* if enchandler is NULL and c_enc is not NULL:
* if encoding is not None:
* encoding = encoding.decode('UTF-8') # <<<<<<<<<<<<<<
* raise LookupError, f"unknown encoding: '{encoding}'"
* c_buffer = tree.xmlAllocOutputBuffer(enchandler)
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 119, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
}
__pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_kp_s_UTF_8) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_kp_s_UTF_8);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 119, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":118
+ /* "src/lxml/serializer.pxi":117
* enchandler = tree.xmlFindCharEncodingHandler(c_enc)
* if enchandler is NULL and c_enc is not NULL:
* if encoding is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":120
+ /* "src/lxml/serializer.pxi":119
* if encoding is not None:
* encoding = encoding.decode('UTF-8')
* raise LookupError, f"unknown encoding: '{encoding}'" # <<<<<<<<<<<<<<
* c_buffer = tree.xmlAllocOutputBuffer(enchandler)
* if c_buffer is NULL:
*/
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 120, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 119, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8 = 0;
__pyx_t_9 = 127;
__pyx_t_8 += 19;
__Pyx_GIVEREF(__pyx_kp_u_unknown_encoding);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_unknown_encoding);
- __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_encoding, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 120, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_encoding, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 119, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_9 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_9) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_9;
__pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
__pyx_t_8 += 1;
__Pyx_GIVEREF(__pyx_kp_u__22);
PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__22);
- __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 120, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 119, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_builtin_LookupError, __pyx_t_6, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __PYX_ERR(9, 120, __pyx_L1_error)
+ __PYX_ERR(9, 119, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":117
+ /* "src/lxml/serializer.pxi":116
* # encoding during output
* enchandler = tree.xmlFindCharEncodingHandler(c_enc)
* if enchandler is NULL and c_enc is not NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":121
+ /* "src/lxml/serializer.pxi":120
* encoding = encoding.decode('UTF-8')
* raise LookupError, f"unknown encoding: '{encoding}'"
* c_buffer = tree.xmlAllocOutputBuffer(enchandler) # <<<<<<<<<<<<<<
*/
__pyx_v_c_buffer = xmlAllocOutputBuffer(__pyx_v_enchandler);
- /* "src/lxml/serializer.pxi":122
+ /* "src/lxml/serializer.pxi":121
* raise LookupError, f"unknown encoding: '{encoding}'"
* c_buffer = tree.xmlAllocOutputBuffer(enchandler)
* if c_buffer is NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_buffer == NULL) != 0);
if (unlikely(__pyx_t_2)) {
- /* "src/lxml/serializer.pxi":123
+ /* "src/lxml/serializer.pxi":122
* c_buffer = tree.xmlAllocOutputBuffer(enchandler)
* if c_buffer is NULL:
* tree.xmlCharEncCloseFunc(enchandler) # <<<<<<<<<<<<<<
*/
(void)(xmlCharEncCloseFunc(__pyx_v_enchandler));
- /* "src/lxml/serializer.pxi":124
+ /* "src/lxml/serializer.pxi":123
* if c_buffer is NULL:
* tree.xmlCharEncCloseFunc(enchandler)
* raise MemoryError() # <<<<<<<<<<<<<<
*
* with nogil:
*/
- PyErr_NoMemory(); __PYX_ERR(9, 124, __pyx_L1_error)
+ PyErr_NoMemory(); __PYX_ERR(9, 123, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":122
+ /* "src/lxml/serializer.pxi":121
* raise LookupError, f"unknown encoding: '{encoding}'"
* c_buffer = tree.xmlAllocOutputBuffer(enchandler)
* if c_buffer is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":126
+ /* "src/lxml/serializer.pxi":125
* raise MemoryError()
*
* with nogil: # <<<<<<<<<<<<<<
#endif
/*try:*/ {
- /* "src/lxml/serializer.pxi":127
+ /* "src/lxml/serializer.pxi":126
*
* with nogil:
* _writeNodeToBuffer(c_buffer, element._c_node, c_enc, c_doctype, c_method, # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeNodeToBuffer(__pyx_v_c_buffer, __pyx_v_element->_c_node, __pyx_v_c_enc, __pyx_v_c_doctype, __pyx_v_c_method, __pyx_v_write_xml_declaration, __pyx_v_write_complete_document, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_standalone);
- /* "src/lxml/serializer.pxi":130
+ /* "src/lxml/serializer.pxi":129
* write_xml_declaration, write_complete_document,
* pretty_print, with_tail, standalone)
* tree.xmlOutputBufferFlush(c_buffer) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferFlush(__pyx_v_c_buffer));
- /* "src/lxml/serializer.pxi":131
+ /* "src/lxml/serializer.pxi":130
* pretty_print, with_tail, standalone)
* tree.xmlOutputBufferFlush(c_buffer)
* if c_buffer.conv is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_buffer->conv != NULL) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":132
+ /* "src/lxml/serializer.pxi":131
* tree.xmlOutputBufferFlush(c_buffer)
* if c_buffer.conv is not NULL:
* c_result_buffer = c_buffer.conv # <<<<<<<<<<<<<<
__pyx_t_10 = __pyx_v_c_buffer->conv;
__pyx_v_c_result_buffer = __pyx_t_10;
- /* "src/lxml/serializer.pxi":131
+ /* "src/lxml/serializer.pxi":130
* pretty_print, with_tail, standalone)
* tree.xmlOutputBufferFlush(c_buffer)
* if c_buffer.conv is not NULL: # <<<<<<<<<<<<<<
goto __pyx_L17;
}
- /* "src/lxml/serializer.pxi":134
+ /* "src/lxml/serializer.pxi":133
* c_result_buffer = c_buffer.conv
* else:
* c_result_buffer = c_buffer.buffer # <<<<<<<<<<<<<<
__pyx_L17:;
}
- /* "src/lxml/serializer.pxi":126
+ /* "src/lxml/serializer.pxi":125
* raise MemoryError()
*
* with nogil: # <<<<<<<<<<<<<<
}
}
- /* "src/lxml/serializer.pxi":136
+ /* "src/lxml/serializer.pxi":135
* c_result_buffer = c_buffer.buffer
*
* error_result = c_buffer.error # <<<<<<<<<<<<<<
__pyx_t_3 = __pyx_v_c_buffer->error;
__pyx_v_error_result = __pyx_t_3;
- /* "src/lxml/serializer.pxi":137
+ /* "src/lxml/serializer.pxi":136
*
* error_result = c_buffer.error
* if error_result != xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_error_result != XML_ERR_OK) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":138
+ /* "src/lxml/serializer.pxi":137
* error_result = c_buffer.error
* if error_result != xmlerror.XML_ERR_OK:
* tree.xmlOutputBufferClose(c_buffer) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferClose(__pyx_v_c_buffer));
- /* "src/lxml/serializer.pxi":139
+ /* "src/lxml/serializer.pxi":138
* if error_result != xmlerror.XML_ERR_OK:
* tree.xmlOutputBufferClose(c_buffer)
* _raiseSerialisationError(error_result) # <<<<<<<<<<<<<<
*
* try:
*/
- __pyx_t_6 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 139, __pyx_L1_error)
+ __pyx_t_6 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":137
+ /* "src/lxml/serializer.pxi":136
*
* error_result = c_buffer.error
* if error_result != xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":141
+ /* "src/lxml/serializer.pxi":140
* _raiseSerialisationError(error_result)
*
* try: # <<<<<<<<<<<<<<
*/
/*try:*/ {
- /* "src/lxml/serializer.pxi":142
+ /* "src/lxml/serializer.pxi":141
*
* try:
* if encoding is unicode: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":144
+ /* "src/lxml/serializer.pxi":143
* if encoding is unicode:
* result = (<unsigned char*>tree.xmlBufContent(
* c_result_buffer))[:tree.xmlBufUse(c_result_buffer)].decode('UTF-8') # <<<<<<<<<<<<<<
* else:
* result = <bytes>(<unsigned char*>tree.xmlBufContent(
*/
- __pyx_t_6 = __Pyx_decode_c_string(((char const *)((unsigned char *)xmlBufContent(__pyx_v_c_result_buffer))), 0, xmlBufUse(__pyx_v_c_result_buffer), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 144, __pyx_L20_error)
+ __pyx_t_6 = __Pyx_decode_c_string(((char const *)((unsigned char *)xmlBufContent(__pyx_v_c_result_buffer))), 0, xmlBufUse(__pyx_v_c_result_buffer), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 143, __pyx_L20_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_v_result = __pyx_t_6;
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":142
+ /* "src/lxml/serializer.pxi":141
*
* try:
* if encoding is unicode: # <<<<<<<<<<<<<<
goto __pyx_L22;
}
- /* "src/lxml/serializer.pxi":146
+ /* "src/lxml/serializer.pxi":145
* c_result_buffer))[:tree.xmlBufUse(c_result_buffer)].decode('UTF-8')
* else:
* result = <bytes>(<unsigned char*>tree.xmlBufContent( # <<<<<<<<<<<<<<
*/
/*else*/ {
- /* "src/lxml/serializer.pxi":147
+ /* "src/lxml/serializer.pxi":146
* else:
* result = <bytes>(<unsigned char*>tree.xmlBufContent(
* c_result_buffer))[:tree.xmlBufUse(c_result_buffer)] # <<<<<<<<<<<<<<
* finally:
* error_result = tree.xmlOutputBufferClose(c_buffer)
*/
- __pyx_t_6 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)xmlBufContent(__pyx_v_c_result_buffer))) + 0, xmlBufUse(__pyx_v_c_result_buffer) - 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 147, __pyx_L20_error)
+ __pyx_t_6 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)xmlBufContent(__pyx_v_c_result_buffer))) + 0, xmlBufUse(__pyx_v_c_result_buffer) - 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 146, __pyx_L20_error)
__Pyx_GOTREF(__pyx_t_6);
- /* "src/lxml/serializer.pxi":146
+ /* "src/lxml/serializer.pxi":145
* c_result_buffer))[:tree.xmlBufUse(c_result_buffer)].decode('UTF-8')
* else:
* result = <bytes>(<unsigned char*>tree.xmlBufContent( # <<<<<<<<<<<<<<
__pyx_L22:;
}
- /* "src/lxml/serializer.pxi":149
+ /* "src/lxml/serializer.pxi":148
* c_result_buffer))[:tree.xmlBufUse(c_result_buffer)]
* finally:
* error_result = tree.xmlOutputBufferClose(c_buffer) # <<<<<<<<<<<<<<
__pyx_L21:;
}
- /* "src/lxml/serializer.pxi":150
+ /* "src/lxml/serializer.pxi":149
* finally:
* error_result = tree.xmlOutputBufferClose(c_buffer)
* if error_result == -1: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_error_result == -1L) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":151
+ /* "src/lxml/serializer.pxi":150
* error_result = tree.xmlOutputBufferClose(c_buffer)
* if error_result == -1:
* _raiseSerialisationError(error_result) # <<<<<<<<<<<<<<
* return result
*
*/
- __pyx_t_4 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 151, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 150, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":150
+ /* "src/lxml/serializer.pxi":149
* finally:
* error_result = tree.xmlOutputBufferClose(c_buffer)
* if error_result == -1: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":152
+ /* "src/lxml/serializer.pxi":151
* if error_result == -1:
* _raiseSerialisationError(error_result)
* return result # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_result;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":84
+ /* "src/lxml/serializer.pxi":83
*
*
* cdef _tostring(_Element element, encoding, doctype, method, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":154
+/* "src/lxml/serializer.pxi":153
* return result
*
* cdef bytes _tostringC14N(element_or_tree, bint exclusive, bint with_comments, inclusive_ns_prefixes): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_tostringC14N", 0);
- /* "src/lxml/serializer.pxi":156
+ /* "src/lxml/serializer.pxi":155
* cdef bytes _tostringC14N(element_or_tree, bint exclusive, bint with_comments, inclusive_ns_prefixes):
* cdef xmlDoc* c_doc
* cdef xmlChar* c_buffer = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_c_buffer = NULL;
- /* "src/lxml/serializer.pxi":157
+ /* "src/lxml/serializer.pxi":156
* cdef xmlDoc* c_doc
* cdef xmlChar* c_buffer = NULL
* cdef int byte_count = -1 # <<<<<<<<<<<<<<
*/
__pyx_v_byte_count = -1;
- /* "src/lxml/serializer.pxi":163
+ /* "src/lxml/serializer.pxi":162
* cdef xmlChar **c_inclusive_ns_prefixes
*
* if isinstance(element_or_tree, _Element): # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":164
+ /* "src/lxml/serializer.pxi":163
*
* if isinstance(element_or_tree, _Element):
* _assertValidNode(<_Element>element_or_tree) # <<<<<<<<<<<<<<
* doc = (<_Element>element_or_tree)._doc
* c_doc = _plainFakeRootDoc(doc._c_doc, (<_Element>element_or_tree)._c_node, 0)
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_element_or_tree)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 164, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_element_or_tree)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 163, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":165
+ /* "src/lxml/serializer.pxi":164
* if isinstance(element_or_tree, _Element):
* _assertValidNode(<_Element>element_or_tree)
* doc = (<_Element>element_or_tree)._doc # <<<<<<<<<<<<<<
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":166
+ /* "src/lxml/serializer.pxi":165
* _assertValidNode(<_Element>element_or_tree)
* doc = (<_Element>element_or_tree)._doc
* c_doc = _plainFakeRootDoc(doc._c_doc, (<_Element>element_or_tree)._c_node, 0) # <<<<<<<<<<<<<<
* else:
* doc = _documentOrRaise(element_or_tree)
*/
- __pyx_t_5 = __pyx_f_4lxml_5etree__plainFakeRootDoc(__pyx_v_doc->_c_doc, ((struct LxmlElement *)__pyx_v_element_or_tree)->_c_node, 0); if (unlikely(__pyx_t_5 == ((xmlDoc *)NULL))) __PYX_ERR(9, 166, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_5etree__plainFakeRootDoc(__pyx_v_doc->_c_doc, ((struct LxmlElement *)__pyx_v_element_or_tree)->_c_node, 0); if (unlikely(__pyx_t_5 == ((xmlDoc *)NULL))) __PYX_ERR(9, 165, __pyx_L1_error)
__pyx_v_c_doc = __pyx_t_5;
- /* "src/lxml/serializer.pxi":163
+ /* "src/lxml/serializer.pxi":162
* cdef xmlChar **c_inclusive_ns_prefixes
*
* if isinstance(element_or_tree, _Element): # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/serializer.pxi":168
+ /* "src/lxml/serializer.pxi":167
* c_doc = _plainFakeRootDoc(doc._c_doc, (<_Element>element_or_tree)._c_node, 0)
* else:
* doc = _documentOrRaise(element_or_tree) # <<<<<<<<<<<<<<
* c_doc = doc._c_doc
*/
/*else*/ {
- __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 168, __pyx_L1_error)
+ __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":169
+ /* "src/lxml/serializer.pxi":168
* else:
* doc = _documentOrRaise(element_or_tree)
* _assertValidDoc(doc) # <<<<<<<<<<<<<<
* c_doc = doc._c_doc
*
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidDoc(__pyx_v_doc); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 169, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidDoc(__pyx_v_doc); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 168, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":170
+ /* "src/lxml/serializer.pxi":169
* doc = _documentOrRaise(element_or_tree)
* _assertValidDoc(doc)
* c_doc = doc._c_doc # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "src/lxml/serializer.pxi":172
+ /* "src/lxml/serializer.pxi":171
* c_doc = doc._c_doc
*
* c_inclusive_ns_prefixes = _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) if inclusive_ns_prefixes else NULL # <<<<<<<<<<<<<<
* try:
* with nogil:
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 172, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 171, __pyx_L1_error)
if (__pyx_t_2) {
- __pyx_t_7 = __pyx_f_4lxml_5etree__convert_ns_prefixes(__pyx_v_c_doc->dict, __pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_7 == ((xmlChar **)NULL))) __PYX_ERR(9, 172, __pyx_L1_error)
+ __pyx_t_7 = __pyx_f_4lxml_5etree__convert_ns_prefixes(__pyx_v_c_doc->dict, __pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_7 == ((xmlChar **)NULL))) __PYX_ERR(9, 171, __pyx_L1_error)
__pyx_t_6 = __pyx_t_7;
} else {
__pyx_t_6 = NULL;
}
__pyx_v_c_inclusive_ns_prefixes = __pyx_t_6;
- /* "src/lxml/serializer.pxi":173
+ /* "src/lxml/serializer.pxi":172
*
* c_inclusive_ns_prefixes = _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) if inclusive_ns_prefixes else NULL
* try: # <<<<<<<<<<<<<<
*/
/*try:*/ {
- /* "src/lxml/serializer.pxi":174
+ /* "src/lxml/serializer.pxi":173
* c_inclusive_ns_prefixes = _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) if inclusive_ns_prefixes else NULL
* try:
* with nogil: # <<<<<<<<<<<<<<
#endif
/*try:*/ {
- /* "src/lxml/serializer.pxi":175
+ /* "src/lxml/serializer.pxi":174
* try:
* with nogil:
* byte_count = c14n.xmlC14NDocDumpMemory( # <<<<<<<<<<<<<<
__pyx_v_byte_count = xmlC14NDocDumpMemory(__pyx_v_c_doc, NULL, __pyx_v_exclusive, __pyx_v_c_inclusive_ns_prefixes, __pyx_v_with_comments, (&__pyx_v_c_buffer));
}
- /* "src/lxml/serializer.pxi":174
+ /* "src/lxml/serializer.pxi":173
* c_inclusive_ns_prefixes = _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) if inclusive_ns_prefixes else NULL
* try:
* with nogil: # <<<<<<<<<<<<<<
}
}
- /* "src/lxml/serializer.pxi":179
+ /* "src/lxml/serializer.pxi":178
*
* finally:
* _destroyFakeDoc(doc._c_doc, c_doc) # <<<<<<<<<<<<<<
/*normal exit:*/{
__pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
- /* "src/lxml/serializer.pxi":180
+ /* "src/lxml/serializer.pxi":179
* finally:
* _destroyFakeDoc(doc._c_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_inclusive_ns_prefixes != NULL) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":181
+ /* "src/lxml/serializer.pxi":180
* _destroyFakeDoc(doc._c_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL:
* python.lxml_free(c_inclusive_ns_prefixes) # <<<<<<<<<<<<<<
*/
lxml_free(__pyx_v_c_inclusive_ns_prefixes);
- /* "src/lxml/serializer.pxi":180
+ /* "src/lxml/serializer.pxi":179
* finally:
* _destroyFakeDoc(doc._c_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL: # <<<<<<<<<<<<<<
__pyx_L6:;
}
- /* "src/lxml/serializer.pxi":183
+ /* "src/lxml/serializer.pxi":182
* python.lxml_free(c_inclusive_ns_prefixes)
*
* if byte_count < 0 or c_buffer is NULL: # <<<<<<<<<<<<<<
__pyx_L12_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":184
+ /* "src/lxml/serializer.pxi":183
*
* if byte_count < 0 or c_buffer is NULL:
* if c_buffer is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_buffer != NULL) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":185
+ /* "src/lxml/serializer.pxi":184
* if byte_count < 0 or c_buffer is NULL:
* if c_buffer is not NULL:
* tree.xmlFree(c_buffer) # <<<<<<<<<<<<<<
*/
xmlFree(__pyx_v_c_buffer);
- /* "src/lxml/serializer.pxi":184
+ /* "src/lxml/serializer.pxi":183
*
* if byte_count < 0 or c_buffer is NULL:
* if c_buffer is not NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":186
+ /* "src/lxml/serializer.pxi":185
* if c_buffer is not NULL:
* tree.xmlFree(c_buffer)
* raise C14NError, u"C14N failed" # <<<<<<<<<<<<<<
* result = c_buffer[:byte_count]
*/
__Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_C14NError), __pyx_kp_u_C14N_failed, 0, 0);
- __PYX_ERR(9, 186, __pyx_L1_error)
+ __PYX_ERR(9, 185, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":183
+ /* "src/lxml/serializer.pxi":182
* python.lxml_free(c_inclusive_ns_prefixes)
*
* if byte_count < 0 or c_buffer is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":187
+ /* "src/lxml/serializer.pxi":186
* tree.xmlFree(c_buffer)
* raise C14NError, u"C14N failed"
* try: # <<<<<<<<<<<<<<
*/
/*try:*/ {
- /* "src/lxml/serializer.pxi":188
+ /* "src/lxml/serializer.pxi":187
* raise C14NError, u"C14N failed"
* try:
* result = c_buffer[:byte_count] # <<<<<<<<<<<<<<
* finally:
* tree.xmlFree(c_buffer)
*/
- __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_c_buffer) + 0, __pyx_v_byte_count - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 188, __pyx_L16_error)
+ __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_c_buffer) + 0, __pyx_v_byte_count - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 187, __pyx_L16_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_result = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
}
- /* "src/lxml/serializer.pxi":190
+ /* "src/lxml/serializer.pxi":189
* result = c_buffer[:byte_count]
* finally:
* tree.xmlFree(c_buffer) # <<<<<<<<<<<<<<
__pyx_L17:;
}
- /* "src/lxml/serializer.pxi":191
+ /* "src/lxml/serializer.pxi":190
* finally:
* tree.xmlFree(c_buffer)
* return result # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_result;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":154
+ /* "src/lxml/serializer.pxi":153
* return result
*
* cdef bytes _tostringC14N(element_or_tree, bint exclusive, bint with_comments, inclusive_ns_prefixes): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":193
+/* "src/lxml/serializer.pxi":192
* return result
*
* cdef _raiseSerialisationError(int error_result): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_raiseSerialisationError", 0);
- /* "src/lxml/serializer.pxi":194
+ /* "src/lxml/serializer.pxi":193
*
* cdef _raiseSerialisationError(int error_result):
* if error_result == xmlerror.XML_ERR_NO_MEMORY: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_error_result == XML_ERR_NO_MEMORY) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":195
+ /* "src/lxml/serializer.pxi":194
* cdef _raiseSerialisationError(int error_result):
* if error_result == xmlerror.XML_ERR_NO_MEMORY:
* raise MemoryError() # <<<<<<<<<<<<<<
* message = ErrorTypes._getName(error_result)
* if message is None:
*/
- PyErr_NoMemory(); __PYX_ERR(9, 195, __pyx_L1_error)
+ PyErr_NoMemory(); __PYX_ERR(9, 194, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":194
+ /* "src/lxml/serializer.pxi":193
*
* cdef _raiseSerialisationError(int error_result):
* if error_result == xmlerror.XML_ERR_NO_MEMORY: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":196
+ /* "src/lxml/serializer.pxi":195
* if error_result == xmlerror.XML_ERR_NO_MEMORY:
* raise MemoryError()
* message = ErrorTypes._getName(error_result) # <<<<<<<<<<<<<<
* if message is None:
* message = f"unknown error {error_result}"
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 196, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getName); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 196, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getName); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_error_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 196, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_error_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 196, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_message = __pyx_t_2;
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":197
+ /* "src/lxml/serializer.pxi":196
* raise MemoryError()
* message = ErrorTypes._getName(error_result)
* if message is None: # <<<<<<<<<<<<<<
__pyx_t_6 = (__pyx_t_1 != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":198
+ /* "src/lxml/serializer.pxi":197
* message = ErrorTypes._getName(error_result)
* if message is None:
* message = f"unknown error {error_result}" # <<<<<<<<<<<<<<
* raise SerialisationError, message
*
*/
- __pyx_t_2 = __Pyx_PyUnicode_From_int(__pyx_v_error_result, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 198, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyUnicode_From_int(__pyx_v_error_result, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 197, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_unknown_error_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 198, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_unknown_error_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 197, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF_SET(__pyx_v_message, __pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":197
+ /* "src/lxml/serializer.pxi":196
* raise MemoryError()
* message = ErrorTypes._getName(error_result)
* if message is None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":199
+ /* "src/lxml/serializer.pxi":198
* if message is None:
* message = f"unknown error {error_result}"
* raise SerialisationError, message # <<<<<<<<<<<<<<
* ############################################################
*/
__Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_SerialisationError), __pyx_v_message, 0, 0);
- __PYX_ERR(9, 199, __pyx_L1_error)
+ __PYX_ERR(9, 198, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":193
+ /* "src/lxml/serializer.pxi":192
* return result
*
* cdef _raiseSerialisationError(int error_result): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":204
+/* "src/lxml/serializer.pxi":203
* # low-level serialisation functions
*
* cdef void _writeDoctype(tree.xmlOutputBuffer* c_buffer, # <<<<<<<<<<<<<<
static void __pyx_f_4lxml_5etree__writeDoctype(xmlOutputBuffer *__pyx_v_c_buffer, const xmlChar *__pyx_v_c_doctype) {
- /* "src/lxml/serializer.pxi":206
+ /* "src/lxml/serializer.pxi":205
* cdef void _writeDoctype(tree.xmlOutputBuffer* c_buffer,
* const_xmlChar* c_doctype) nogil:
* tree.xmlOutputBufferWrite(c_buffer, tree.xmlStrlen(c_doctype), # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, xmlStrlen(__pyx_v_c_doctype), ((const char *)__pyx_v_c_doctype)));
- /* "src/lxml/serializer.pxi":208
+ /* "src/lxml/serializer.pxi":207
* tree.xmlOutputBufferWrite(c_buffer, tree.xmlStrlen(c_doctype),
* <const_char*>c_doctype)
* tree.xmlOutputBufferWriteString(c_buffer, "\n") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)"\n")));
- /* "src/lxml/serializer.pxi":204
+ /* "src/lxml/serializer.pxi":203
* # low-level serialisation functions
*
* cdef void _writeDoctype(tree.xmlOutputBuffer* c_buffer, # <<<<<<<<<<<<<<
/* function exit code */
}
-/* "src/lxml/serializer.pxi":210
+/* "src/lxml/serializer.pxi":209
* tree.xmlOutputBufferWriteString(c_buffer, "\n")
*
* cdef void _writeNodeToBuffer(tree.xmlOutputBuffer* c_buffer, # <<<<<<<<<<<<<<
int __pyx_t_3;
xmlNode *__pyx_t_4;
- /* "src/lxml/serializer.pxi":217
+ /* "src/lxml/serializer.pxi":216
* int standalone) nogil:
* cdef xmlNode* c_nsdecl_node
* cdef xmlDoc* c_doc = c_node.doc # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_node->doc;
__pyx_v_c_doc = __pyx_t_1;
- /* "src/lxml/serializer.pxi":218
+ /* "src/lxml/serializer.pxi":217
* cdef xmlNode* c_nsdecl_node
* cdef xmlDoc* c_doc = c_node.doc
* if write_xml_declaration and c_method == OUTPUT_METHOD_XML: # <<<<<<<<<<<<<<
__pyx_L4_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":219
+ /* "src/lxml/serializer.pxi":218
* cdef xmlDoc* c_doc = c_node.doc
* if write_xml_declaration and c_method == OUTPUT_METHOD_XML:
* _writeDeclarationToBuffer(c_buffer, c_doc.version, encoding, standalone) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeDeclarationToBuffer(__pyx_v_c_buffer, __pyx_v_c_doc->version, __pyx_v_encoding, __pyx_v_standalone);
- /* "src/lxml/serializer.pxi":218
+ /* "src/lxml/serializer.pxi":217
* cdef xmlNode* c_nsdecl_node
* cdef xmlDoc* c_doc = c_node.doc
* if write_xml_declaration and c_method == OUTPUT_METHOD_XML: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":222
+ /* "src/lxml/serializer.pxi":221
*
* # comments/processing instructions before doctype declaration
* if write_complete_document and not c_buffer.error and c_doc.intSubset: # <<<<<<<<<<<<<<
__pyx_L7_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":223
+ /* "src/lxml/serializer.pxi":222
* # comments/processing instructions before doctype declaration
* if write_complete_document and not c_buffer.error and c_doc.intSubset:
* _writePrevSiblings(c_buffer, <xmlNode*>c_doc.intSubset, encoding, pretty_print) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writePrevSiblings(__pyx_v_c_buffer, ((xmlNode *)__pyx_v_c_doc->intSubset), __pyx_v_encoding, __pyx_v_pretty_print);
- /* "src/lxml/serializer.pxi":222
+ /* "src/lxml/serializer.pxi":221
*
* # comments/processing instructions before doctype declaration
* if write_complete_document and not c_buffer.error and c_doc.intSubset: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":225
+ /* "src/lxml/serializer.pxi":224
* _writePrevSiblings(c_buffer, <xmlNode*>c_doc.intSubset, encoding, pretty_print)
*
* if c_doctype: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_doctype != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":226
+ /* "src/lxml/serializer.pxi":225
*
* if c_doctype:
* _writeDoctype(c_buffer, c_doctype) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeDoctype(__pyx_v_c_buffer, __pyx_v_c_doctype);
- /* "src/lxml/serializer.pxi":225
+ /* "src/lxml/serializer.pxi":224
* _writePrevSiblings(c_buffer, <xmlNode*>c_doc.intSubset, encoding, pretty_print)
*
* if c_doctype: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":228
+ /* "src/lxml/serializer.pxi":227
* _writeDoctype(c_buffer, c_doctype)
* # write internal DTD subset, preceding PIs/comments, etc.
* if write_complete_document and not c_buffer.error: # <<<<<<<<<<<<<<
__pyx_L12_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":229
+ /* "src/lxml/serializer.pxi":228
* # write internal DTD subset, preceding PIs/comments, etc.
* if write_complete_document and not c_buffer.error:
* if c_doctype is NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_doctype == NULL) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":230
+ /* "src/lxml/serializer.pxi":229
* if write_complete_document and not c_buffer.error:
* if c_doctype is NULL:
* _writeDtdToBuffer(c_buffer, c_doc, c_node.name, c_method, encoding) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeDtdToBuffer(__pyx_v_c_buffer, __pyx_v_c_doc, __pyx_v_c_node->name, __pyx_v_c_method, __pyx_v_encoding);
- /* "src/lxml/serializer.pxi":229
+ /* "src/lxml/serializer.pxi":228
* # write internal DTD subset, preceding PIs/comments, etc.
* if write_complete_document and not c_buffer.error:
* if c_doctype is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":231
+ /* "src/lxml/serializer.pxi":230
* if c_doctype is NULL:
* _writeDtdToBuffer(c_buffer, c_doc, c_node.name, c_method, encoding)
* _writePrevSiblings(c_buffer, c_node, encoding, pretty_print) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writePrevSiblings(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_pretty_print);
- /* "src/lxml/serializer.pxi":228
+ /* "src/lxml/serializer.pxi":227
* _writeDoctype(c_buffer, c_doctype)
* # write internal DTD subset, preceding PIs/comments, etc.
* if write_complete_document and not c_buffer.error: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":233
+ /* "src/lxml/serializer.pxi":232
* _writePrevSiblings(c_buffer, c_node, encoding, pretty_print)
*
* c_nsdecl_node = c_node # <<<<<<<<<<<<<<
*/
__pyx_v_c_nsdecl_node = __pyx_v_c_node;
- /* "src/lxml/serializer.pxi":234
+ /* "src/lxml/serializer.pxi":233
*
* c_nsdecl_node = c_node
* if not c_node.parent or c_node.parent.type != tree.XML_DOCUMENT_NODE: # <<<<<<<<<<<<<<
__pyx_L16_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":237
+ /* "src/lxml/serializer.pxi":236
* # copy the node and add namespaces from parents
* # this is required to make libxml write them
* c_nsdecl_node = tree.xmlCopyNode(c_node, 2) # <<<<<<<<<<<<<<
*/
__pyx_v_c_nsdecl_node = xmlCopyNode(__pyx_v_c_node, 2);
- /* "src/lxml/serializer.pxi":238
+ /* "src/lxml/serializer.pxi":237
* # this is required to make libxml write them
* c_nsdecl_node = tree.xmlCopyNode(c_node, 2)
* if not c_nsdecl_node: # <<<<<<<<<<<<<<
__pyx_t_2 = ((!(__pyx_v_c_nsdecl_node != 0)) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":239
+ /* "src/lxml/serializer.pxi":238
* c_nsdecl_node = tree.xmlCopyNode(c_node, 2)
* if not c_nsdecl_node:
* c_buffer.error = xmlerror.XML_ERR_NO_MEMORY # <<<<<<<<<<<<<<
*/
__pyx_v_c_buffer->error = XML_ERR_NO_MEMORY;
- /* "src/lxml/serializer.pxi":240
+ /* "src/lxml/serializer.pxi":239
* if not c_nsdecl_node:
* c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":238
+ /* "src/lxml/serializer.pxi":237
* # this is required to make libxml write them
* c_nsdecl_node = tree.xmlCopyNode(c_node, 2)
* if not c_nsdecl_node: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":241
+ /* "src/lxml/serializer.pxi":240
* c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
* return
* _copyParentNamespaces(c_node, c_nsdecl_node) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__copyParentNamespaces(__pyx_v_c_node, __pyx_v_c_nsdecl_node);
- /* "src/lxml/serializer.pxi":243
+ /* "src/lxml/serializer.pxi":242
* _copyParentNamespaces(c_node, c_nsdecl_node)
*
* c_nsdecl_node.parent = c_node.parent # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_c_node->parent;
__pyx_v_c_nsdecl_node->parent = __pyx_t_4;
- /* "src/lxml/serializer.pxi":244
+ /* "src/lxml/serializer.pxi":243
*
* c_nsdecl_node.parent = c_node.parent
* c_nsdecl_node.children = c_node.children # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_c_node->children;
__pyx_v_c_nsdecl_node->children = __pyx_t_4;
- /* "src/lxml/serializer.pxi":245
+ /* "src/lxml/serializer.pxi":244
* c_nsdecl_node.parent = c_node.parent
* c_nsdecl_node.children = c_node.children
* c_nsdecl_node.last = c_node.last # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_c_node->last;
__pyx_v_c_nsdecl_node->last = __pyx_t_4;
- /* "src/lxml/serializer.pxi":234
+ /* "src/lxml/serializer.pxi":233
*
* c_nsdecl_node = c_node
* if not c_node.parent or c_node.parent.type != tree.XML_DOCUMENT_NODE: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":248
+ /* "src/lxml/serializer.pxi":247
*
* # write node
* if c_method == OUTPUT_METHOD_HTML: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":249
+ /* "src/lxml/serializer.pxi":248
* # write node
* if c_method == OUTPUT_METHOD_HTML:
* tree.htmlNodeDumpFormatOutput( # <<<<<<<<<<<<<<
*/
htmlNodeDumpFormatOutput(__pyx_v_c_buffer, __pyx_v_c_doc, __pyx_v_c_nsdecl_node, __pyx_v_encoding, __pyx_v_pretty_print);
- /* "src/lxml/serializer.pxi":248
+ /* "src/lxml/serializer.pxi":247
*
* # write node
* if c_method == OUTPUT_METHOD_HTML: # <<<<<<<<<<<<<<
goto __pyx_L19;
}
- /* "src/lxml/serializer.pxi":252
+ /* "src/lxml/serializer.pxi":251
* c_buffer, c_doc, c_nsdecl_node, encoding, pretty_print)
* else:
* tree.xmlNodeDumpOutput( # <<<<<<<<<<<<<<
*/
/*else*/ {
- /* "src/lxml/serializer.pxi":253
+ /* "src/lxml/serializer.pxi":252
* else:
* tree.xmlNodeDumpOutput(
* c_buffer, c_doc, c_nsdecl_node, 0, pretty_print, encoding) # <<<<<<<<<<<<<<
}
__pyx_L19:;
- /* "src/lxml/serializer.pxi":255
+ /* "src/lxml/serializer.pxi":254
* c_buffer, c_doc, c_nsdecl_node, 0, pretty_print, encoding)
*
* if c_nsdecl_node is not c_node: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_nsdecl_node != __pyx_v_c_node) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":257
+ /* "src/lxml/serializer.pxi":256
* if c_nsdecl_node is not c_node:
* # clean up
* c_nsdecl_node.children = c_nsdecl_node.last = NULL # <<<<<<<<<<<<<<
__pyx_v_c_nsdecl_node->children = NULL;
__pyx_v_c_nsdecl_node->last = NULL;
- /* "src/lxml/serializer.pxi":258
+ /* "src/lxml/serializer.pxi":257
* # clean up
* c_nsdecl_node.children = c_nsdecl_node.last = NULL
* tree.xmlFreeNode(c_nsdecl_node) # <<<<<<<<<<<<<<
*/
xmlFreeNode(__pyx_v_c_nsdecl_node);
- /* "src/lxml/serializer.pxi":255
+ /* "src/lxml/serializer.pxi":254
* c_buffer, c_doc, c_nsdecl_node, 0, pretty_print, encoding)
*
* if c_nsdecl_node is not c_node: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":260
+ /* "src/lxml/serializer.pxi":259
* tree.xmlFreeNode(c_nsdecl_node)
*
* if c_buffer.error: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_buffer->error != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":261
+ /* "src/lxml/serializer.pxi":260
*
* if c_buffer.error:
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":260
+ /* "src/lxml/serializer.pxi":259
* tree.xmlFreeNode(c_nsdecl_node)
*
* if c_buffer.error: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":264
+ /* "src/lxml/serializer.pxi":263
*
* # write tail, trailing comments, etc.
* if with_tail: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_with_tail != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":265
+ /* "src/lxml/serializer.pxi":264
* # write tail, trailing comments, etc.
* if with_tail:
* _writeTail(c_buffer, c_node, encoding, c_method, pretty_print) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeTail(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_c_method, __pyx_v_pretty_print);
- /* "src/lxml/serializer.pxi":264
+ /* "src/lxml/serializer.pxi":263
*
* # write tail, trailing comments, etc.
* if with_tail: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":266
+ /* "src/lxml/serializer.pxi":265
* if with_tail:
* _writeTail(c_buffer, c_node, encoding, c_method, pretty_print)
* if write_complete_document: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_write_complete_document != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":267
+ /* "src/lxml/serializer.pxi":266
* _writeTail(c_buffer, c_node, encoding, c_method, pretty_print)
* if write_complete_document:
* _writeNextSiblings(c_buffer, c_node, encoding, pretty_print) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeNextSiblings(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_pretty_print);
- /* "src/lxml/serializer.pxi":266
+ /* "src/lxml/serializer.pxi":265
* if with_tail:
* _writeTail(c_buffer, c_node, encoding, c_method, pretty_print)
* if write_complete_document: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":268
+ /* "src/lxml/serializer.pxi":267
* if write_complete_document:
* _writeNextSiblings(c_buffer, c_node, encoding, pretty_print)
* if pretty_print: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_pretty_print != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":269
+ /* "src/lxml/serializer.pxi":268
* _writeNextSiblings(c_buffer, c_node, encoding, pretty_print)
* if pretty_print:
* tree.xmlOutputBufferWrite(c_buffer, 1, "\n") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 1, ((const char *)"\n")));
- /* "src/lxml/serializer.pxi":268
+ /* "src/lxml/serializer.pxi":267
* if write_complete_document:
* _writeNextSiblings(c_buffer, c_node, encoding, pretty_print)
* if pretty_print: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":210
+ /* "src/lxml/serializer.pxi":209
* tree.xmlOutputBufferWriteString(c_buffer, "\n")
*
* cdef void _writeNodeToBuffer(tree.xmlOutputBuffer* c_buffer, # <<<<<<<<<<<<<<
__pyx_L0:;
}
-/* "src/lxml/serializer.pxi":271
+/* "src/lxml/serializer.pxi":270
* tree.xmlOutputBufferWrite(c_buffer, 1, "\n")
*
* cdef void _writeDeclarationToBuffer(tree.xmlOutputBuffer* c_buffer, # <<<<<<<<<<<<<<
static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__pyx_v_c_buffer, const xmlChar *__pyx_v_version, const char *__pyx_v_encoding, int __pyx_v_standalone) {
int __pyx_t_1;
- /* "src/lxml/serializer.pxi":274
+ /* "src/lxml/serializer.pxi":273
* const_xmlChar* version, const_char* encoding,
* int standalone) nogil:
* if version is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_version == NULL) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":275
+ /* "src/lxml/serializer.pxi":274
* int standalone) nogil:
* if version is NULL:
* version = <unsigned char*>"1.0" # <<<<<<<<<<<<<<
*/
__pyx_v_version = ((unsigned char *)((unsigned char *)((char const *)"1.0")));
- /* "src/lxml/serializer.pxi":274
+ /* "src/lxml/serializer.pxi":273
* const_xmlChar* version, const_char* encoding,
* int standalone) nogil:
* if version is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":276
+ /* "src/lxml/serializer.pxi":275
* if version is NULL:
* version = <unsigned char*>"1.0"
* tree.xmlOutputBufferWrite(c_buffer, 15, "<?xml version='") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 15, ((const char *)"<?xml version='")));
- /* "src/lxml/serializer.pxi":277
+ /* "src/lxml/serializer.pxi":276
* version = <unsigned char*>"1.0"
* tree.xmlOutputBufferWrite(c_buffer, 15, "<?xml version='")
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>version) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)__pyx_v_version)));
- /* "src/lxml/serializer.pxi":278
+ /* "src/lxml/serializer.pxi":277
* tree.xmlOutputBufferWrite(c_buffer, 15, "<?xml version='")
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>version)
* tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 12, ((const char *)"' encoding='")));
- /* "src/lxml/serializer.pxi":279
+ /* "src/lxml/serializer.pxi":278
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>version)
* tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='")
* tree.xmlOutputBufferWriteString(c_buffer, encoding) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, __pyx_v_encoding));
- /* "src/lxml/serializer.pxi":280
+ /* "src/lxml/serializer.pxi":279
* tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='")
* tree.xmlOutputBufferWriteString(c_buffer, encoding)
* if standalone == 0: # <<<<<<<<<<<<<<
switch (__pyx_v_standalone) {
case 0:
- /* "src/lxml/serializer.pxi":281
+ /* "src/lxml/serializer.pxi":280
* tree.xmlOutputBufferWriteString(c_buffer, encoding)
* if standalone == 0:
* tree.xmlOutputBufferWrite(c_buffer, 20, "' standalone='no'?>\n") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 20, ((const char *)"' standalone='no'?>\n")));
- /* "src/lxml/serializer.pxi":280
+ /* "src/lxml/serializer.pxi":279
* tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='")
* tree.xmlOutputBufferWriteString(c_buffer, encoding)
* if standalone == 0: # <<<<<<<<<<<<<<
break;
case 1:
- /* "src/lxml/serializer.pxi":283
+ /* "src/lxml/serializer.pxi":282
* tree.xmlOutputBufferWrite(c_buffer, 20, "' standalone='no'?>\n")
* elif standalone == 1:
* tree.xmlOutputBufferWrite(c_buffer, 21, "' standalone='yes'?>\n") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 21, ((const char *)"' standalone='yes'?>\n")));
- /* "src/lxml/serializer.pxi":282
+ /* "src/lxml/serializer.pxi":281
* if standalone == 0:
* tree.xmlOutputBufferWrite(c_buffer, 20, "' standalone='no'?>\n")
* elif standalone == 1: # <<<<<<<<<<<<<<
break;
default:
- /* "src/lxml/serializer.pxi":285
+ /* "src/lxml/serializer.pxi":284
* tree.xmlOutputBufferWrite(c_buffer, 21, "' standalone='yes'?>\n")
* else:
* tree.xmlOutputBufferWrite(c_buffer, 4, "'?>\n") # <<<<<<<<<<<<<<
break;
}
- /* "src/lxml/serializer.pxi":271
+ /* "src/lxml/serializer.pxi":270
* tree.xmlOutputBufferWrite(c_buffer, 1, "\n")
*
* cdef void _writeDeclarationToBuffer(tree.xmlOutputBuffer* c_buffer, # <<<<<<<<<<<<<<
/* function exit code */
}
-/* "src/lxml/serializer.pxi":287
+/* "src/lxml/serializer.pxi":286
* tree.xmlOutputBufferWrite(c_buffer, 4, "'?>\n")
*
* cdef void _writeDtdToBuffer(tree.xmlOutputBuffer* c_buffer, # <<<<<<<<<<<<<<
const xmlChar *__pyx_t_4;
xmlNode *__pyx_t_5;
- /* "src/lxml/serializer.pxi":293
+ /* "src/lxml/serializer.pxi":292
* cdef xmlNode* c_node
* cdef char* quotechar
* c_dtd = c_doc.intSubset # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_doc->intSubset;
__pyx_v_c_dtd = __pyx_t_1;
- /* "src/lxml/serializer.pxi":294
+ /* "src/lxml/serializer.pxi":293
* cdef char* quotechar
* c_dtd = c_doc.intSubset
* if not c_dtd or not c_dtd.name: # <<<<<<<<<<<<<<
__pyx_L4_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":295
+ /* "src/lxml/serializer.pxi":294
* c_dtd = c_doc.intSubset
* if not c_dtd or not c_dtd.name:
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":294
+ /* "src/lxml/serializer.pxi":293
* cdef char* quotechar
* c_dtd = c_doc.intSubset
* if not c_dtd or not c_dtd.name: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":299
+ /* "src/lxml/serializer.pxi":298
* # Name in document type declaration must match the root element tag.
* # For XML, case sensitive match, for HTML insensitive.
* if c_method == OUTPUT_METHOD_HTML: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":300
+ /* "src/lxml/serializer.pxi":299
* # For XML, case sensitive match, for HTML insensitive.
* if c_method == OUTPUT_METHOD_HTML:
* if tree.xmlStrcasecmp(c_root_name, c_dtd.name) != 0: # <<<<<<<<<<<<<<
__pyx_t_2 = ((xmlStrcasecmp(__pyx_v_c_root_name, __pyx_v_c_dtd->name) != 0) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":301
+ /* "src/lxml/serializer.pxi":300
* if c_method == OUTPUT_METHOD_HTML:
* if tree.xmlStrcasecmp(c_root_name, c_dtd.name) != 0:
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":300
+ /* "src/lxml/serializer.pxi":299
* # For XML, case sensitive match, for HTML insensitive.
* if c_method == OUTPUT_METHOD_HTML:
* if tree.xmlStrcasecmp(c_root_name, c_dtd.name) != 0: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":299
+ /* "src/lxml/serializer.pxi":298
* # Name in document type declaration must match the root element tag.
* # For XML, case sensitive match, for HTML insensitive.
* if c_method == OUTPUT_METHOD_HTML: # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":303
+ /* "src/lxml/serializer.pxi":302
* return
* else:
* if tree.xmlStrcmp(c_root_name, c_dtd.name) != 0: # <<<<<<<<<<<<<<
__pyx_t_2 = ((xmlStrcmp(__pyx_v_c_root_name, __pyx_v_c_dtd->name) != 0) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":304
+ /* "src/lxml/serializer.pxi":303
* else:
* if tree.xmlStrcmp(c_root_name, c_dtd.name) != 0:
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":303
+ /* "src/lxml/serializer.pxi":302
* return
* else:
* if tree.xmlStrcmp(c_root_name, c_dtd.name) != 0: # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "src/lxml/serializer.pxi":306
+ /* "src/lxml/serializer.pxi":305
* return
*
* tree.xmlOutputBufferWrite(c_buffer, 10, "<!DOCTYPE ") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 10, ((const char *)"<!DOCTYPE ")));
- /* "src/lxml/serializer.pxi":307
+ /* "src/lxml/serializer.pxi":306
*
* tree.xmlOutputBufferWrite(c_buffer, 10, "<!DOCTYPE ")
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>c_dtd.name) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)__pyx_v_c_dtd->name)));
- /* "src/lxml/serializer.pxi":309
+ /* "src/lxml/serializer.pxi":308
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>c_dtd.name)
*
* cdef const_xmlChar* public_id = c_dtd.ExternalID # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_c_dtd->ExternalID;
__pyx_v_public_id = __pyx_t_4;
- /* "src/lxml/serializer.pxi":310
+ /* "src/lxml/serializer.pxi":309
*
* cdef const_xmlChar* public_id = c_dtd.ExternalID
* cdef const_xmlChar* sys_url = c_dtd.SystemID # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_c_dtd->SystemID;
__pyx_v_sys_url = __pyx_t_4;
- /* "src/lxml/serializer.pxi":311
+ /* "src/lxml/serializer.pxi":310
* cdef const_xmlChar* public_id = c_dtd.ExternalID
* cdef const_xmlChar* sys_url = c_dtd.SystemID
* if public_id and public_id[0] == b'\0': # <<<<<<<<<<<<<<
__pyx_L10_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":312
+ /* "src/lxml/serializer.pxi":311
* cdef const_xmlChar* sys_url = c_dtd.SystemID
* if public_id and public_id[0] == b'\0':
* public_id = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_public_id = NULL;
- /* "src/lxml/serializer.pxi":311
+ /* "src/lxml/serializer.pxi":310
* cdef const_xmlChar* public_id = c_dtd.ExternalID
* cdef const_xmlChar* sys_url = c_dtd.SystemID
* if public_id and public_id[0] == b'\0': # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":313
+ /* "src/lxml/serializer.pxi":312
* if public_id and public_id[0] == b'\0':
* public_id = NULL
* if sys_url and sys_url[0] == b'\0': # <<<<<<<<<<<<<<
__pyx_L13_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":314
+ /* "src/lxml/serializer.pxi":313
* public_id = NULL
* if sys_url and sys_url[0] == b'\0':
* sys_url = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_sys_url = NULL;
- /* "src/lxml/serializer.pxi":313
+ /* "src/lxml/serializer.pxi":312
* if public_id and public_id[0] == b'\0':
* public_id = NULL
* if sys_url and sys_url[0] == b'\0': # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":316
+ /* "src/lxml/serializer.pxi":315
* sys_url = NULL
*
* if public_id: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_public_id != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":317
+ /* "src/lxml/serializer.pxi":316
*
* if public_id:
* tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 9, ((const char *)" PUBLIC \"")));
- /* "src/lxml/serializer.pxi":318
+ /* "src/lxml/serializer.pxi":317
* if public_id:
* tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "')
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>public_id) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)__pyx_v_public_id)));
- /* "src/lxml/serializer.pxi":319
+ /* "src/lxml/serializer.pxi":318
* tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "')
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>public_id)
* if sys_url: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_sys_url != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":320
+ /* "src/lxml/serializer.pxi":319
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>public_id)
* if sys_url:
* tree.xmlOutputBufferWrite(c_buffer, 2, '" ') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 2, ((const char *)"\" ")));
- /* "src/lxml/serializer.pxi":319
+ /* "src/lxml/serializer.pxi":318
* tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "')
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>public_id)
* if sys_url: # <<<<<<<<<<<<<<
goto __pyx_L16;
}
- /* "src/lxml/serializer.pxi":322
+ /* "src/lxml/serializer.pxi":321
* tree.xmlOutputBufferWrite(c_buffer, 2, '" ')
* else:
* tree.xmlOutputBufferWrite(c_buffer, 1, '"') # <<<<<<<<<<<<<<
}
__pyx_L16:;
- /* "src/lxml/serializer.pxi":316
+ /* "src/lxml/serializer.pxi":315
* sys_url = NULL
*
* if public_id: # <<<<<<<<<<<<<<
goto __pyx_L15;
}
- /* "src/lxml/serializer.pxi":323
+ /* "src/lxml/serializer.pxi":322
* else:
* tree.xmlOutputBufferWrite(c_buffer, 1, '"')
* elif sys_url: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_sys_url != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":324
+ /* "src/lxml/serializer.pxi":323
* tree.xmlOutputBufferWrite(c_buffer, 1, '"')
* elif sys_url:
* tree.xmlOutputBufferWrite(c_buffer, 8, ' SYSTEM ') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 8, ((const char *)" SYSTEM ")));
- /* "src/lxml/serializer.pxi":323
+ /* "src/lxml/serializer.pxi":322
* else:
* tree.xmlOutputBufferWrite(c_buffer, 1, '"')
* elif sys_url: # <<<<<<<<<<<<<<
}
__pyx_L15:;
- /* "src/lxml/serializer.pxi":326
+ /* "src/lxml/serializer.pxi":325
* tree.xmlOutputBufferWrite(c_buffer, 8, ' SYSTEM ')
*
* if sys_url: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_sys_url != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":327
+ /* "src/lxml/serializer.pxi":326
*
* if sys_url:
* if tree.xmlStrchr(sys_url, b'"'): # <<<<<<<<<<<<<<
__pyx_t_2 = (xmlStrchr(__pyx_v_sys_url, '"') != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":328
+ /* "src/lxml/serializer.pxi":327
* if sys_url:
* if tree.xmlStrchr(sys_url, b'"'):
* quotechar = '\'' # <<<<<<<<<<<<<<
*/
__pyx_v_quotechar = ((char *)"'");
- /* "src/lxml/serializer.pxi":327
+ /* "src/lxml/serializer.pxi":326
*
* if sys_url:
* if tree.xmlStrchr(sys_url, b'"'): # <<<<<<<<<<<<<<
goto __pyx_L18;
}
- /* "src/lxml/serializer.pxi":330
+ /* "src/lxml/serializer.pxi":329
* quotechar = '\''
* else:
* quotechar = '"' # <<<<<<<<<<<<<<
}
__pyx_L18:;
- /* "src/lxml/serializer.pxi":331
+ /* "src/lxml/serializer.pxi":330
* else:
* quotechar = '"'
* tree.xmlOutputBufferWrite(c_buffer, 1, quotechar) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 1, __pyx_v_quotechar));
- /* "src/lxml/serializer.pxi":332
+ /* "src/lxml/serializer.pxi":331
* quotechar = '"'
* tree.xmlOutputBufferWrite(c_buffer, 1, quotechar)
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>sys_url) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)__pyx_v_sys_url)));
- /* "src/lxml/serializer.pxi":333
+ /* "src/lxml/serializer.pxi":332
* tree.xmlOutputBufferWrite(c_buffer, 1, quotechar)
* tree.xmlOutputBufferWriteString(c_buffer, <const_char*>sys_url)
* tree.xmlOutputBufferWrite(c_buffer, 1, quotechar) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 1, __pyx_v_quotechar));
- /* "src/lxml/serializer.pxi":326
+ /* "src/lxml/serializer.pxi":325
* tree.xmlOutputBufferWrite(c_buffer, 8, ' SYSTEM ')
*
* if sys_url: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":335
+ /* "src/lxml/serializer.pxi":334
* tree.xmlOutputBufferWrite(c_buffer, 1, quotechar)
*
* if (not c_dtd.entities and not c_dtd.elements and # <<<<<<<<<<<<<<
goto __pyx_L20_bool_binop_done;
}
- /* "src/lxml/serializer.pxi":336
+ /* "src/lxml/serializer.pxi":335
*
* if (not c_dtd.entities and not c_dtd.elements and
* not c_dtd.attributes and not c_dtd.notations and # <<<<<<<<<<<<<<
goto __pyx_L20_bool_binop_done;
}
- /* "src/lxml/serializer.pxi":337
+ /* "src/lxml/serializer.pxi":336
* if (not c_dtd.entities and not c_dtd.elements and
* not c_dtd.attributes and not c_dtd.notations and
* not c_dtd.pentities): # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_t_3;
__pyx_L20_bool_binop_done:;
- /* "src/lxml/serializer.pxi":335
+ /* "src/lxml/serializer.pxi":334
* tree.xmlOutputBufferWrite(c_buffer, 1, quotechar)
*
* if (not c_dtd.entities and not c_dtd.elements and # <<<<<<<<<<<<<<
*/
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":338
+ /* "src/lxml/serializer.pxi":337
* not c_dtd.attributes and not c_dtd.notations and
* not c_dtd.pentities):
* tree.xmlOutputBufferWrite(c_buffer, 2, '>\n') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 2, ((const char *)">\n")));
- /* "src/lxml/serializer.pxi":339
+ /* "src/lxml/serializer.pxi":338
* not c_dtd.pentities):
* tree.xmlOutputBufferWrite(c_buffer, 2, '>\n')
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":335
+ /* "src/lxml/serializer.pxi":334
* tree.xmlOutputBufferWrite(c_buffer, 1, quotechar)
*
* if (not c_dtd.entities and not c_dtd.elements and # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":341
+ /* "src/lxml/serializer.pxi":340
* return
*
* tree.xmlOutputBufferWrite(c_buffer, 3, ' [\n') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 3, ((const char *)" [\n")));
- /* "src/lxml/serializer.pxi":342
+ /* "src/lxml/serializer.pxi":341
*
* tree.xmlOutputBufferWrite(c_buffer, 3, ' [\n')
* if c_dtd.notations and not c_buffer.error: # <<<<<<<<<<<<<<
__pyx_L26_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":343
+ /* "src/lxml/serializer.pxi":342
* tree.xmlOutputBufferWrite(c_buffer, 3, ' [\n')
* if c_dtd.notations and not c_buffer.error:
* c_buf = tree.xmlBufferCreate() # <<<<<<<<<<<<<<
*/
__pyx_v_c_buf = xmlBufferCreate();
- /* "src/lxml/serializer.pxi":344
+ /* "src/lxml/serializer.pxi":343
* if c_dtd.notations and not c_buffer.error:
* c_buf = tree.xmlBufferCreate()
* if not c_buf: # <<<<<<<<<<<<<<
__pyx_t_2 = ((!(__pyx_v_c_buf != 0)) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":345
+ /* "src/lxml/serializer.pxi":344
* c_buf = tree.xmlBufferCreate()
* if not c_buf:
* c_buffer.error = xmlerror.XML_ERR_NO_MEMORY # <<<<<<<<<<<<<<
*/
__pyx_v_c_buffer->error = XML_ERR_NO_MEMORY;
- /* "src/lxml/serializer.pxi":346
+ /* "src/lxml/serializer.pxi":345
* if not c_buf:
* c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":344
+ /* "src/lxml/serializer.pxi":343
* if c_dtd.notations and not c_buffer.error:
* c_buf = tree.xmlBufferCreate()
* if not c_buf: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":347
+ /* "src/lxml/serializer.pxi":346
* c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
* return
* tree.xmlDumpNotationTable(c_buf, <tree.xmlNotationTable*>c_dtd.notations) # <<<<<<<<<<<<<<
*/
xmlDumpNotationTable(__pyx_v_c_buf, ((xmlNotationTable *)__pyx_v_c_dtd->notations));
- /* "src/lxml/serializer.pxi":348
+ /* "src/lxml/serializer.pxi":347
* return
* tree.xmlDumpNotationTable(c_buf, <tree.xmlNotationTable*>c_dtd.notations)
* tree.xmlOutputBufferWrite( # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, xmlBufferLength(__pyx_v_c_buf), ((const char *)xmlBufferContent(__pyx_v_c_buf))));
- /* "src/lxml/serializer.pxi":351
+ /* "src/lxml/serializer.pxi":350
* c_buffer, tree.xmlBufferLength(c_buf),
* <const_char*>tree.xmlBufferContent(c_buf))
* tree.xmlBufferFree(c_buf) # <<<<<<<<<<<<<<
*/
xmlBufferFree(__pyx_v_c_buf);
- /* "src/lxml/serializer.pxi":342
+ /* "src/lxml/serializer.pxi":341
*
* tree.xmlOutputBufferWrite(c_buffer, 3, ' [\n')
* if c_dtd.notations and not c_buffer.error: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":352
+ /* "src/lxml/serializer.pxi":351
* <const_char*>tree.xmlBufferContent(c_buf))
* tree.xmlBufferFree(c_buf)
* c_node = c_dtd.children # <<<<<<<<<<<<<<
__pyx_t_5 = __pyx_v_c_dtd->children;
__pyx_v_c_node = __pyx_t_5;
- /* "src/lxml/serializer.pxi":353
+ /* "src/lxml/serializer.pxi":352
* tree.xmlBufferFree(c_buf)
* c_node = c_dtd.children
* while c_node and not c_buffer.error: # <<<<<<<<<<<<<<
__pyx_L31_bool_binop_done:;
if (!__pyx_t_2) break;
- /* "src/lxml/serializer.pxi":354
+ /* "src/lxml/serializer.pxi":353
* c_node = c_dtd.children
* while c_node and not c_buffer.error:
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, 0, encoding) # <<<<<<<<<<<<<<
*/
xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_node, 0, 0, __pyx_v_encoding);
- /* "src/lxml/serializer.pxi":355
+ /* "src/lxml/serializer.pxi":354
* while c_node and not c_buffer.error:
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, 0, encoding)
* c_node = c_node.next # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_t_5;
}
- /* "src/lxml/serializer.pxi":356
+ /* "src/lxml/serializer.pxi":355
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, 0, encoding)
* c_node = c_node.next
* tree.xmlOutputBufferWrite(c_buffer, 3, "]>\n") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 3, ((const char *)"]>\n")));
- /* "src/lxml/serializer.pxi":287
+ /* "src/lxml/serializer.pxi":286
* tree.xmlOutputBufferWrite(c_buffer, 4, "'?>\n")
*
* cdef void _writeDtdToBuffer(tree.xmlOutputBuffer* c_buffer, # <<<<<<<<<<<<<<
__pyx_L0:;
}
-/* "src/lxml/serializer.pxi":358
+/* "src/lxml/serializer.pxi":357
* tree.xmlOutputBufferWrite(c_buffer, 3, "]>\n")
*
* cdef void _writeTail(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node, # <<<<<<<<<<<<<<
int __pyx_t_3;
int __pyx_t_4;
- /* "src/lxml/serializer.pxi":361
+ /* "src/lxml/serializer.pxi":360
* const_char* encoding, int c_method, bint pretty_print) nogil:
* u"Write the element tail."
* c_node = c_node.next # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_node->next;
__pyx_v_c_node = __pyx_t_1;
- /* "src/lxml/serializer.pxi":362
+ /* "src/lxml/serializer.pxi":361
* u"Write the element tail."
* c_node = c_node.next
* while c_node and not c_buffer.error and c_node.type in ( # <<<<<<<<<<<<<<
goto __pyx_L5_bool_binop_done;
}
- /* "src/lxml/serializer.pxi":363
+ /* "src/lxml/serializer.pxi":362
* c_node = c_node.next
* while c_node and not c_buffer.error and c_node.type in (
* tree.XML_TEXT_NODE, tree.XML_CDATA_SECTION_NODE): # <<<<<<<<<<<<<<
case XML_TEXT_NODE:
case XML_CDATA_SECTION_NODE:
- /* "src/lxml/serializer.pxi":362
+ /* "src/lxml/serializer.pxi":361
* u"Write the element tail."
* c_node = c_node.next
* while c_node and not c_buffer.error and c_node.type in ( # <<<<<<<<<<<<<<
__pyx_L5_bool_binop_done:;
if (!__pyx_t_2) break;
- /* "src/lxml/serializer.pxi":364
+ /* "src/lxml/serializer.pxi":363
* while c_node and not c_buffer.error and c_node.type in (
* tree.XML_TEXT_NODE, tree.XML_CDATA_SECTION_NODE):
* if c_method == OUTPUT_METHOD_HTML: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":365
+ /* "src/lxml/serializer.pxi":364
* tree.XML_TEXT_NODE, tree.XML_CDATA_SECTION_NODE):
* if c_method == OUTPUT_METHOD_HTML:
* tree.htmlNodeDumpFormatOutput( # <<<<<<<<<<<<<<
*/
htmlNodeDumpFormatOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_pretty_print);
- /* "src/lxml/serializer.pxi":364
+ /* "src/lxml/serializer.pxi":363
* while c_node and not c_buffer.error and c_node.type in (
* tree.XML_TEXT_NODE, tree.XML_CDATA_SECTION_NODE):
* if c_method == OUTPUT_METHOD_HTML: # <<<<<<<<<<<<<<
goto __pyx_L8;
}
- /* "src/lxml/serializer.pxi":368
+ /* "src/lxml/serializer.pxi":367
* c_buffer, c_node.doc, c_node, encoding, pretty_print)
* else:
* tree.xmlNodeDumpOutput( # <<<<<<<<<<<<<<
*/
/*else*/ {
- /* "src/lxml/serializer.pxi":369
+ /* "src/lxml/serializer.pxi":368
* else:
* tree.xmlNodeDumpOutput(
* c_buffer, c_node.doc, c_node, 0, pretty_print, encoding) # <<<<<<<<<<<<<<
}
__pyx_L8:;
- /* "src/lxml/serializer.pxi":370
+ /* "src/lxml/serializer.pxi":369
* tree.xmlNodeDumpOutput(
* c_buffer, c_node.doc, c_node, 0, pretty_print, encoding)
* c_node = c_node.next # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_t_1;
}
- /* "src/lxml/serializer.pxi":358
+ /* "src/lxml/serializer.pxi":357
* tree.xmlOutputBufferWrite(c_buffer, 3, "]>\n")
*
* cdef void _writeTail(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node, # <<<<<<<<<<<<<<
/* function exit code */
}
-/* "src/lxml/serializer.pxi":372
+/* "src/lxml/serializer.pxi":371
* c_node = c_node.next
*
* cdef void _writePrevSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node, # <<<<<<<<<<<<<<
int __pyx_t_2;
xmlNode *__pyx_t_3;
- /* "src/lxml/serializer.pxi":375
+ /* "src/lxml/serializer.pxi":374
* const_char* encoding, bint pretty_print) nogil:
* cdef xmlNode* c_sibling
* if c_node.parent and _isElement(c_node.parent): # <<<<<<<<<<<<<<
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":376
+ /* "src/lxml/serializer.pxi":375
* cdef xmlNode* c_sibling
* if c_node.parent and _isElement(c_node.parent):
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":375
+ /* "src/lxml/serializer.pxi":374
* const_char* encoding, bint pretty_print) nogil:
* cdef xmlNode* c_sibling
* if c_node.parent and _isElement(c_node.parent): # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":378
+ /* "src/lxml/serializer.pxi":377
* return
* # we are at a root node, so add PI and comment siblings
* c_sibling = c_node # <<<<<<<<<<<<<<
*/
__pyx_v_c_sibling = __pyx_v_c_node;
- /* "src/lxml/serializer.pxi":379
+ /* "src/lxml/serializer.pxi":378
* # we are at a root node, so add PI and comment siblings
* c_sibling = c_node
* while c_sibling.prev and \ # <<<<<<<<<<<<<<
goto __pyx_L8_bool_binop_done;
}
- /* "src/lxml/serializer.pxi":380
+ /* "src/lxml/serializer.pxi":379
* c_sibling = c_node
* while c_sibling.prev and \
* (c_sibling.prev.type == tree.XML_PI_NODE or # <<<<<<<<<<<<<<
case XML_PI_NODE:
case XML_COMMENT_NODE:
- /* "src/lxml/serializer.pxi":381
+ /* "src/lxml/serializer.pxi":380
* while c_sibling.prev and \
* (c_sibling.prev.type == tree.XML_PI_NODE or
* c_sibling.prev.type == tree.XML_COMMENT_NODE): # <<<<<<<<<<<<<<
*/
__pyx_t_2 = 1;
- /* "src/lxml/serializer.pxi":380
+ /* "src/lxml/serializer.pxi":379
* c_sibling = c_node
* while c_sibling.prev and \
* (c_sibling.prev.type == tree.XML_PI_NODE or # <<<<<<<<<<<<<<
__pyx_L8_bool_binop_done:;
if (!__pyx_t_1) break;
- /* "src/lxml/serializer.pxi":382
+ /* "src/lxml/serializer.pxi":381
* (c_sibling.prev.type == tree.XML_PI_NODE or
* c_sibling.prev.type == tree.XML_COMMENT_NODE):
* c_sibling = c_sibling.prev # <<<<<<<<<<<<<<
__pyx_v_c_sibling = __pyx_t_3;
}
- /* "src/lxml/serializer.pxi":383
+ /* "src/lxml/serializer.pxi":382
* c_sibling.prev.type == tree.XML_COMMENT_NODE):
* c_sibling = c_sibling.prev
* while c_sibling is not c_node and not c_buffer.error: # <<<<<<<<<<<<<<
__pyx_L12_bool_binop_done:;
if (!__pyx_t_1) break;
- /* "src/lxml/serializer.pxi":384
+ /* "src/lxml/serializer.pxi":383
* c_sibling = c_sibling.prev
* while c_sibling is not c_node and not c_buffer.error:
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0, # <<<<<<<<<<<<<<
*/
xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_sibling, 0, __pyx_v_pretty_print, __pyx_v_encoding);
- /* "src/lxml/serializer.pxi":386
+ /* "src/lxml/serializer.pxi":385
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
* pretty_print, encoding)
* if pretty_print: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_pretty_print != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":387
+ /* "src/lxml/serializer.pxi":386
* pretty_print, encoding)
* if pretty_print:
* tree.xmlOutputBufferWriteString(c_buffer, "\n") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)"\n")));
- /* "src/lxml/serializer.pxi":386
+ /* "src/lxml/serializer.pxi":385
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
* pretty_print, encoding)
* if pretty_print: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":388
+ /* "src/lxml/serializer.pxi":387
* if pretty_print:
* tree.xmlOutputBufferWriteString(c_buffer, "\n")
* c_sibling = c_sibling.next # <<<<<<<<<<<<<<
__pyx_v_c_sibling = __pyx_t_3;
}
- /* "src/lxml/serializer.pxi":372
+ /* "src/lxml/serializer.pxi":371
* c_node = c_node.next
*
* cdef void _writePrevSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node, # <<<<<<<<<<<<<<
__pyx_L0:;
}
-/* "src/lxml/serializer.pxi":390
+/* "src/lxml/serializer.pxi":389
* c_sibling = c_sibling.next
*
* cdef void _writeNextSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node, # <<<<<<<<<<<<<<
int __pyx_t_2;
xmlNode *__pyx_t_3;
- /* "src/lxml/serializer.pxi":393
+ /* "src/lxml/serializer.pxi":392
* const_char* encoding, bint pretty_print) nogil:
* cdef xmlNode* c_sibling
* if c_node.parent and _isElement(c_node.parent): # <<<<<<<<<<<<<<
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":394
+ /* "src/lxml/serializer.pxi":393
* cdef xmlNode* c_sibling
* if c_node.parent and _isElement(c_node.parent):
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":393
+ /* "src/lxml/serializer.pxi":392
* const_char* encoding, bint pretty_print) nogil:
* cdef xmlNode* c_sibling
* if c_node.parent and _isElement(c_node.parent): # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":396
+ /* "src/lxml/serializer.pxi":395
* return
* # we are at a root node, so add PI and comment siblings
* c_sibling = c_node.next # <<<<<<<<<<<<<<
__pyx_t_3 = __pyx_v_c_node->next;
__pyx_v_c_sibling = __pyx_t_3;
- /* "src/lxml/serializer.pxi":397
+ /* "src/lxml/serializer.pxi":396
* # we are at a root node, so add PI and comment siblings
* c_sibling = c_node.next
* while not c_buffer.error and c_sibling and \ # <<<<<<<<<<<<<<
goto __pyx_L8_bool_binop_done;
}
- /* "src/lxml/serializer.pxi":398
+ /* "src/lxml/serializer.pxi":397
* c_sibling = c_node.next
* while not c_buffer.error and c_sibling and \
* (c_sibling.type == tree.XML_PI_NODE or # <<<<<<<<<<<<<<
case XML_PI_NODE:
case XML_COMMENT_NODE:
- /* "src/lxml/serializer.pxi":399
+ /* "src/lxml/serializer.pxi":398
* while not c_buffer.error and c_sibling and \
* (c_sibling.type == tree.XML_PI_NODE or
* c_sibling.type == tree.XML_COMMENT_NODE): # <<<<<<<<<<<<<<
*/
__pyx_t_2 = 1;
- /* "src/lxml/serializer.pxi":398
+ /* "src/lxml/serializer.pxi":397
* c_sibling = c_node.next
* while not c_buffer.error and c_sibling and \
* (c_sibling.type == tree.XML_PI_NODE or # <<<<<<<<<<<<<<
__pyx_L8_bool_binop_done:;
if (!__pyx_t_1) break;
- /* "src/lxml/serializer.pxi":400
+ /* "src/lxml/serializer.pxi":399
* (c_sibling.type == tree.XML_PI_NODE or
* c_sibling.type == tree.XML_COMMENT_NODE):
* if pretty_print: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_pretty_print != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":401
+ /* "src/lxml/serializer.pxi":400
* c_sibling.type == tree.XML_COMMENT_NODE):
* if pretty_print:
* tree.xmlOutputBufferWriteString(c_buffer, "\n") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)"\n")));
- /* "src/lxml/serializer.pxi":400
+ /* "src/lxml/serializer.pxi":399
* (c_sibling.type == tree.XML_PI_NODE or
* c_sibling.type == tree.XML_COMMENT_NODE):
* if pretty_print: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":402
+ /* "src/lxml/serializer.pxi":401
* if pretty_print:
* tree.xmlOutputBufferWriteString(c_buffer, "\n")
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0, # <<<<<<<<<<<<<<
*/
xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_sibling, 0, __pyx_v_pretty_print, __pyx_v_encoding);
- /* "src/lxml/serializer.pxi":404
+ /* "src/lxml/serializer.pxi":403
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
* pretty_print, encoding)
* c_sibling = c_sibling.next # <<<<<<<<<<<<<<
__pyx_v_c_sibling = __pyx_t_3;
}
- /* "src/lxml/serializer.pxi":390
+ /* "src/lxml/serializer.pxi":389
* c_sibling = c_sibling.next
*
* cdef void _writeNextSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node, # <<<<<<<<<<<<<<
__pyx_L0:;
}
-/* "src/lxml/serializer.pxi":408
+/* "src/lxml/serializer.pxi":407
*
* # copied and adapted from libxml2
* cdef unsigned char *xmlSerializeHexCharRef(unsigned char *out, int val): # <<<<<<<<<<<<<<
int __pyx_t_1;
__Pyx_RefNannySetupContext("xmlSerializeHexCharRef", 0);
- /* "src/lxml/serializer.pxi":412
+ /* "src/lxml/serializer.pxi":411
* cdef xmlChar c
*
* out[0] = '&' # <<<<<<<<<<<<<<
*/
(__pyx_v_out[0]) = '&';
- /* "src/lxml/serializer.pxi":413
+ /* "src/lxml/serializer.pxi":412
*
* out[0] = '&'
* out += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_out = (__pyx_v_out + 1);
- /* "src/lxml/serializer.pxi":415
+ /* "src/lxml/serializer.pxi":414
* out += 1
*
* out[0] = '#' # <<<<<<<<<<<<<<
*/
(__pyx_v_out[0]) = '#';
- /* "src/lxml/serializer.pxi":416
+ /* "src/lxml/serializer.pxi":415
*
* out[0] = '#'
* out += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_out = (__pyx_v_out + 1);
- /* "src/lxml/serializer.pxi":418
+ /* "src/lxml/serializer.pxi":417
* out += 1
*
* out[0] = 'x' # <<<<<<<<<<<<<<
*/
(__pyx_v_out[0]) = 'x';
- /* "src/lxml/serializer.pxi":419
+ /* "src/lxml/serializer.pxi":418
*
* out[0] = 'x'
* out += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_out = (__pyx_v_out + 1);
- /* "src/lxml/serializer.pxi":421
+ /* "src/lxml/serializer.pxi":420
* out += 1
*
* if val < 0x10: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_val < 0x10) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":422
+ /* "src/lxml/serializer.pxi":421
*
* if val < 0x10:
* ptr = out # <<<<<<<<<<<<<<
*/
__pyx_v_ptr = __pyx_v_out;
- /* "src/lxml/serializer.pxi":421
+ /* "src/lxml/serializer.pxi":420
* out += 1
*
* if val < 0x10: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/serializer.pxi":423
+ /* "src/lxml/serializer.pxi":422
* if val < 0x10:
* ptr = out
* elif val < 0x100: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_val < 0x100) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":424
+ /* "src/lxml/serializer.pxi":423
* ptr = out
* elif val < 0x100:
* ptr = out + 1 # <<<<<<<<<<<<<<
*/
__pyx_v_ptr = (__pyx_v_out + 1);
- /* "src/lxml/serializer.pxi":423
+ /* "src/lxml/serializer.pxi":422
* if val < 0x10:
* ptr = out
* elif val < 0x100: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/serializer.pxi":425
+ /* "src/lxml/serializer.pxi":424
* elif val < 0x100:
* ptr = out + 1
* elif val < 0x1000: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_val < 0x1000) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":426
+ /* "src/lxml/serializer.pxi":425
* ptr = out + 1
* elif val < 0x1000:
* ptr = out + 2 # <<<<<<<<<<<<<<
*/
__pyx_v_ptr = (__pyx_v_out + 2);
- /* "src/lxml/serializer.pxi":425
+ /* "src/lxml/serializer.pxi":424
* elif val < 0x100:
* ptr = out + 1
* elif val < 0x1000: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/serializer.pxi":427
+ /* "src/lxml/serializer.pxi":426
* elif val < 0x1000:
* ptr = out + 2
* elif val < 0x10000: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_val < 0x10000) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":428
+ /* "src/lxml/serializer.pxi":427
* ptr = out + 2
* elif val < 0x10000:
* ptr = out + 3 # <<<<<<<<<<<<<<
*/
__pyx_v_ptr = (__pyx_v_out + 3);
- /* "src/lxml/serializer.pxi":427
+ /* "src/lxml/serializer.pxi":426
* elif val < 0x1000:
* ptr = out + 2
* elif val < 0x10000: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/serializer.pxi":429
+ /* "src/lxml/serializer.pxi":428
* elif val < 0x10000:
* ptr = out + 3
* elif val < 0x100000: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_val < 0x100000) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":430
+ /* "src/lxml/serializer.pxi":429
* ptr = out + 3
* elif val < 0x100000:
* ptr = out + 4 # <<<<<<<<<<<<<<
*/
__pyx_v_ptr = (__pyx_v_out + 4);
- /* "src/lxml/serializer.pxi":429
+ /* "src/lxml/serializer.pxi":428
* elif val < 0x10000:
* ptr = out + 3
* elif val < 0x100000: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/serializer.pxi":432
+ /* "src/lxml/serializer.pxi":431
* ptr = out + 4
* else:
* ptr = out + 5 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "src/lxml/serializer.pxi":434
+ /* "src/lxml/serializer.pxi":433
* ptr = out + 5
*
* out = ptr + 1 # <<<<<<<<<<<<<<
*/
__pyx_v_out = (__pyx_v_ptr + 1);
- /* "src/lxml/serializer.pxi":435
+ /* "src/lxml/serializer.pxi":434
*
* out = ptr + 1
* while val > 0: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_val > 0) != 0);
if (!__pyx_t_1) break;
- /* "src/lxml/serializer.pxi":436
+ /* "src/lxml/serializer.pxi":435
* out = ptr + 1
* while val > 0:
* c = (val & 0xF) # <<<<<<<<<<<<<<
*/
__pyx_v_c = (__pyx_v_val & 0xF);
- /* "src/lxml/serializer.pxi":438
+ /* "src/lxml/serializer.pxi":437
* c = (val & 0xF)
*
* if c == 0: # <<<<<<<<<<<<<<
switch (__pyx_v_c) {
case 0:
- /* "src/lxml/serializer.pxi":439
+ /* "src/lxml/serializer.pxi":438
*
* if c == 0:
* ptr[0] = '0' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = '0';
- /* "src/lxml/serializer.pxi":438
+ /* "src/lxml/serializer.pxi":437
* c = (val & 0xF)
*
* if c == 0: # <<<<<<<<<<<<<<
break;
case 1:
- /* "src/lxml/serializer.pxi":441
+ /* "src/lxml/serializer.pxi":440
* ptr[0] = '0'
* elif c == 1:
* ptr[0] = '1' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = '1';
- /* "src/lxml/serializer.pxi":440
+ /* "src/lxml/serializer.pxi":439
* if c == 0:
* ptr[0] = '0'
* elif c == 1: # <<<<<<<<<<<<<<
break;
case 2:
- /* "src/lxml/serializer.pxi":443
+ /* "src/lxml/serializer.pxi":442
* ptr[0] = '1'
* elif c == 2:
* ptr[0] = '2' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = '2';
- /* "src/lxml/serializer.pxi":442
+ /* "src/lxml/serializer.pxi":441
* elif c == 1:
* ptr[0] = '1'
* elif c == 2: # <<<<<<<<<<<<<<
break;
case 3:
- /* "src/lxml/serializer.pxi":445
+ /* "src/lxml/serializer.pxi":444
* ptr[0] = '2'
* elif c == 3:
* ptr[0] = '3' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = '3';
- /* "src/lxml/serializer.pxi":444
+ /* "src/lxml/serializer.pxi":443
* elif c == 2:
* ptr[0] = '2'
* elif c == 3: # <<<<<<<<<<<<<<
break;
case 4:
- /* "src/lxml/serializer.pxi":447
+ /* "src/lxml/serializer.pxi":446
* ptr[0] = '3'
* elif c == 4:
* ptr[0] = '4' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = '4';
- /* "src/lxml/serializer.pxi":446
+ /* "src/lxml/serializer.pxi":445
* elif c == 3:
* ptr[0] = '3'
* elif c == 4: # <<<<<<<<<<<<<<
break;
case 5:
- /* "src/lxml/serializer.pxi":449
+ /* "src/lxml/serializer.pxi":448
* ptr[0] = '4'
* elif c == 5:
* ptr[0] = '5' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = '5';
- /* "src/lxml/serializer.pxi":448
+ /* "src/lxml/serializer.pxi":447
* elif c == 4:
* ptr[0] = '4'
* elif c == 5: # <<<<<<<<<<<<<<
break;
case 6:
- /* "src/lxml/serializer.pxi":451
+ /* "src/lxml/serializer.pxi":450
* ptr[0] = '5'
* elif c == 6:
* ptr[0] = '6' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = '6';
- /* "src/lxml/serializer.pxi":450
+ /* "src/lxml/serializer.pxi":449
* elif c == 5:
* ptr[0] = '5'
* elif c == 6: # <<<<<<<<<<<<<<
break;
case 7:
- /* "src/lxml/serializer.pxi":453
+ /* "src/lxml/serializer.pxi":452
* ptr[0] = '6'
* elif c == 7:
* ptr[0] = '7' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = '7';
- /* "src/lxml/serializer.pxi":452
+ /* "src/lxml/serializer.pxi":451
* elif c == 6:
* ptr[0] = '6'
* elif c == 7: # <<<<<<<<<<<<<<
break;
case 8:
- /* "src/lxml/serializer.pxi":455
+ /* "src/lxml/serializer.pxi":454
* ptr[0] = '7'
* elif c == 8:
* ptr[0] = '8' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = '8';
- /* "src/lxml/serializer.pxi":454
+ /* "src/lxml/serializer.pxi":453
* elif c == 7:
* ptr[0] = '7'
* elif c == 8: # <<<<<<<<<<<<<<
break;
case 9:
- /* "src/lxml/serializer.pxi":457
+ /* "src/lxml/serializer.pxi":456
* ptr[0] = '8'
* elif c == 9:
* ptr[0] = '9' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = '9';
- /* "src/lxml/serializer.pxi":456
+ /* "src/lxml/serializer.pxi":455
* elif c == 8:
* ptr[0] = '8'
* elif c == 9: # <<<<<<<<<<<<<<
break;
case 0xA:
- /* "src/lxml/serializer.pxi":459
+ /* "src/lxml/serializer.pxi":458
* ptr[0] = '9'
* elif c == 0xA:
* ptr[0] = 'A' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = 'A';
- /* "src/lxml/serializer.pxi":458
+ /* "src/lxml/serializer.pxi":457
* elif c == 9:
* ptr[0] = '9'
* elif c == 0xA: # <<<<<<<<<<<<<<
break;
case 0xB:
- /* "src/lxml/serializer.pxi":461
+ /* "src/lxml/serializer.pxi":460
* ptr[0] = 'A'
* elif c == 0xB:
* ptr[0] = 'B' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = 'B';
- /* "src/lxml/serializer.pxi":460
+ /* "src/lxml/serializer.pxi":459
* elif c == 0xA:
* ptr[0] = 'A'
* elif c == 0xB: # <<<<<<<<<<<<<<
break;
case 0xC:
- /* "src/lxml/serializer.pxi":463
+ /* "src/lxml/serializer.pxi":462
* ptr[0] = 'B'
* elif c == 0xC:
* ptr[0] = 'C' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = 'C';
- /* "src/lxml/serializer.pxi":462
+ /* "src/lxml/serializer.pxi":461
* elif c == 0xB:
* ptr[0] = 'B'
* elif c == 0xC: # <<<<<<<<<<<<<<
break;
case 0xD:
- /* "src/lxml/serializer.pxi":465
+ /* "src/lxml/serializer.pxi":464
* ptr[0] = 'C'
* elif c == 0xD:
* ptr[0] = 'D' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = 'D';
- /* "src/lxml/serializer.pxi":464
+ /* "src/lxml/serializer.pxi":463
* elif c == 0xC:
* ptr[0] = 'C'
* elif c == 0xD: # <<<<<<<<<<<<<<
break;
case 0xE:
- /* "src/lxml/serializer.pxi":467
+ /* "src/lxml/serializer.pxi":466
* ptr[0] = 'D'
* elif c == 0xE:
* ptr[0] = 'E' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = 'E';
- /* "src/lxml/serializer.pxi":466
+ /* "src/lxml/serializer.pxi":465
* elif c == 0xD:
* ptr[0] = 'D'
* elif c == 0xE: # <<<<<<<<<<<<<<
break;
case 0xF:
- /* "src/lxml/serializer.pxi":469
+ /* "src/lxml/serializer.pxi":468
* ptr[0] = 'E'
* elif c == 0xF:
* ptr[0] = 'F' # <<<<<<<<<<<<<<
*/
(__pyx_v_ptr[0]) = 'F';
- /* "src/lxml/serializer.pxi":468
+ /* "src/lxml/serializer.pxi":467
* elif c == 0xE:
* ptr[0] = 'E'
* elif c == 0xF: # <<<<<<<<<<<<<<
break;
default:
- /* "src/lxml/serializer.pxi":471
+ /* "src/lxml/serializer.pxi":470
* ptr[0] = 'F'
* else:
* ptr[0] = '0' # <<<<<<<<<<<<<<
break;
}
- /* "src/lxml/serializer.pxi":473
+ /* "src/lxml/serializer.pxi":472
* ptr[0] = '0'
*
* ptr -= 1 # <<<<<<<<<<<<<<
*/
__pyx_v_ptr = (__pyx_v_ptr - 1);
- /* "src/lxml/serializer.pxi":475
+ /* "src/lxml/serializer.pxi":474
* ptr -= 1
*
* val >>= 4 # <<<<<<<<<<<<<<
__pyx_v_val = (__pyx_v_val >> 4);
}
- /* "src/lxml/serializer.pxi":477
+ /* "src/lxml/serializer.pxi":476
* val >>= 4
*
* out[0] = ';' # <<<<<<<<<<<<<<
*/
(__pyx_v_out[0]) = ';';
- /* "src/lxml/serializer.pxi":478
+ /* "src/lxml/serializer.pxi":477
*
* out[0] = ';'
* out += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_out = (__pyx_v_out + 1);
- /* "src/lxml/serializer.pxi":479
+ /* "src/lxml/serializer.pxi":478
* out[0] = ';'
* out += 1
* out[0] = 0 # <<<<<<<<<<<<<<
*/
(__pyx_v_out[0]) = 0;
- /* "src/lxml/serializer.pxi":481
+ /* "src/lxml/serializer.pxi":480
* out[0] = 0
*
* return out # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_out;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":408
+ /* "src/lxml/serializer.pxi":407
*
* # copied and adapted from libxml2
* cdef unsigned char *xmlSerializeHexCharRef(unsigned char *out, int val): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":485
+/* "src/lxml/serializer.pxi":484
*
* # copied and adapted from libxml2 (xmlBufAttrSerializeTxtContent())
* cdef _write_attr_string(tree.xmlOutputBuffer* buf, const char *string): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_write_attr_string", 0);
- /* "src/lxml/serializer.pxi":491
+ /* "src/lxml/serializer.pxi":490
*
* cdef unsigned char tmp[12]
* cdef int val = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_val = 0;
- /* "src/lxml/serializer.pxi":494
+ /* "src/lxml/serializer.pxi":493
* cdef int l
*
* if string == NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_string == NULL) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":495
+ /* "src/lxml/serializer.pxi":494
*
* if string == NULL:
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":494
+ /* "src/lxml/serializer.pxi":493
* cdef int l
*
* if string == NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":497
+ /* "src/lxml/serializer.pxi":496
* return
*
* base = cur = <const char*>string # <<<<<<<<<<<<<<
__pyx_v_base = ((char const *)__pyx_v_string);
__pyx_v_cur = ((char const *)__pyx_v_string);
- /* "src/lxml/serializer.pxi":498
+ /* "src/lxml/serializer.pxi":497
*
* base = cur = <const char*>string
* while cur[0] != 0: # <<<<<<<<<<<<<<
__pyx_t_1 = (((__pyx_v_cur[0]) != 0) != 0);
if (!__pyx_t_1) break;
- /* "src/lxml/serializer.pxi":499
+ /* "src/lxml/serializer.pxi":498
* base = cur = <const char*>string
* while cur[0] != 0:
* if cur[0] == '\n': # <<<<<<<<<<<<<<
__pyx_t_1 = (((__pyx_v_cur[0]) == '\n') != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":500
+ /* "src/lxml/serializer.pxi":499
* while cur[0] != 0:
* if cur[0] == '\n':
* if base != cur: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":501
+ /* "src/lxml/serializer.pxi":500
* if cur[0] == '\n':
* if base != cur:
* tree.xmlOutputBufferWrite(buf, cur - base, base) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
- /* "src/lxml/serializer.pxi":500
+ /* "src/lxml/serializer.pxi":499
* while cur[0] != 0:
* if cur[0] == '\n':
* if base != cur: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":503
+ /* "src/lxml/serializer.pxi":502
* tree.xmlOutputBufferWrite(buf, cur - base, base)
*
* tree.xmlOutputBufferWrite(buf, 5, " ") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, 5, ((const char *)" ")));
- /* "src/lxml/serializer.pxi":504
+ /* "src/lxml/serializer.pxi":503
*
* tree.xmlOutputBufferWrite(buf, 5, " ")
* cur += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_cur = (__pyx_v_cur + 1);
- /* "src/lxml/serializer.pxi":505
+ /* "src/lxml/serializer.pxi":504
* tree.xmlOutputBufferWrite(buf, 5, " ")
* cur += 1
* base = cur # <<<<<<<<<<<<<<
*/
__pyx_v_base = __pyx_v_cur;
- /* "src/lxml/serializer.pxi":499
+ /* "src/lxml/serializer.pxi":498
* base = cur = <const char*>string
* while cur[0] != 0:
* if cur[0] == '\n': # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":507
+ /* "src/lxml/serializer.pxi":506
* base = cur
*
* elif cur[0] == '\r': # <<<<<<<<<<<<<<
__pyx_t_1 = (((__pyx_v_cur[0]) == '\r') != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":508
+ /* "src/lxml/serializer.pxi":507
*
* elif cur[0] == '\r':
* if base != cur: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":509
+ /* "src/lxml/serializer.pxi":508
* elif cur[0] == '\r':
* if base != cur:
* tree.xmlOutputBufferWrite(buf, cur - base, base) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
- /* "src/lxml/serializer.pxi":508
+ /* "src/lxml/serializer.pxi":507
*
* elif cur[0] == '\r':
* if base != cur: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":511
+ /* "src/lxml/serializer.pxi":510
* tree.xmlOutputBufferWrite(buf, cur - base, base)
*
* tree.xmlOutputBufferWrite(buf, 5, " ") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, 5, ((const char *)" ")));
- /* "src/lxml/serializer.pxi":512
+ /* "src/lxml/serializer.pxi":511
*
* tree.xmlOutputBufferWrite(buf, 5, " ")
* cur += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_cur = (__pyx_v_cur + 1);
- /* "src/lxml/serializer.pxi":513
+ /* "src/lxml/serializer.pxi":512
* tree.xmlOutputBufferWrite(buf, 5, " ")
* cur += 1
* base = cur # <<<<<<<<<<<<<<
*/
__pyx_v_base = __pyx_v_cur;
- /* "src/lxml/serializer.pxi":507
+ /* "src/lxml/serializer.pxi":506
* base = cur
*
* elif cur[0] == '\r': # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":515
+ /* "src/lxml/serializer.pxi":514
* base = cur
*
* elif cur[0] == '\t': # <<<<<<<<<<<<<<
__pyx_t_1 = (((__pyx_v_cur[0]) == '\t') != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":516
+ /* "src/lxml/serializer.pxi":515
*
* elif cur[0] == '\t':
* if base != cur: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":517
+ /* "src/lxml/serializer.pxi":516
* elif cur[0] == '\t':
* if base != cur:
* tree.xmlOutputBufferWrite(buf, cur - base, base) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
- /* "src/lxml/serializer.pxi":516
+ /* "src/lxml/serializer.pxi":515
*
* elif cur[0] == '\t':
* if base != cur: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":519
+ /* "src/lxml/serializer.pxi":518
* tree.xmlOutputBufferWrite(buf, cur - base, base)
*
* tree.xmlOutputBufferWrite(buf, 4, "	") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, 4, ((const char *)"	")));
- /* "src/lxml/serializer.pxi":520
+ /* "src/lxml/serializer.pxi":519
*
* tree.xmlOutputBufferWrite(buf, 4, "	")
* cur += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_cur = (__pyx_v_cur + 1);
- /* "src/lxml/serializer.pxi":521
+ /* "src/lxml/serializer.pxi":520
* tree.xmlOutputBufferWrite(buf, 4, "	")
* cur += 1
* base = cur # <<<<<<<<<<<<<<
*/
__pyx_v_base = __pyx_v_cur;
- /* "src/lxml/serializer.pxi":515
+ /* "src/lxml/serializer.pxi":514
* base = cur
*
* elif cur[0] == '\t': # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":523
+ /* "src/lxml/serializer.pxi":522
* base = cur
*
* elif cur[0] == '"': # <<<<<<<<<<<<<<
__pyx_t_1 = (((__pyx_v_cur[0]) == '"') != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":524
+ /* "src/lxml/serializer.pxi":523
*
* elif cur[0] == '"':
* if base != cur: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":525
+ /* "src/lxml/serializer.pxi":524
* elif cur[0] == '"':
* if base != cur:
* tree.xmlOutputBufferWrite(buf, cur - base, base) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
- /* "src/lxml/serializer.pxi":524
+ /* "src/lxml/serializer.pxi":523
*
* elif cur[0] == '"':
* if base != cur: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":527
+ /* "src/lxml/serializer.pxi":526
* tree.xmlOutputBufferWrite(buf, cur - base, base)
*
* tree.xmlOutputBufferWrite(buf, 6, """) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, 6, ((const char *)""")));
- /* "src/lxml/serializer.pxi":528
+ /* "src/lxml/serializer.pxi":527
*
* tree.xmlOutputBufferWrite(buf, 6, """)
* cur += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_cur = (__pyx_v_cur + 1);
- /* "src/lxml/serializer.pxi":529
+ /* "src/lxml/serializer.pxi":528
* tree.xmlOutputBufferWrite(buf, 6, """)
* cur += 1
* base = cur # <<<<<<<<<<<<<<
*/
__pyx_v_base = __pyx_v_cur;
- /* "src/lxml/serializer.pxi":523
+ /* "src/lxml/serializer.pxi":522
* base = cur
*
* elif cur[0] == '"': # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":531
+ /* "src/lxml/serializer.pxi":530
* base = cur
*
* elif cur[0] == '<': # <<<<<<<<<<<<<<
__pyx_t_1 = (((__pyx_v_cur[0]) == '<') != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":532
+ /* "src/lxml/serializer.pxi":531
*
* elif cur[0] == '<':
* if base != cur: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":533
+ /* "src/lxml/serializer.pxi":532
* elif cur[0] == '<':
* if base != cur:
* tree.xmlOutputBufferWrite(buf, cur - base, base) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
- /* "src/lxml/serializer.pxi":532
+ /* "src/lxml/serializer.pxi":531
*
* elif cur[0] == '<':
* if base != cur: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":535
+ /* "src/lxml/serializer.pxi":534
* tree.xmlOutputBufferWrite(buf, cur - base, base)
*
* tree.xmlOutputBufferWrite(buf, 4, "<") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, 4, ((const char *)"<")));
- /* "src/lxml/serializer.pxi":536
+ /* "src/lxml/serializer.pxi":535
*
* tree.xmlOutputBufferWrite(buf, 4, "<")
* cur += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_cur = (__pyx_v_cur + 1);
- /* "src/lxml/serializer.pxi":537
+ /* "src/lxml/serializer.pxi":536
* tree.xmlOutputBufferWrite(buf, 4, "<")
* cur += 1
* base = cur # <<<<<<<<<<<<<<
*/
__pyx_v_base = __pyx_v_cur;
- /* "src/lxml/serializer.pxi":531
+ /* "src/lxml/serializer.pxi":530
* base = cur
*
* elif cur[0] == '<': # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":539
+ /* "src/lxml/serializer.pxi":538
* base = cur
*
* elif cur[0] == '>': # <<<<<<<<<<<<<<
__pyx_t_1 = (((__pyx_v_cur[0]) == '>') != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":540
+ /* "src/lxml/serializer.pxi":539
*
* elif cur[0] == '>':
* if base != cur: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":541
+ /* "src/lxml/serializer.pxi":540
* elif cur[0] == '>':
* if base != cur:
* tree.xmlOutputBufferWrite(buf, cur - base, base) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
- /* "src/lxml/serializer.pxi":540
+ /* "src/lxml/serializer.pxi":539
*
* elif cur[0] == '>':
* if base != cur: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":543
+ /* "src/lxml/serializer.pxi":542
* tree.xmlOutputBufferWrite(buf, cur - base, base)
*
* tree.xmlOutputBufferWrite(buf, 4, ">") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, 4, ((const char *)">")));
- /* "src/lxml/serializer.pxi":544
+ /* "src/lxml/serializer.pxi":543
*
* tree.xmlOutputBufferWrite(buf, 4, ">")
* cur += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_cur = (__pyx_v_cur + 1);
- /* "src/lxml/serializer.pxi":545
+ /* "src/lxml/serializer.pxi":544
* tree.xmlOutputBufferWrite(buf, 4, ">")
* cur += 1
* base = cur # <<<<<<<<<<<<<<
*/
__pyx_v_base = __pyx_v_cur;
- /* "src/lxml/serializer.pxi":539
+ /* "src/lxml/serializer.pxi":538
* base = cur
*
* elif cur[0] == '>': # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":546
+ /* "src/lxml/serializer.pxi":545
* cur += 1
* base = cur
* elif cur[0] == '&': # <<<<<<<<<<<<<<
__pyx_t_1 = (((__pyx_v_cur[0]) == '&') != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":547
+ /* "src/lxml/serializer.pxi":546
* base = cur
* elif cur[0] == '&':
* if base != cur: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":548
+ /* "src/lxml/serializer.pxi":547
* elif cur[0] == '&':
* if base != cur:
* tree.xmlOutputBufferWrite(buf, cur - base, base) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
- /* "src/lxml/serializer.pxi":547
+ /* "src/lxml/serializer.pxi":546
* base = cur
* elif cur[0] == '&':
* if base != cur: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":550
+ /* "src/lxml/serializer.pxi":549
* tree.xmlOutputBufferWrite(buf, cur - base, base)
*
* tree.xmlOutputBufferWrite(buf, 5, "&") # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, 5, ((const char *)"&")));
- /* "src/lxml/serializer.pxi":551
+ /* "src/lxml/serializer.pxi":550
*
* tree.xmlOutputBufferWrite(buf, 5, "&")
* cur += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_cur = (__pyx_v_cur + 1);
- /* "src/lxml/serializer.pxi":552
+ /* "src/lxml/serializer.pxi":551
* tree.xmlOutputBufferWrite(buf, 5, "&")
* cur += 1
* base = cur # <<<<<<<<<<<<<<
*/
__pyx_v_base = __pyx_v_cur;
- /* "src/lxml/serializer.pxi":546
+ /* "src/lxml/serializer.pxi":545
* cur += 1
* base = cur
* elif cur[0] == '&': # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":554
+ /* "src/lxml/serializer.pxi":553
* base = cur
*
* elif (<const unsigned char>cur[0] >= 0x80) and (cur[1] != 0): # <<<<<<<<<<<<<<
__pyx_L14_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":556
+ /* "src/lxml/serializer.pxi":555
* elif (<const unsigned char>cur[0] >= 0x80) and (cur[1] != 0):
*
* if base != cur: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":557
+ /* "src/lxml/serializer.pxi":556
*
* if base != cur:
* tree.xmlOutputBufferWrite(buf, cur - base, base) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
- /* "src/lxml/serializer.pxi":556
+ /* "src/lxml/serializer.pxi":555
* elif (<const unsigned char>cur[0] >= 0x80) and (cur[1] != 0):
*
* if base != cur: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":559
+ /* "src/lxml/serializer.pxi":558
* tree.xmlOutputBufferWrite(buf, cur - base, base)
*
* ucur = <const unsigned char *>cur # <<<<<<<<<<<<<<
*/
__pyx_v_ucur = ((unsigned char const *)__pyx_v_cur);
- /* "src/lxml/serializer.pxi":561
+ /* "src/lxml/serializer.pxi":560
* ucur = <const unsigned char *>cur
*
* if ucur[0] < 0xC0: # <<<<<<<<<<<<<<
__pyx_t_1 = (((__pyx_v_ucur[0]) < 0xC0) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":563
+ /* "src/lxml/serializer.pxi":562
* if ucur[0] < 0xC0:
* # invalid UTF-8 sequence
* val = ucur[0] # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_ucur[0]);
- /* "src/lxml/serializer.pxi":564
+ /* "src/lxml/serializer.pxi":563
* # invalid UTF-8 sequence
* val = ucur[0]
* l = 1 # <<<<<<<<<<<<<<
*/
__pyx_v_l = 1;
- /* "src/lxml/serializer.pxi":561
+ /* "src/lxml/serializer.pxi":560
* ucur = <const unsigned char *>cur
*
* if ucur[0] < 0xC0: # <<<<<<<<<<<<<<
goto __pyx_L17;
}
- /* "src/lxml/serializer.pxi":566
+ /* "src/lxml/serializer.pxi":565
* l = 1
*
* elif ucur[0] < 0xE0: # <<<<<<<<<<<<<<
__pyx_t_1 = (((__pyx_v_ucur[0]) < 0xE0) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":567
+ /* "src/lxml/serializer.pxi":566
*
* elif ucur[0] < 0xE0:
* val = (ucur[0]) & 0x1F # <<<<<<<<<<<<<<
*/
__pyx_v_val = ((__pyx_v_ucur[0]) & 0x1F);
- /* "src/lxml/serializer.pxi":568
+ /* "src/lxml/serializer.pxi":567
* elif ucur[0] < 0xE0:
* val = (ucur[0]) & 0x1F
* val <<= 6 # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val << 6);
- /* "src/lxml/serializer.pxi":569
+ /* "src/lxml/serializer.pxi":568
* val = (ucur[0]) & 0x1F
* val <<= 6
* val |= (ucur[1]) & 0x3F # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[1]) & 0x3F));
- /* "src/lxml/serializer.pxi":570
+ /* "src/lxml/serializer.pxi":569
* val <<= 6
* val |= (ucur[1]) & 0x3F
* l = 2 # <<<<<<<<<<<<<<
*/
__pyx_v_l = 2;
- /* "src/lxml/serializer.pxi":566
+ /* "src/lxml/serializer.pxi":565
* l = 1
*
* elif ucur[0] < 0xE0: # <<<<<<<<<<<<<<
goto __pyx_L17;
}
- /* "src/lxml/serializer.pxi":572
+ /* "src/lxml/serializer.pxi":571
* l = 2
*
* elif (ucur[0] < 0xF0) and (ucur[2] != 0): # <<<<<<<<<<<<<<
__pyx_L18_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":573
+ /* "src/lxml/serializer.pxi":572
*
* elif (ucur[0] < 0xF0) and (ucur[2] != 0):
* val = (ucur[0]) & 0x0F # <<<<<<<<<<<<<<
*/
__pyx_v_val = ((__pyx_v_ucur[0]) & 0x0F);
- /* "src/lxml/serializer.pxi":574
+ /* "src/lxml/serializer.pxi":573
* elif (ucur[0] < 0xF0) and (ucur[2] != 0):
* val = (ucur[0]) & 0x0F
* val <<= 6 # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val << 6);
- /* "src/lxml/serializer.pxi":575
+ /* "src/lxml/serializer.pxi":574
* val = (ucur[0]) & 0x0F
* val <<= 6
* val |= (ucur[1]) & 0x3F # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[1]) & 0x3F));
- /* "src/lxml/serializer.pxi":576
+ /* "src/lxml/serializer.pxi":575
* val <<= 6
* val |= (ucur[1]) & 0x3F
* val <<= 6 # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val << 6);
- /* "src/lxml/serializer.pxi":577
+ /* "src/lxml/serializer.pxi":576
* val |= (ucur[1]) & 0x3F
* val <<= 6
* val |= (ucur[2]) & 0x3F # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[2]) & 0x3F));
- /* "src/lxml/serializer.pxi":578
+ /* "src/lxml/serializer.pxi":577
* val <<= 6
* val |= (ucur[2]) & 0x3F
* l = 3 # <<<<<<<<<<<<<<
*/
__pyx_v_l = 3;
- /* "src/lxml/serializer.pxi":572
+ /* "src/lxml/serializer.pxi":571
* l = 2
*
* elif (ucur[0] < 0xF0) and (ucur[2] != 0): # <<<<<<<<<<<<<<
goto __pyx_L17;
}
- /* "src/lxml/serializer.pxi":580
+ /* "src/lxml/serializer.pxi":579
* l = 3
*
* elif (ucur[0] < 0xF8) and (ucur[2] != 0) and (ucur[3] != 0): # <<<<<<<<<<<<<<
__pyx_L20_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":581
+ /* "src/lxml/serializer.pxi":580
*
* elif (ucur[0] < 0xF8) and (ucur[2] != 0) and (ucur[3] != 0):
* val = (ucur[0]) & 0x07 # <<<<<<<<<<<<<<
*/
__pyx_v_val = ((__pyx_v_ucur[0]) & 0x07);
- /* "src/lxml/serializer.pxi":582
+ /* "src/lxml/serializer.pxi":581
* elif (ucur[0] < 0xF8) and (ucur[2] != 0) and (ucur[3] != 0):
* val = (ucur[0]) & 0x07
* val <<= 6 # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val << 6);
- /* "src/lxml/serializer.pxi":583
+ /* "src/lxml/serializer.pxi":582
* val = (ucur[0]) & 0x07
* val <<= 6
* val |= (ucur[1]) & 0x3F # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[1]) & 0x3F));
- /* "src/lxml/serializer.pxi":584
+ /* "src/lxml/serializer.pxi":583
* val <<= 6
* val |= (ucur[1]) & 0x3F
* val <<= 6 # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val << 6);
- /* "src/lxml/serializer.pxi":585
+ /* "src/lxml/serializer.pxi":584
* val |= (ucur[1]) & 0x3F
* val <<= 6
* val |= (ucur[2]) & 0x3F # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[2]) & 0x3F));
- /* "src/lxml/serializer.pxi":586
+ /* "src/lxml/serializer.pxi":585
* val <<= 6
* val |= (ucur[2]) & 0x3F
* val <<= 6 # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val << 6);
- /* "src/lxml/serializer.pxi":587
+ /* "src/lxml/serializer.pxi":586
* val |= (ucur[2]) & 0x3F
* val <<= 6
* val |= (ucur[3]) & 0x3F # <<<<<<<<<<<<<<
*/
__pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[3]) & 0x3F));
- /* "src/lxml/serializer.pxi":588
+ /* "src/lxml/serializer.pxi":587
* val <<= 6
* val |= (ucur[3]) & 0x3F
* l = 4 # <<<<<<<<<<<<<<
*/
__pyx_v_l = 4;
- /* "src/lxml/serializer.pxi":580
+ /* "src/lxml/serializer.pxi":579
* l = 3
*
* elif (ucur[0] < 0xF8) and (ucur[2] != 0) and (ucur[3] != 0): # <<<<<<<<<<<<<<
goto __pyx_L17;
}
- /* "src/lxml/serializer.pxi":591
+ /* "src/lxml/serializer.pxi":590
* else:
* # invalid UTF-8 sequence
* val = ucur[0] # <<<<<<<<<<<<<<
/*else*/ {
__pyx_v_val = (__pyx_v_ucur[0]);
- /* "src/lxml/serializer.pxi":592
+ /* "src/lxml/serializer.pxi":591
* # invalid UTF-8 sequence
* val = ucur[0]
* l = 1 # <<<<<<<<<<<<<<
}
__pyx_L17:;
- /* "src/lxml/serializer.pxi":594
+ /* "src/lxml/serializer.pxi":593
* l = 1
*
* if (l == 1) or (not tree.xmlIsCharQ(val)): # <<<<<<<<<<<<<<
__pyx_L24_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":595
+ /* "src/lxml/serializer.pxi":594
*
* if (l == 1) or (not tree.xmlIsCharQ(val)):
* raise ValueError(f"Invalid character: {val:X}") # <<<<<<<<<<<<<<
*
* # We could do multiple things here. Just save
*/
- __pyx_t_3 = __Pyx_PyUnicode_From_int(__pyx_v_val, 0, ' ', 'X'); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 595, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyUnicode_From_int(__pyx_v_val, 0, ' ', 'X'); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 594, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_character, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 595, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_character, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 594, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 595, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 594, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(9, 595, __pyx_L1_error)
+ __PYX_ERR(9, 594, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":594
+ /* "src/lxml/serializer.pxi":593
* l = 1
*
* if (l == 1) or (not tree.xmlIsCharQ(val)): # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":599
+ /* "src/lxml/serializer.pxi":598
* # We could do multiple things here. Just save
* # as a char ref
* xmlSerializeHexCharRef(tmp, val) # <<<<<<<<<<<<<<
*/
(void)(__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(__pyx_v_tmp, __pyx_v_val));
- /* "src/lxml/serializer.pxi":600
+ /* "src/lxml/serializer.pxi":599
* # as a char ref
* xmlSerializeHexCharRef(tmp, val)
* tree.xmlOutputBufferWrite(buf, len(tmp), <const char*> tmp) # <<<<<<<<<<<<<<
__pyx_t_5 = strlen(((char const *)__pyx_v_tmp));
(void)(xmlOutputBufferWrite(__pyx_v_buf, __pyx_t_5, ((char const *)__pyx_v_tmp)));
- /* "src/lxml/serializer.pxi":601
+ /* "src/lxml/serializer.pxi":600
* xmlSerializeHexCharRef(tmp, val)
* tree.xmlOutputBufferWrite(buf, len(tmp), <const char*> tmp)
* cur += l # <<<<<<<<<<<<<<
*/
__pyx_v_cur = (__pyx_v_cur + __pyx_v_l);
- /* "src/lxml/serializer.pxi":602
+ /* "src/lxml/serializer.pxi":601
* tree.xmlOutputBufferWrite(buf, len(tmp), <const char*> tmp)
* cur += l
* base = cur # <<<<<<<<<<<<<<
*/
__pyx_v_base = __pyx_v_cur;
- /* "src/lxml/serializer.pxi":554
+ /* "src/lxml/serializer.pxi":553
* base = cur
*
* elif (<const unsigned char>cur[0] >= 0x80) and (cur[1] != 0): # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":605
+ /* "src/lxml/serializer.pxi":604
*
* else:
* cur += 1 # <<<<<<<<<<<<<<
__pyx_L6:;
}
- /* "src/lxml/serializer.pxi":607
+ /* "src/lxml/serializer.pxi":606
* cur += 1
*
* if base != cur: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":608
+ /* "src/lxml/serializer.pxi":607
*
* if base != cur:
* tree.xmlOutputBufferWrite(buf, cur - base, base) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
- /* "src/lxml/serializer.pxi":607
+ /* "src/lxml/serializer.pxi":606
* cur += 1
*
* if base != cur: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":485
+ /* "src/lxml/serializer.pxi":484
*
* # copied and adapted from libxml2 (xmlBufAttrSerializeTxtContent())
* cdef _write_attr_string(tree.xmlOutputBuffer* buf, const char *string): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_52generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":630
+/* "src/lxml/serializer.pxi":629
*
* @contextmanager
* def _open_utf8_file(file, compression=0): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_open_utf8_file") < 0)) __PYX_ERR(9, 630, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_open_utf8_file") < 0)) __PYX_ERR(9, 629, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_open_utf8_file", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 630, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_open_utf8_file", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 629, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._open_utf8_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct___open_utf8_file *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 630, __pyx_L1_error)
+ __PYX_ERR(9, 629, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_compression);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_compression);
{
- __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_52generator, __pyx_codeobj__61, (PyObject *) __pyx_cur_scope, __pyx_n_s_open_utf8_file, __pyx_n_s_open_utf8_file, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 630, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_52generator, __pyx_codeobj__61, (PyObject *) __pyx_cur_scope, __pyx_n_s_open_utf8_file, __pyx_n_s_open_utf8_file, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 629, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 630, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 629, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":631
+ /* "src/lxml/serializer.pxi":630
* @contextmanager
* def _open_utf8_file(file, compression=0):
* if _isString(file): # <<<<<<<<<<<<<<
__pyx_t_1 = (_isString(__pyx_cur_scope->__pyx_v_file) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":632
+ /* "src/lxml/serializer.pxi":631
* def _open_utf8_file(file, compression=0):
* if _isString(file):
* if compression: # <<<<<<<<<<<<<<
* with gzip.GzipFile(file, mode='wb', compresslevel=compression) as zf:
* yield utf8_writer(zf)
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_compression); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 632, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_compression); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 631, __pyx_L1_error)
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":633
+ /* "src/lxml/serializer.pxi":632
* if _isString(file):
* if compression:
* with gzip.GzipFile(file, mode='wb', compresslevel=compression) as zf: # <<<<<<<<<<<<<<
* else:
*/
/*with:*/ {
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_gzip, __pyx_n_s_GzipFile); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 633, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_gzip, __pyx_n_s_GzipFile); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 632, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 633, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 632, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_file);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_file);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_file);
- __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 633, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 632, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_mode, __pyx_n_s_wb) < 0) __PYX_ERR(9, 633, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_compresslevel, __pyx_cur_scope->__pyx_v_compression) < 0) __PYX_ERR(9, 633, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 633, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_mode, __pyx_n_s_wb) < 0) __PYX_ERR(9, 632, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_compresslevel, __pyx_cur_scope->__pyx_v_compression) < 0) __PYX_ERR(9, 632, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 632, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 633, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 632, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_5, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 633, __pyx_L6_error)
+ __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_5, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 632, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 633, __pyx_L6_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 632, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __pyx_t_4;
__pyx_cur_scope->__pyx_v_zf = __pyx_t_3;
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":634
+ /* "src/lxml/serializer.pxi":633
* if compression:
* with gzip.GzipFile(file, mode='wb', compresslevel=compression) as zf:
* yield utf8_writer(zf) # <<<<<<<<<<<<<<
}
__pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_cur_scope->__pyx_v_zf) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_cur_scope->__pyx_v_zf);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 634, __pyx_L10_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 633, __pyx_L10_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_r = __pyx_t_3;
__pyx_t_9 = __pyx_cur_scope->__pyx_t_3;
__pyx_cur_scope->__pyx_t_3 = 0;
__Pyx_XGOTREF(__pyx_t_9);
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 634, __pyx_L10_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 633, __pyx_L10_error)
- /* "src/lxml/serializer.pxi":633
+ /* "src/lxml/serializer.pxi":632
* if _isString(file):
* if compression:
* with gzip.GzipFile(file, mode='wb', compresslevel=compression) as zf: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/*except:*/ {
__Pyx_AddTraceback("lxml.etree._open_utf8_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(9, 633, __pyx_L12_except_error)
+ if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(9, 632, __pyx_L12_except_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 633, __pyx_L12_except_error)
+ __pyx_t_2 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 632, __pyx_L12_except_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 633, __pyx_L12_except_error)
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 632, __pyx_L12_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_1 < 0) __PYX_ERR(9, 633, __pyx_L12_except_error)
+ if (__pyx_t_1 < 0) __PYX_ERR(9, 632, __pyx_L12_except_error)
__pyx_t_11 = ((!(__pyx_t_1 != 0)) != 0);
if (__pyx_t_11) {
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_4);
__pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0;
- __PYX_ERR(9, 633, __pyx_L12_except_error)
+ __PYX_ERR(9, 632, __pyx_L12_except_error)
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_6) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 633, __pyx_L1_error)
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 632, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__pyx_L20:;
}
- /* "src/lxml/serializer.pxi":632
+ /* "src/lxml/serializer.pxi":631
* def _open_utf8_file(file, compression=0):
* if _isString(file):
* if compression: # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "src/lxml/serializer.pxi":636
+ /* "src/lxml/serializer.pxi":635
* yield utf8_writer(zf)
* else:
* with io_open(file, 'w', encoding='utf8') as f: # <<<<<<<<<<<<<<
*/
/*else*/ {
/*with:*/ {
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 636, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 635, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_file);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_file);
__Pyx_INCREF(__pyx_n_s_w);
__Pyx_GIVEREF(__pyx_n_s_w);
PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_n_s_w);
- __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 636, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 635, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_encoding, __pyx_n_s_utf8) < 0) __PYX_ERR(9, 636, __pyx_L1_error)
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_4lxml_5etree_io_open, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 636, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_encoding, __pyx_n_s_utf8) < 0) __PYX_ERR(9, 635, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_4lxml_5etree_io_open, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 635, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 636, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 635, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 636, __pyx_L21_error)
+ __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 635, __pyx_L21_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
}
__pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 636, __pyx_L21_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 635, __pyx_L21_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __pyx_t_5;
__pyx_cur_scope->__pyx_v_f = __pyx_t_4;
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":637
+ /* "src/lxml/serializer.pxi":636
* else:
* with io_open(file, 'w', encoding='utf8') as f:
* yield f # <<<<<<<<<<<<<<
__pyx_t_9 = __pyx_cur_scope->__pyx_t_3;
__pyx_cur_scope->__pyx_t_3 = 0;
__Pyx_XGOTREF(__pyx_t_9);
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 637, __pyx_L25_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 636, __pyx_L25_error)
- /* "src/lxml/serializer.pxi":636
+ /* "src/lxml/serializer.pxi":635
* yield utf8_writer(zf)
* else:
* with io_open(file, 'w', encoding='utf8') as f: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/*except:*/ {
__Pyx_AddTraceback("lxml.etree._open_utf8_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(9, 636, __pyx_L27_except_error)
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(9, 635, __pyx_L27_except_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 636, __pyx_L27_except_error)
+ __pyx_t_2 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 635, __pyx_L27_except_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 636, __pyx_L27_except_error)
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 635, __pyx_L27_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_11 < 0) __PYX_ERR(9, 636, __pyx_L27_except_error)
+ if (__pyx_t_11 < 0) __PYX_ERR(9, 635, __pyx_L27_except_error)
__pyx_t_1 = ((!(__pyx_t_11 != 0)) != 0);
if (__pyx_t_1) {
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_3, __pyx_t_5);
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_5 = 0;
- __PYX_ERR(9, 636, __pyx_L27_except_error)
+ __PYX_ERR(9, 635, __pyx_L27_except_error)
}
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
__pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 636, __pyx_L1_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 635, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
}
__pyx_L5:;
- /* "src/lxml/serializer.pxi":631
+ /* "src/lxml/serializer.pxi":630
* @contextmanager
* def _open_utf8_file(file, compression=0):
* if _isString(file): # <<<<<<<<<<<<<<
goto __pyx_L4;
}
- /* "src/lxml/serializer.pxi":639
+ /* "src/lxml/serializer.pxi":638
* yield f
* else:
* if compression: # <<<<<<<<<<<<<<
* yield utf8_writer(zf)
*/
/*else*/ {
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_compression); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 639, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_compression); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 638, __pyx_L1_error)
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":640
+ /* "src/lxml/serializer.pxi":639
* else:
* if compression:
* with gzip.GzipFile(fileobj=file, mode='wb', compresslevel=compression) as zf: # <<<<<<<<<<<<<<
* else:
*/
/*with:*/ {
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_gzip, __pyx_n_s_GzipFile); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 640, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_gzip, __pyx_n_s_GzipFile); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 640, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_fileobj, __pyx_cur_scope->__pyx_v_file) < 0) __PYX_ERR(9, 640, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_mode, __pyx_n_s_wb) < 0) __PYX_ERR(9, 640, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_compresslevel, __pyx_cur_scope->__pyx_v_compression) < 0) __PYX_ERR(9, 640, __pyx_L1_error)
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 640, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_fileobj, __pyx_cur_scope->__pyx_v_file) < 0) __PYX_ERR(9, 639, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_mode, __pyx_n_s_wb) < 0) __PYX_ERR(9, 639, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_compresslevel, __pyx_cur_scope->__pyx_v_compression) < 0) __PYX_ERR(9, 639, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 640, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 640, __pyx_L37_error)
+ __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 639, __pyx_L37_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
}
__pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 640, __pyx_L37_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 639, __pyx_L37_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = __pyx_t_3;
__pyx_cur_scope->__pyx_v_zf = __pyx_t_5;
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":641
+ /* "src/lxml/serializer.pxi":640
* if compression:
* with gzip.GzipFile(fileobj=file, mode='wb', compresslevel=compression) as zf:
* yield utf8_writer(zf) # <<<<<<<<<<<<<<
}
__pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_cur_scope->__pyx_v_zf) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_zf);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 641, __pyx_L41_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 640, __pyx_L41_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = __pyx_t_5;
__pyx_t_9 = __pyx_cur_scope->__pyx_t_3;
__pyx_cur_scope->__pyx_t_3 = 0;
__Pyx_XGOTREF(__pyx_t_9);
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 641, __pyx_L41_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 640, __pyx_L41_error)
- /* "src/lxml/serializer.pxi":640
+ /* "src/lxml/serializer.pxi":639
* else:
* if compression:
* with gzip.GzipFile(fileobj=file, mode='wb', compresslevel=compression) as zf: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/*except:*/ {
__Pyx_AddTraceback("lxml.etree._open_utf8_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(9, 640, __pyx_L43_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(9, 639, __pyx_L43_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 640, __pyx_L43_except_error)
+ __pyx_t_2 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 639, __pyx_L43_except_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 640, __pyx_L43_except_error)
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 639, __pyx_L43_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_1 < 0) __PYX_ERR(9, 640, __pyx_L43_except_error)
+ if (__pyx_t_1 < 0) __PYX_ERR(9, 639, __pyx_L43_except_error)
__pyx_t_11 = ((!(__pyx_t_1 != 0)) != 0);
if (__pyx_t_11) {
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_4, __pyx_t_3);
__pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
- __PYX_ERR(9, 640, __pyx_L43_except_error)
+ __PYX_ERR(9, 639, __pyx_L43_except_error)
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 640, __pyx_L1_error)
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__pyx_L51:;
}
- /* "src/lxml/serializer.pxi":639
+ /* "src/lxml/serializer.pxi":638
* yield f
* else:
* if compression: # <<<<<<<<<<<<<<
goto __pyx_L36;
}
- /* "src/lxml/serializer.pxi":643
+ /* "src/lxml/serializer.pxi":642
* yield utf8_writer(zf)
* else:
* yield utf8_writer(file) # <<<<<<<<<<<<<<
}
__pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_cur_scope->__pyx_v_file) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_file);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 643, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 642, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = __pyx_t_3;
__pyx_generator->resume_label = 4;
return __pyx_r;
__pyx_L52_resume_from_yield:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 643, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 642, __pyx_L1_error)
}
__pyx_L36:;
}
__pyx_L4:;
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":630
+ /* "src/lxml/serializer.pxi":629
*
* @contextmanager
* def _open_utf8_file(file, compression=0): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":653
+/* "src/lxml/serializer.pxi":652
* cdef _ExceptionContext _exc_context
* cdef _ErrorLog error_log
* def __cinit__(self, filelike, exc_context=None, compression=None, close=False): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 653, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 652, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 653, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 652, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._FilelikeWriter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_RefNannySetupContext("__cinit__", 0);
__Pyx_INCREF(__pyx_v_filelike);
- /* "src/lxml/serializer.pxi":654
+ /* "src/lxml/serializer.pxi":653
* cdef _ErrorLog error_log
* def __cinit__(self, filelike, exc_context=None, compression=None, close=False):
* if compression is not None and compression > 0: # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_compression, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 654, __pyx_L1_error)
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 654, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_compression, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 653, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 653, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_1 = __pyx_t_3;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":656
+ /* "src/lxml/serializer.pxi":655
* if compression is not None and compression > 0:
* filelike = GzipFile(
* fileobj=filelike, mode='wb', compresslevel=compression) # <<<<<<<<<<<<<<
* self._close_filelike = filelike.close
* elif close:
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 656, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 655, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_fileobj, __pyx_v_filelike) < 0) __PYX_ERR(9, 656, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_mode, __pyx_n_s_wb) < 0) __PYX_ERR(9, 656, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_compresslevel, __pyx_v_compression) < 0) __PYX_ERR(9, 656, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_fileobj, __pyx_v_filelike) < 0) __PYX_ERR(9, 655, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_mode, __pyx_n_s_wb) < 0) __PYX_ERR(9, 655, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_compresslevel, __pyx_v_compression) < 0) __PYX_ERR(9, 655, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":655
+ /* "src/lxml/serializer.pxi":654
* def __cinit__(self, filelike, exc_context=None, compression=None, close=False):
* if compression is not None and compression > 0:
* filelike = GzipFile( # <<<<<<<<<<<<<<
* fileobj=filelike, mode='wb', compresslevel=compression)
* self._close_filelike = filelike.close
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_5etree_GzipFile, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 655, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_5etree_GzipFile, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 654, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF_SET(__pyx_v_filelike, __pyx_t_5);
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":657
+ /* "src/lxml/serializer.pxi":656
* filelike = GzipFile(
* fileobj=filelike, mode='wb', compresslevel=compression)
* self._close_filelike = filelike.close # <<<<<<<<<<<<<<
* elif close:
* self._close_filelike = filelike.close
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 657, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 656, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_v_self->_close_filelike);
__pyx_v_self->_close_filelike = __pyx_t_5;
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":654
+ /* "src/lxml/serializer.pxi":653
* cdef _ErrorLog error_log
* def __cinit__(self, filelike, exc_context=None, compression=None, close=False):
* if compression is not None and compression > 0: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/serializer.pxi":658
+ /* "src/lxml/serializer.pxi":657
* fileobj=filelike, mode='wb', compresslevel=compression)
* self._close_filelike = filelike.close
* elif close: # <<<<<<<<<<<<<<
* self._close_filelike = filelike.close
* self._filelike = filelike
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_close); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 658, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_close); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 657, __pyx_L1_error)
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":659
+ /* "src/lxml/serializer.pxi":658
* self._close_filelike = filelike.close
* elif close:
* self._close_filelike = filelike.close # <<<<<<<<<<<<<<
* self._filelike = filelike
* if exc_context is None:
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 659, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 658, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_v_self->_close_filelike);
__pyx_v_self->_close_filelike = __pyx_t_5;
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":658
+ /* "src/lxml/serializer.pxi":657
* fileobj=filelike, mode='wb', compresslevel=compression)
* self._close_filelike = filelike.close
* elif close: # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "src/lxml/serializer.pxi":660
+ /* "src/lxml/serializer.pxi":659
* elif close:
* self._close_filelike = filelike.close
* self._filelike = filelike # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_filelike);
__pyx_v_self->_filelike = __pyx_v_filelike;
- /* "src/lxml/serializer.pxi":661
+ /* "src/lxml/serializer.pxi":660
* self._close_filelike = filelike.close
* self._filelike = filelike
* if exc_context is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_1 != 0);
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":662
+ /* "src/lxml/serializer.pxi":661
* self._filelike = filelike
* if exc_context is None:
* self._exc_context = _ExceptionContext() # <<<<<<<<<<<<<<
* else:
* self._exc_context = exc_context
*/
- __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ExceptionContext)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 662, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ExceptionContext)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 661, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_v_self->_exc_context);
__pyx_v_self->_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_t_5);
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":661
+ /* "src/lxml/serializer.pxi":660
* self._close_filelike = filelike.close
* self._filelike = filelike
* if exc_context is None: # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":664
+ /* "src/lxml/serializer.pxi":663
* self._exc_context = _ExceptionContext()
* else:
* self._exc_context = exc_context # <<<<<<<<<<<<<<
*
*/
/*else*/ {
- if (!(likely(((__pyx_v_exc_context) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_exc_context, __pyx_ptype_4lxml_5etree__ExceptionContext))))) __PYX_ERR(9, 664, __pyx_L1_error)
+ if (!(likely(((__pyx_v_exc_context) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_exc_context, __pyx_ptype_4lxml_5etree__ExceptionContext))))) __PYX_ERR(9, 663, __pyx_L1_error)
__pyx_t_5 = __pyx_v_exc_context;
__Pyx_INCREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
}
__pyx_L6:;
- /* "src/lxml/serializer.pxi":665
+ /* "src/lxml/serializer.pxi":664
* else:
* self._exc_context = exc_context
* self.error_log = _ErrorLog() # <<<<<<<<<<<<<<
*
* cdef tree.xmlOutputBuffer* _createOutputBuffer(
*/
- __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 665, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 664, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_v_self->error_log);
__pyx_v_self->error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_5);
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":653
+ /* "src/lxml/serializer.pxi":652
* cdef _ExceptionContext _exc_context
* cdef _ErrorLog error_log
* def __cinit__(self, filelike, exc_context=None, compression=None, close=False): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":667
+/* "src/lxml/serializer.pxi":666
* self.error_log = _ErrorLog()
*
* cdef tree.xmlOutputBuffer* _createOutputBuffer( # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_createOutputBuffer", 0);
- /* "src/lxml/serializer.pxi":670
+ /* "src/lxml/serializer.pxi":669
* self, tree.xmlCharEncodingHandler* enchandler) except NULL:
* cdef tree.xmlOutputBuffer* c_buffer
* c_buffer = tree.xmlOutputBufferCreateIO( # <<<<<<<<<<<<<<
*/
__pyx_v_c_buffer = xmlOutputBufferCreateIO(((xmlOutputWriteCallback)__pyx_f_4lxml_5etree__writeFilelikeWriter), __pyx_f_4lxml_5etree__closeFilelikeWriter, ((PyObject *)__pyx_v_self), __pyx_v_enchandler);
- /* "src/lxml/serializer.pxi":673
+ /* "src/lxml/serializer.pxi":672
* <tree.xmlOutputWriteCallback>_writeFilelikeWriter, _closeFilelikeWriter,
* <python.PyObject*>self, enchandler)
* if c_buffer is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_buffer == NULL) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":674
+ /* "src/lxml/serializer.pxi":673
* <python.PyObject*>self, enchandler)
* if c_buffer is NULL:
* raise IOError, u"Could not create I/O writer context." # <<<<<<<<<<<<<<
*
*/
__Pyx_Raise(__pyx_builtin_IOError, __pyx_kp_u_Could_not_create_I_O_writer_cont, 0, 0);
- __PYX_ERR(9, 674, __pyx_L1_error)
+ __PYX_ERR(9, 673, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":673
+ /* "src/lxml/serializer.pxi":672
* <tree.xmlOutputWriteCallback>_writeFilelikeWriter, _closeFilelikeWriter,
* <python.PyObject*>self, enchandler)
* if c_buffer is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":675
+ /* "src/lxml/serializer.pxi":674
* if c_buffer is NULL:
* raise IOError, u"Could not create I/O writer context."
* return c_buffer # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_c_buffer;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":667
+ /* "src/lxml/serializer.pxi":666
* self.error_log = _ErrorLog()
*
* cdef tree.xmlOutputBuffer* _createOutputBuffer( # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":677
+/* "src/lxml/serializer.pxi":676
* return c_buffer
*
* cdef int write(self, char* c_buffer, int size): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("write", 0);
- /* "src/lxml/serializer.pxi":678
+ /* "src/lxml/serializer.pxi":677
*
* cdef int write(self, char* c_buffer, int size):
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "src/lxml/serializer.pxi":679
+ /* "src/lxml/serializer.pxi":678
* cdef int write(self, char* c_buffer, int size):
* try:
* if self._filelike is None: # <<<<<<<<<<<<<<
__pyx_t_5 = (__pyx_t_4 != 0);
if (unlikely(__pyx_t_5)) {
- /* "src/lxml/serializer.pxi":680
+ /* "src/lxml/serializer.pxi":679
* try:
* if self._filelike is None:
* raise IOError, u"File is already closed" # <<<<<<<<<<<<<<
* self._filelike.write(py_buffer)
*/
__Pyx_Raise(__pyx_builtin_IOError, __pyx_kp_u_File_is_already_closed, 0, 0);
- __PYX_ERR(9, 680, __pyx_L6_error)
+ __PYX_ERR(9, 679, __pyx_L6_error)
- /* "src/lxml/serializer.pxi":679
+ /* "src/lxml/serializer.pxi":678
* cdef int write(self, char* c_buffer, int size):
* try:
* if self._filelike is None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":681
+ /* "src/lxml/serializer.pxi":680
* if self._filelike is None:
* raise IOError, u"File is already closed"
* py_buffer = <bytes>c_buffer[:size] # <<<<<<<<<<<<<<
* self._filelike.write(py_buffer)
* except:
*/
- __pyx_t_6 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_c_buffer + 0, __pyx_v_size - 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 681, __pyx_L6_error)
+ __pyx_t_6 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_c_buffer + 0, __pyx_v_size - 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 680, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __pyx_t_6;
__Pyx_INCREF(__pyx_t_7);
__pyx_v_py_buffer = ((PyObject*)__pyx_t_7);
__pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":682
+ /* "src/lxml/serializer.pxi":681
* raise IOError, u"File is already closed"
* py_buffer = <bytes>c_buffer[:size]
* self._filelike.write(py_buffer) # <<<<<<<<<<<<<<
* except:
* size = -1
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 682, __pyx_L6_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 681, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_8 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
}
__pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_v_py_buffer) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_py_buffer);
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 682, __pyx_L6_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 681, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":678
+ /* "src/lxml/serializer.pxi":677
*
* cdef int write(self, char* c_buffer, int size):
* try: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":683
+ /* "src/lxml/serializer.pxi":682
* py_buffer = <bytes>c_buffer[:size]
* self._filelike.write(py_buffer)
* except: # <<<<<<<<<<<<<<
*/
/*except:*/ {
__Pyx_AddTraceback("lxml.etree._FilelikeWriter.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_8) < 0) __PYX_ERR(9, 683, __pyx_L8_except_error)
+ if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_8) < 0) __PYX_ERR(9, 682, __pyx_L8_except_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_8);
- /* "src/lxml/serializer.pxi":684
+ /* "src/lxml/serializer.pxi":683
* self._filelike.write(py_buffer)
* except:
* size = -1 # <<<<<<<<<<<<<<
*/
__pyx_v_size = -1;
- /* "src/lxml/serializer.pxi":685
+ /* "src/lxml/serializer.pxi":684
* except:
* size = -1
* self._exc_context._store_raised() # <<<<<<<<<<<<<<
}
__pyx_L8_except_error:;
- /* "src/lxml/serializer.pxi":678
+ /* "src/lxml/serializer.pxi":677
*
* cdef int write(self, char* c_buffer, int size):
* try: # <<<<<<<<<<<<<<
}
}
- /* "src/lxml/serializer.pxi":687
+ /* "src/lxml/serializer.pxi":686
* self._exc_context._store_raised()
* finally:
* return size # and swallow any further exceptions # <<<<<<<<<<<<<<
}
}
- /* "src/lxml/serializer.pxi":677
+ /* "src/lxml/serializer.pxi":676
* return c_buffer
*
* cdef int write(self, char* c_buffer, int size): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":689
+/* "src/lxml/serializer.pxi":688
* return size # and swallow any further exceptions
*
* cdef int close(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("close", 0);
- /* "src/lxml/serializer.pxi":690
+ /* "src/lxml/serializer.pxi":689
*
* cdef int close(self):
* retval = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_retval = 0;
- /* "src/lxml/serializer.pxi":691
+ /* "src/lxml/serializer.pxi":690
* cdef int close(self):
* retval = 0
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "src/lxml/serializer.pxi":692
+ /* "src/lxml/serializer.pxi":691
* retval = 0
* try:
* if self._close_filelike is not None: # <<<<<<<<<<<<<<
__pyx_t_5 = (__pyx_t_4 != 0);
if (__pyx_t_5) {
- /* "src/lxml/serializer.pxi":693
+ /* "src/lxml/serializer.pxi":692
* try:
* if self._close_filelike is not None:
* self._close_filelike() # <<<<<<<<<<<<<<
}
__pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 693, __pyx_L6_error)
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 692, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":692
+ /* "src/lxml/serializer.pxi":691
* retval = 0
* try:
* if self._close_filelike is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":695
+ /* "src/lxml/serializer.pxi":694
* self._close_filelike()
* # we should not close the file here as we didn't open it
* self._filelike = None # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_filelike);
__pyx_v_self->_filelike = Py_None;
- /* "src/lxml/serializer.pxi":691
+ /* "src/lxml/serializer.pxi":690
* cdef int close(self):
* retval = 0
* try: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":696
+ /* "src/lxml/serializer.pxi":695
* # we should not close the file here as we didn't open it
* self._filelike = None
* except: # <<<<<<<<<<<<<<
*/
/*except:*/ {
__Pyx_AddTraceback("lxml.etree._FilelikeWriter.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(9, 696, __pyx_L8_except_error)
+ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(9, 695, __pyx_L8_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_8);
- /* "src/lxml/serializer.pxi":697
+ /* "src/lxml/serializer.pxi":696
* self._filelike = None
* except:
* retval = -1 # <<<<<<<<<<<<<<
*/
__pyx_v_retval = -1L;
- /* "src/lxml/serializer.pxi":698
+ /* "src/lxml/serializer.pxi":697
* except:
* retval = -1
* self._exc_context._store_raised() # <<<<<<<<<<<<<<
}
__pyx_L8_except_error:;
- /* "src/lxml/serializer.pxi":691
+ /* "src/lxml/serializer.pxi":690
* cdef int close(self):
* retval = 0
* try: # <<<<<<<<<<<<<<
}
}
- /* "src/lxml/serializer.pxi":700
+ /* "src/lxml/serializer.pxi":699
* self._exc_context._store_raised()
* finally:
* return retval # and swallow any further exceptions # <<<<<<<<<<<<<<
}
}
- /* "src/lxml/serializer.pxi":689
+ /* "src/lxml/serializer.pxi":688
* return size # and swallow any further exceptions
*
* cdef int close(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":702
+/* "src/lxml/serializer.pxi":701
* return retval # and swallow any further exceptions
*
* cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int length): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_writeFilelikeWriter", 0);
- /* "src/lxml/serializer.pxi":703
+ /* "src/lxml/serializer.pxi":702
*
* cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int length):
* return (<_FilelikeWriter>ctxt).write(c_buffer, length) # <<<<<<<<<<<<<<
__pyx_r = __pyx_f_4lxml_5etree_15_FilelikeWriter_write(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_ctxt), __pyx_v_c_buffer, __pyx_v_length);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":702
+ /* "src/lxml/serializer.pxi":701
* return retval # and swallow any further exceptions
*
* cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int length): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":705
+/* "src/lxml/serializer.pxi":704
* return (<_FilelikeWriter>ctxt).write(c_buffer, length)
*
* cdef int _closeFilelikeWriter(void* ctxt): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_closeFilelikeWriter", 0);
- /* "src/lxml/serializer.pxi":706
+ /* "src/lxml/serializer.pxi":705
*
* cdef int _closeFilelikeWriter(void* ctxt):
* return (<_FilelikeWriter>ctxt).close() # <<<<<<<<<<<<<<
__pyx_r = __pyx_f_4lxml_5etree_15_FilelikeWriter_close(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_ctxt));
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":705
+ /* "src/lxml/serializer.pxi":704
* return (<_FilelikeWriter>ctxt).write(c_buffer, length)
*
* cdef int _closeFilelikeWriter(void* ctxt): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":708
+/* "src/lxml/serializer.pxi":707
* return (<_FilelikeWriter>ctxt).close()
*
* cdef _tofilelike(f, _Element element, encoding, doctype, method, # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_encoding);
__Pyx_INCREF(__pyx_v_doctype);
- /* "src/lxml/serializer.pxi":712
+ /* "src/lxml/serializer.pxi":711
* bint pretty_print, bint with_tail, int standalone,
* int compression):
* cdef _FilelikeWriter writer = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)Py_None);
- /* "src/lxml/serializer.pxi":719
+ /* "src/lxml/serializer.pxi":718
* cdef int error_result
*
* c_method = _findOutputMethod(method) # <<<<<<<<<<<<<<
* if c_method == OUTPUT_METHOD_TEXT:
* data = _textToString(element._c_node, encoding, with_tail)
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 719, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 718, __pyx_L1_error)
__pyx_v_c_method = __pyx_t_1;
- /* "src/lxml/serializer.pxi":720
+ /* "src/lxml/serializer.pxi":719
*
* c_method = _findOutputMethod(method)
* if c_method == OUTPUT_METHOD_TEXT: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":721
+ /* "src/lxml/serializer.pxi":720
* c_method = _findOutputMethod(method)
* if c_method == OUTPUT_METHOD_TEXT:
* data = _textToString(element._c_node, encoding, with_tail) # <<<<<<<<<<<<<<
* if compression:
* bytes_out = BytesIO()
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__textToString(__pyx_v_element->_c_node, __pyx_v_encoding, __pyx_v_with_tail); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 721, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__textToString(__pyx_v_element->_c_node, __pyx_v_encoding, __pyx_v_with_tail); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 720, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_data = __pyx_t_3;
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":722
+ /* "src/lxml/serializer.pxi":721
* if c_method == OUTPUT_METHOD_TEXT:
* data = _textToString(element._c_node, encoding, with_tail)
* if compression: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_compression != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":723
+ /* "src/lxml/serializer.pxi":722
* data = _textToString(element._c_node, encoding, with_tail)
* if compression:
* bytes_out = BytesIO() # <<<<<<<<<<<<<<
}
__pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 723, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 722, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_bytes_out = __pyx_t_3;
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":724
+ /* "src/lxml/serializer.pxi":723
* if compression:
* bytes_out = BytesIO()
* with GzipFile(fileobj=bytes_out, mode='wb', compresslevel=compression) as gzip_file: # <<<<<<<<<<<<<<
* data = bytes_out.getvalue()
*/
/*with:*/ {
- __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 724, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 723, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_fileobj, __pyx_v_bytes_out) < 0) __PYX_ERR(9, 724, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_mode, __pyx_n_s_wb) < 0) __PYX_ERR(9, 724, __pyx_L1_error)
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_compression); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 724, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_fileobj, __pyx_v_bytes_out) < 0) __PYX_ERR(9, 723, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_mode, __pyx_n_s_wb) < 0) __PYX_ERR(9, 723, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_compression); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 723, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_compresslevel, __pyx_t_4) < 0) __PYX_ERR(9, 724, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_compresslevel, __pyx_t_4) < 0) __PYX_ERR(9, 723, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_4lxml_5etree_GzipFile, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 724, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_4lxml_5etree_GzipFile, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 723, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 724, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 723, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 724, __pyx_L5_error)
+ __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 723, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
}
__pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 724, __pyx_L5_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 723, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = __pyx_t_3;
__pyx_v_gzip_file = __pyx_t_5;
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":725
+ /* "src/lxml/serializer.pxi":724
* bytes_out = BytesIO()
* with GzipFile(fileobj=bytes_out, mode='wb', compresslevel=compression) as gzip_file:
* gzip_file.write(data) # <<<<<<<<<<<<<<
* data = bytes_out.getvalue()
* if _isString(f):
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_gzip_file, __pyx_n_s_write); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 725, __pyx_L9_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_gzip_file, __pyx_n_s_write); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 724, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
}
__pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_data);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 725, __pyx_L9_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 724, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":724
+ /* "src/lxml/serializer.pxi":723
* if compression:
* bytes_out = BytesIO()
* with GzipFile(fileobj=bytes_out, mode='wb', compresslevel=compression) as gzip_file: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/*except:*/ {
__Pyx_AddTraceback("lxml.etree._tofilelike", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(9, 724, __pyx_L11_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(9, 723, __pyx_L11_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 724, __pyx_L11_except_error)
+ __pyx_t_7 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 723, __pyx_L11_except_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 724, __pyx_L11_except_error)
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 723, __pyx_L11_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- if (__pyx_t_2 < 0) __PYX_ERR(9, 724, __pyx_L11_except_error)
+ if (__pyx_t_2 < 0) __PYX_ERR(9, 723, __pyx_L11_except_error)
__pyx_t_12 = ((!(__pyx_t_2 != 0)) != 0);
if (__pyx_t_12) {
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_4, __pyx_t_3);
__pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
- __PYX_ERR(9, 724, __pyx_L11_except_error)
+ __PYX_ERR(9, 723, __pyx_L11_except_error)
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 724, __pyx_L1_error)
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 723, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__pyx_L18:;
}
- /* "src/lxml/serializer.pxi":726
+ /* "src/lxml/serializer.pxi":725
* with GzipFile(fileobj=bytes_out, mode='wb', compresslevel=compression) as gzip_file:
* gzip_file.write(data)
* data = bytes_out.getvalue() # <<<<<<<<<<<<<<
* if _isString(f):
* filename8 = _encodeFilename(f)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_bytes_out, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 726, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_bytes_out, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 725, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
}
__pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 726, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 725, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":722
+ /* "src/lxml/serializer.pxi":721
* if c_method == OUTPUT_METHOD_TEXT:
* data = _textToString(element._c_node, encoding, with_tail)
* if compression: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":727
+ /* "src/lxml/serializer.pxi":726
* gzip_file.write(data)
* data = bytes_out.getvalue()
* if _isString(f): # <<<<<<<<<<<<<<
__pyx_t_12 = (_isString(__pyx_v_f) != 0);
if (__pyx_t_12) {
- /* "src/lxml/serializer.pxi":728
+ /* "src/lxml/serializer.pxi":727
* data = bytes_out.getvalue()
* if _isString(f):
* filename8 = _encodeFilename(f) # <<<<<<<<<<<<<<
* with open(filename8, 'wb') as f:
* f.write(data)
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 728, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 727, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_filename8 = __pyx_t_3;
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":729
+ /* "src/lxml/serializer.pxi":728
* if _isString(f):
* filename8 = _encodeFilename(f)
* with open(filename8, 'wb') as f: # <<<<<<<<<<<<<<
* else:
*/
/*with:*/ {
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_open); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 729, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_open); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 728, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
__pyx_t_1 = 0;
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_4)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_filename8, __pyx_n_s_wb};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 729, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 728, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_3);
} else
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_filename8, __pyx_n_s_wb};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 729, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 728, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_3);
} else
#endif
{
- __pyx_t_7 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 729, __pyx_L1_error)
+ __pyx_t_7 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 728, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (__pyx_t_5) {
__Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
__Pyx_INCREF(__pyx_n_s_wb);
__Pyx_GIVEREF(__pyx_n_s_wb);
PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_1, __pyx_n_s_wb);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 729, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 728, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 729, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 728, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 729, __pyx_L20_error)
+ __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 728, __pyx_L20_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
}
__pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 729, __pyx_L20_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 728, __pyx_L20_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __pyx_t_4;
__Pyx_DECREF_SET(__pyx_v_f, __pyx_t_7);
__pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":730
+ /* "src/lxml/serializer.pxi":729
* filename8 = _encodeFilename(f)
* with open(filename8, 'wb') as f:
* f.write(data) # <<<<<<<<<<<<<<
* else:
* f.write(data)
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 730, __pyx_L24_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 729, __pyx_L24_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 730, __pyx_L24_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 729, __pyx_L24_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":729
+ /* "src/lxml/serializer.pxi":728
* if _isString(f):
* filename8 = _encodeFilename(f)
* with open(filename8, 'wb') as f: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/*except:*/ {
__Pyx_AddTraceback("lxml.etree._tofilelike", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(9, 729, __pyx_L26_except_error)
+ if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(9, 728, __pyx_L26_except_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_Pack(3, __pyx_t_7, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 729, __pyx_L26_except_error)
+ __pyx_t_5 = PyTuple_Pack(3, __pyx_t_7, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 728, __pyx_L26_except_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 729, __pyx_L26_except_error)
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 728, __pyx_L26_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- if (__pyx_t_12 < 0) __PYX_ERR(9, 729, __pyx_L26_except_error)
+ if (__pyx_t_12 < 0) __PYX_ERR(9, 728, __pyx_L26_except_error)
__pyx_t_2 = ((!(__pyx_t_12 != 0)) != 0);
if (__pyx_t_2) {
__Pyx_GIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_3, __pyx_t_4);
__pyx_t_7 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0;
- __PYX_ERR(9, 729, __pyx_L26_except_error)
+ __PYX_ERR(9, 728, __pyx_L26_except_error)
}
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 729, __pyx_L1_error)
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 728, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_L33:;
}
- /* "src/lxml/serializer.pxi":727
+ /* "src/lxml/serializer.pxi":726
* gzip_file.write(data)
* data = bytes_out.getvalue()
* if _isString(f): # <<<<<<<<<<<<<<
goto __pyx_L19;
}
- /* "src/lxml/serializer.pxi":732
+ /* "src/lxml/serializer.pxi":731
* f.write(data)
* else:
* f.write(data) # <<<<<<<<<<<<<<
*
*/
/*else*/ {
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 732, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 731, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 732, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 731, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
__pyx_L19:;
- /* "src/lxml/serializer.pxi":733
+ /* "src/lxml/serializer.pxi":732
* else:
* f.write(data)
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":720
+ /* "src/lxml/serializer.pxi":719
*
* c_method = _findOutputMethod(method)
* if c_method == OUTPUT_METHOD_TEXT: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":735
+ /* "src/lxml/serializer.pxi":734
* return
*
* if encoding is None: # <<<<<<<<<<<<<<
__pyx_t_12 = (__pyx_t_2 != 0);
if (__pyx_t_12) {
- /* "src/lxml/serializer.pxi":736
+ /* "src/lxml/serializer.pxi":735
*
* if encoding is None:
* c_enc = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_c_enc = NULL;
- /* "src/lxml/serializer.pxi":735
+ /* "src/lxml/serializer.pxi":734
* return
*
* if encoding is None: # <<<<<<<<<<<<<<
goto __pyx_L34;
}
- /* "src/lxml/serializer.pxi":738
+ /* "src/lxml/serializer.pxi":737
* c_enc = NULL
* else:
* encoding = _utf8(encoding) # <<<<<<<<<<<<<<
* if doctype is None:
*/
/*else*/ {
- __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 738, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 737, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":739
+ /* "src/lxml/serializer.pxi":738
* else:
* encoding = _utf8(encoding)
* c_enc = _cstr(encoding) # <<<<<<<<<<<<<<
}
__pyx_L34:;
- /* "src/lxml/serializer.pxi":740
+ /* "src/lxml/serializer.pxi":739
* encoding = _utf8(encoding)
* c_enc = _cstr(encoding)
* if doctype is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_12 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":741
+ /* "src/lxml/serializer.pxi":740
* c_enc = _cstr(encoding)
* if doctype is None:
* c_doctype = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_c_doctype = NULL;
- /* "src/lxml/serializer.pxi":740
+ /* "src/lxml/serializer.pxi":739
* encoding = _utf8(encoding)
* c_enc = _cstr(encoding)
* if doctype is None: # <<<<<<<<<<<<<<
goto __pyx_L35;
}
- /* "src/lxml/serializer.pxi":743
+ /* "src/lxml/serializer.pxi":742
* c_doctype = NULL
* else:
* doctype = _utf8(doctype) # <<<<<<<<<<<<<<
*
*/
/*else*/ {
- __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_doctype); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 743, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_doctype); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 742, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_doctype, __pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":744
+ /* "src/lxml/serializer.pxi":743
* else:
* doctype = _utf8(doctype)
* c_doctype = _xcstr(doctype) # <<<<<<<<<<<<<<
}
__pyx_L35:;
- /* "src/lxml/serializer.pxi":746
+ /* "src/lxml/serializer.pxi":745
* c_doctype = _xcstr(doctype)
*
* writer = _create_output_buffer(f, c_enc, compression, &c_buffer, close=False) # <<<<<<<<<<<<<<
* if writer is None:
* with nogil:
*/
- __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__create_output_buffer(__pyx_v_f, __pyx_v_c_enc, __pyx_v_compression, (&__pyx_v_c_buffer), 0)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 746, __pyx_L1_error)
+ __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__create_output_buffer(__pyx_v_f, __pyx_v_c_enc, __pyx_v_compression, (&__pyx_v_c_buffer), 0)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 745, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_writer, ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":747
+ /* "src/lxml/serializer.pxi":746
*
* writer = _create_output_buffer(f, c_enc, compression, &c_buffer, close=False)
* if writer is None: # <<<<<<<<<<<<<<
__pyx_t_12 = (__pyx_t_2 != 0);
if (__pyx_t_12) {
- /* "src/lxml/serializer.pxi":748
+ /* "src/lxml/serializer.pxi":747
* writer = _create_output_buffer(f, c_enc, compression, &c_buffer, close=False)
* if writer is None:
* with nogil: # <<<<<<<<<<<<<<
#endif
/*try:*/ {
- /* "src/lxml/serializer.pxi":749
+ /* "src/lxml/serializer.pxi":748
* if writer is None:
* with nogil:
* error_result = _serialise_node( # <<<<<<<<<<<<<<
__pyx_v_error_result = __pyx_f_4lxml_5etree__serialise_node(__pyx_v_c_buffer, __pyx_v_c_doctype, __pyx_v_c_enc, __pyx_v_element->_c_node, __pyx_v_c_method, __pyx_v_write_xml_declaration, __pyx_v_write_doctype, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_standalone);
}
- /* "src/lxml/serializer.pxi":748
+ /* "src/lxml/serializer.pxi":747
* writer = _create_output_buffer(f, c_enc, compression, &c_buffer, close=False)
* if writer is None:
* with nogil: # <<<<<<<<<<<<<<
}
}
- /* "src/lxml/serializer.pxi":747
+ /* "src/lxml/serializer.pxi":746
*
* writer = _create_output_buffer(f, c_enc, compression, &c_buffer, close=False)
* if writer is None: # <<<<<<<<<<<<<<
goto __pyx_L36;
}
- /* "src/lxml/serializer.pxi":753
+ /* "src/lxml/serializer.pxi":752
* write_xml_declaration, write_doctype, pretty_print, with_tail, standalone)
* else:
* error_result = _serialise_node( # <<<<<<<<<<<<<<
*/
/*else*/ {
- /* "src/lxml/serializer.pxi":755
+ /* "src/lxml/serializer.pxi":754
* error_result = _serialise_node(
* c_buffer, c_doctype, c_enc, element._c_node, c_method,
* write_xml_declaration, write_doctype, pretty_print, with_tail, standalone) # <<<<<<<<<<<<<<
}
__pyx_L36:;
- /* "src/lxml/serializer.pxi":757
+ /* "src/lxml/serializer.pxi":756
* write_xml_declaration, write_doctype, pretty_print, with_tail, standalone)
*
* if writer is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_12 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":758
+ /* "src/lxml/serializer.pxi":757
*
* if writer is not None:
* writer._exc_context._raise_if_stored() # <<<<<<<<<<<<<<
* if error_result != xmlerror.XML_ERR_OK:
* _raiseSerialisationError(error_result)
*/
- __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 758, __pyx_L1_error)
+ __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 757, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":757
+ /* "src/lxml/serializer.pxi":756
* write_xml_declaration, write_doctype, pretty_print, with_tail, standalone)
*
* if writer is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":759
+ /* "src/lxml/serializer.pxi":758
* if writer is not None:
* writer._exc_context._raise_if_stored()
* if error_result != xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_error_result != XML_ERR_OK) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":760
+ /* "src/lxml/serializer.pxi":759
* writer._exc_context._raise_if_stored()
* if error_result != xmlerror.XML_ERR_OK:
* _raiseSerialisationError(error_result) # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_4 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 760, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 759, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":759
+ /* "src/lxml/serializer.pxi":758
* if writer is not None:
* writer._exc_context._raise_if_stored()
* if error_result != xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":708
+ /* "src/lxml/serializer.pxi":707
* return (<_FilelikeWriter>ctxt).close()
*
* cdef _tofilelike(f, _Element element, encoding, doctype, method, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":763
+/* "src/lxml/serializer.pxi":762
*
*
* cdef int _serialise_node(tree.xmlOutputBuffer* c_buffer, const_xmlChar* c_doctype, # <<<<<<<<<<<<<<
int __pyx_t_1;
int __pyx_t_2;
- /* "src/lxml/serializer.pxi":767
+ /* "src/lxml/serializer.pxi":766
* bint write_xml_declaration, bint write_doctype, bint pretty_print,
* bint with_tail, int standalone) nogil:
* _writeNodeToBuffer( # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeNodeToBuffer(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_c_enc, __pyx_v_c_doctype, __pyx_v_c_method, __pyx_v_write_xml_declaration, __pyx_v_write_doctype, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_standalone);
- /* "src/lxml/serializer.pxi":770
+ /* "src/lxml/serializer.pxi":769
* c_buffer, c_node, c_enc, c_doctype, c_method,
* write_xml_declaration, write_doctype, pretty_print, with_tail, standalone)
* error_result = c_buffer.error # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_buffer->error;
__pyx_v_error_result = __pyx_t_1;
- /* "src/lxml/serializer.pxi":771
+ /* "src/lxml/serializer.pxi":770
* write_xml_declaration, write_doctype, pretty_print, with_tail, standalone)
* error_result = c_buffer.error
* if error_result == xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_error_result == XML_ERR_OK) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":772
+ /* "src/lxml/serializer.pxi":771
* error_result = c_buffer.error
* if error_result == xmlerror.XML_ERR_OK:
* error_result = tree.xmlOutputBufferClose(c_buffer) # <<<<<<<<<<<<<<
*/
__pyx_v_error_result = xmlOutputBufferClose(__pyx_v_c_buffer);
- /* "src/lxml/serializer.pxi":773
+ /* "src/lxml/serializer.pxi":772
* if error_result == xmlerror.XML_ERR_OK:
* error_result = tree.xmlOutputBufferClose(c_buffer)
* if error_result != -1: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_error_result != -1L) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":774
+ /* "src/lxml/serializer.pxi":773
* error_result = tree.xmlOutputBufferClose(c_buffer)
* if error_result != -1:
* error_result = xmlerror.XML_ERR_OK # <<<<<<<<<<<<<<
*/
__pyx_v_error_result = XML_ERR_OK;
- /* "src/lxml/serializer.pxi":773
+ /* "src/lxml/serializer.pxi":772
* if error_result == xmlerror.XML_ERR_OK:
* error_result = tree.xmlOutputBufferClose(c_buffer)
* if error_result != -1: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":771
+ /* "src/lxml/serializer.pxi":770
* write_xml_declaration, write_doctype, pretty_print, with_tail, standalone)
* error_result = c_buffer.error
* if error_result == xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/serializer.pxi":776
+ /* "src/lxml/serializer.pxi":775
* error_result = xmlerror.XML_ERR_OK
* else:
* tree.xmlOutputBufferClose(c_buffer) # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "src/lxml/serializer.pxi":777
+ /* "src/lxml/serializer.pxi":776
* else:
* tree.xmlOutputBufferClose(c_buffer)
* return error_result # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_error_result;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":763
+ /* "src/lxml/serializer.pxi":762
*
*
* cdef int _serialise_node(tree.xmlOutputBuffer* c_buffer, const_xmlChar* c_doctype, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":780
+/* "src/lxml/serializer.pxi":779
*
*
* cdef _FilelikeWriter _create_output_buffer( # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_create_output_buffer", 0);
- /* "src/lxml/serializer.pxi":786
+ /* "src/lxml/serializer.pxi":785
* cdef _FilelikeWriter writer
* cdef bytes filename8
* enchandler = tree.xmlFindCharEncodingHandler(c_enc) # <<<<<<<<<<<<<<
*/
__pyx_v_enchandler = xmlFindCharEncodingHandler(__pyx_v_c_enc);
- /* "src/lxml/serializer.pxi":787
+ /* "src/lxml/serializer.pxi":786
* cdef bytes filename8
* enchandler = tree.xmlFindCharEncodingHandler(c_enc)
* if enchandler is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_enchandler == NULL) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":789
+ /* "src/lxml/serializer.pxi":788
* if enchandler is NULL:
* raise LookupError(
* f"unknown encoding: '{c_enc.decode('UTF-8') if c_enc is not NULL else u''}'") # <<<<<<<<<<<<<<
* try:
* if _isString(f):
*/
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 789, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 788, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = 0;
__pyx_t_4 = 127;
__Pyx_GIVEREF(__pyx_kp_u_unknown_encoding);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unknown_encoding);
if (((__pyx_v_c_enc != NULL) != 0)) {
- __pyx_t_6 = __Pyx_decode_c_string(__pyx_v_c_enc, 0, strlen(__pyx_v_c_enc), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 789, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_decode_c_string(__pyx_v_c_enc, 0, strlen(__pyx_v_c_enc), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 788, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = __pyx_t_6;
__pyx_t_6 = 0;
__Pyx_INCREF(__pyx_kp_u__12);
__pyx_t_5 = __pyx_kp_u__12;
}
- __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 789, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 788, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_4;
__pyx_t_3 += 1;
__Pyx_GIVEREF(__pyx_kp_u__22);
PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__22);
- __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 789, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 788, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":788
+ /* "src/lxml/serializer.pxi":787
* enchandler = tree.xmlFindCharEncodingHandler(c_enc)
* if enchandler is NULL:
* raise LookupError( # <<<<<<<<<<<<<<
* f"unknown encoding: '{c_enc.decode('UTF-8') if c_enc is not NULL else u''}'")
* try:
*/
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_LookupError, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 788, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_LookupError, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 787, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 788, __pyx_L1_error)
+ __PYX_ERR(9, 787, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":787
+ /* "src/lxml/serializer.pxi":786
* cdef bytes filename8
* enchandler = tree.xmlFindCharEncodingHandler(c_enc)
* if enchandler is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":790
+ /* "src/lxml/serializer.pxi":789
* raise LookupError(
* f"unknown encoding: '{c_enc.decode('UTF-8') if c_enc is not NULL else u''}'")
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_9);
/*try:*/ {
- /* "src/lxml/serializer.pxi":791
+ /* "src/lxml/serializer.pxi":790
* f"unknown encoding: '{c_enc.decode('UTF-8') if c_enc is not NULL else u''}'")
* try:
* if _isString(f): # <<<<<<<<<<<<<<
__pyx_t_1 = (_isString(__pyx_v_f) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":792
+ /* "src/lxml/serializer.pxi":791
* try:
* if _isString(f):
* filename8 = _encodeFilename(f) # <<<<<<<<<<<<<<
* if b'%' in filename8 and (
* # Exclude absolute Windows paths and file:// URLs.
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 792, __pyx_L4_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 791, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
- if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(9, 792, __pyx_L4_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(9, 791, __pyx_L4_error)
__pyx_v_filename8 = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":793
+ /* "src/lxml/serializer.pxi":792
* if _isString(f):
* filename8 = _encodeFilename(f)
* if b'%' in filename8 and ( # <<<<<<<<<<<<<<
* # Exclude absolute Windows paths and file:// URLs.
* _isFilePath(<const xmlChar*>filename8) not in (NO_FILE_PATH, ABS_WIN_FILE_PATH)
*/
- __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__62, __pyx_v_filename8, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(9, 793, __pyx_L4_error)
+ __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__62, __pyx_v_filename8, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(9, 792, __pyx_L4_error)
__pyx_t_11 = (__pyx_t_10 != 0);
if (__pyx_t_11) {
} else {
goto __pyx_L12_bool_binop_done;
}
- /* "src/lxml/serializer.pxi":795
+ /* "src/lxml/serializer.pxi":794
* if b'%' in filename8 and (
* # Exclude absolute Windows paths and file:// URLs.
* _isFilePath(<const xmlChar*>filename8) not in (NO_FILE_PATH, ABS_WIN_FILE_PATH) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_filename8 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
- __PYX_ERR(9, 795, __pyx_L4_error)
+ __PYX_ERR(9, 794, __pyx_L4_error)
}
- __pyx_t_12 = __Pyx_PyBytes_AsUString(__pyx_v_filename8); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(9, 795, __pyx_L4_error)
+ __pyx_t_12 = __Pyx_PyBytes_AsUString(__pyx_v_filename8); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(9, 794, __pyx_L4_error)
__pyx_t_11 = __pyx_f_4lxml_5etree__isFilePath(((xmlChar const *)__pyx_t_12));
__pyx_t_13 = ((__pyx_t_11 != __pyx_e_4lxml_5etree_NO_FILE_PATH) != 0);
if (__pyx_t_13) {
goto __pyx_L12_bool_binop_done;
}
- /* "src/lxml/serializer.pxi":796
+ /* "src/lxml/serializer.pxi":795
* # Exclude absolute Windows paths and file:// URLs.
* _isFilePath(<const xmlChar*>filename8) not in (NO_FILE_PATH, ABS_WIN_FILE_PATH)
* or filename8[:7].lower() == b'file://'): # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_filename8 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 796, __pyx_L4_error)
+ __PYX_ERR(9, 795, __pyx_L4_error)
}
- __pyx_t_6 = PySequence_GetSlice(__pyx_v_filename8, 0, 7); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 796, __pyx_L4_error)
+ __pyx_t_6 = PySequence_GetSlice(__pyx_v_filename8, 0, 7); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 795, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_lower); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 796, __pyx_L4_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_lower); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 795, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = NULL;
}
__pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 796, __pyx_L4_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 795, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_11 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_kp_b_file_2, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(9, 796, __pyx_L4_error)
+ __pyx_t_11 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_kp_b_file_2, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(9, 795, __pyx_L4_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_1 = __pyx_t_11;
__pyx_L12_bool_binop_done:;
- /* "src/lxml/serializer.pxi":793
+ /* "src/lxml/serializer.pxi":792
* if _isString(f):
* filename8 = _encodeFilename(f)
* if b'%' in filename8 and ( # <<<<<<<<<<<<<<
*/
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":799
+ /* "src/lxml/serializer.pxi":798
* # A file path (not a URL) containing the '%' URL escape character.
* # libxml2 uses URL-unescaping on these, so escape the path before passing it in.
* filename8 = filename8.replace(b'%', b'%25') # <<<<<<<<<<<<<<
* c_buffer = tree.xmlOutputBufferCreateFilename(
* _cstr(filename8), enchandler, c_compression)
*/
- __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyBytes_Type_replace, __pyx_v_filename8, __pyx_kp_b__62, __pyx_kp_b_25); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 799, __pyx_L4_error)
+ __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyBytes_Type_replace, __pyx_v_filename8, __pyx_kp_b__62, __pyx_kp_b_25); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 798, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
- if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(9, 799, __pyx_L4_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(9, 798, __pyx_L4_error)
__Pyx_DECREF_SET(__pyx_v_filename8, ((PyObject*)__pyx_t_2));
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":793
+ /* "src/lxml/serializer.pxi":792
* if _isString(f):
* filename8 = _encodeFilename(f)
* if b'%' in filename8 and ( # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":800
+ /* "src/lxml/serializer.pxi":799
* # libxml2 uses URL-unescaping on these, so escape the path before passing it in.
* filename8 = filename8.replace(b'%', b'%25')
* c_buffer = tree.xmlOutputBufferCreateFilename( # <<<<<<<<<<<<<<
*/
__pyx_v_c_buffer = xmlOutputBufferCreateFilename(PyBytes_AS_STRING(__pyx_v_filename8), __pyx_v_enchandler, __pyx_v_c_compression);
- /* "src/lxml/serializer.pxi":802
+ /* "src/lxml/serializer.pxi":801
* c_buffer = tree.xmlOutputBufferCreateFilename(
* _cstr(filename8), enchandler, c_compression)
* if c_buffer is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_buffer == NULL) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":803
+ /* "src/lxml/serializer.pxi":802
* _cstr(filename8), enchandler, c_compression)
* if c_buffer is NULL:
* python.PyErr_SetFromErrno(IOError) # raises IOError # <<<<<<<<<<<<<<
* writer = None
* elif hasattr(f, 'write'):
*/
- __pyx_t_2 = PyErr_SetFromErrno(__pyx_builtin_IOError); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 803, __pyx_L4_error)
+ __pyx_t_2 = PyErr_SetFromErrno(__pyx_builtin_IOError); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 802, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":802
+ /* "src/lxml/serializer.pxi":801
* c_buffer = tree.xmlOutputBufferCreateFilename(
* _cstr(filename8), enchandler, c_compression)
* if c_buffer is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":804
+ /* "src/lxml/serializer.pxi":803
* if c_buffer is NULL:
* python.PyErr_SetFromErrno(IOError) # raises IOError
* writer = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)Py_None);
- /* "src/lxml/serializer.pxi":791
+ /* "src/lxml/serializer.pxi":790
* f"unknown encoding: '{c_enc.decode('UTF-8') if c_enc is not NULL else u''}'")
* try:
* if _isString(f): # <<<<<<<<<<<<<<
goto __pyx_L10;
}
- /* "src/lxml/serializer.pxi":805
+ /* "src/lxml/serializer.pxi":804
* python.PyErr_SetFromErrno(IOError) # raises IOError
* writer = None
* elif hasattr(f, 'write'): # <<<<<<<<<<<<<<
* writer = _FilelikeWriter(f, compression=c_compression, close=close)
* c_buffer = writer._createOutputBuffer(enchandler)
*/
- __pyx_t_1 = __Pyx_HasAttr(__pyx_v_f, __pyx_n_s_write); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 805, __pyx_L4_error)
+ __pyx_t_1 = __Pyx_HasAttr(__pyx_v_f, __pyx_n_s_write); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 804, __pyx_L4_error)
__pyx_t_11 = (__pyx_t_1 != 0);
if (likely(__pyx_t_11)) {
- /* "src/lxml/serializer.pxi":806
+ /* "src/lxml/serializer.pxi":805
* writer = None
* elif hasattr(f, 'write'):
* writer = _FilelikeWriter(f, compression=c_compression, close=close) # <<<<<<<<<<<<<<
* c_buffer = writer._createOutputBuffer(enchandler)
* else:
*/
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 806, __pyx_L4_error)
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 805, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_f);
__Pyx_GIVEREF(__pyx_v_f);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f);
- __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 806, __pyx_L4_error)
+ __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 805, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_c_compression); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 806, __pyx_L4_error)
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_c_compression); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 805, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_compression, __pyx_t_6) < 0) __PYX_ERR(9, 806, __pyx_L4_error)
+ if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_compression, __pyx_t_6) < 0) __PYX_ERR(9, 805, __pyx_L4_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_v_close); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 806, __pyx_L4_error)
+ __pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_v_close); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 805, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_close, __pyx_t_6) < 0) __PYX_ERR(9, 806, __pyx_L4_error)
+ if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_close, __pyx_t_6) < 0) __PYX_ERR(9, 805, __pyx_L4_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FilelikeWriter), __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 806, __pyx_L4_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FilelikeWriter), __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 805, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":807
+ /* "src/lxml/serializer.pxi":806
* elif hasattr(f, 'write'):
* writer = _FilelikeWriter(f, compression=c_compression, close=close)
* c_buffer = writer._createOutputBuffer(enchandler) # <<<<<<<<<<<<<<
* else:
* raise TypeError(
*/
- __pyx_t_14 = __pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer(__pyx_v_writer, __pyx_v_enchandler); if (unlikely(__pyx_t_14 == ((xmlOutputBuffer *)NULL))) __PYX_ERR(9, 807, __pyx_L4_error)
+ __pyx_t_14 = __pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer(__pyx_v_writer, __pyx_v_enchandler); if (unlikely(__pyx_t_14 == ((xmlOutputBuffer *)NULL))) __PYX_ERR(9, 806, __pyx_L4_error)
__pyx_v_c_buffer = __pyx_t_14;
- /* "src/lxml/serializer.pxi":805
+ /* "src/lxml/serializer.pxi":804
* python.PyErr_SetFromErrno(IOError) # raises IOError
* writer = None
* elif hasattr(f, 'write'): # <<<<<<<<<<<<<<
goto __pyx_L10;
}
- /* "src/lxml/serializer.pxi":809
+ /* "src/lxml/serializer.pxi":808
* c_buffer = writer._createOutputBuffer(enchandler)
* else:
* raise TypeError( # <<<<<<<<<<<<<<
*/
/*else*/ {
- /* "src/lxml/serializer.pxi":810
+ /* "src/lxml/serializer.pxi":809
* else:
* raise TypeError(
* f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'") # <<<<<<<<<<<<<<
* except:
* tree.xmlCharEncCloseFunc(enchandler)
*/
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 810, __pyx_L4_error)
+ __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 809, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_3 = 0;
__pyx_t_4 = 127;
__Pyx_GIVEREF(__pyx_kp_u_File_or_filename_expected_got);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_File_or_filename_expected_got);
__pyx_t_15 = _fqtypename(__pyx_v_f);
- __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_15, 0, strlen(__pyx_t_15), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 810, __pyx_L4_error)
+ __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_15, 0, strlen(__pyx_t_15), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 809, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_5);
__pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
__pyx_t_3 += 1;
__Pyx_GIVEREF(__pyx_kp_u__22);
PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__22);
- __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 810, __pyx_L4_error)
+ __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 809, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":809
+ /* "src/lxml/serializer.pxi":808
* c_buffer = writer._createOutputBuffer(enchandler)
* else:
* raise TypeError( # <<<<<<<<<<<<<<
* f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'")
* except:
*/
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 809, __pyx_L4_error)
+ __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 808, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __PYX_ERR(9, 809, __pyx_L4_error)
+ __PYX_ERR(9, 808, __pyx_L4_error)
}
__pyx_L10:;
- /* "src/lxml/serializer.pxi":790
+ /* "src/lxml/serializer.pxi":789
* raise LookupError(
* f"unknown encoding: '{c_enc.decode('UTF-8') if c_enc is not NULL else u''}'")
* try: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":811
+ /* "src/lxml/serializer.pxi":810
* raise TypeError(
* f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'")
* except: # <<<<<<<<<<<<<<
*/
/*except:*/ {
__Pyx_AddTraceback("lxml.etree._create_output_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_2) < 0) __PYX_ERR(9, 811, __pyx_L6_except_error)
+ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_2) < 0) __PYX_ERR(9, 810, __pyx_L6_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_2);
- /* "src/lxml/serializer.pxi":812
+ /* "src/lxml/serializer.pxi":811
* f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'")
* except:
* tree.xmlCharEncCloseFunc(enchandler) # <<<<<<<<<<<<<<
*/
(void)(xmlCharEncCloseFunc(__pyx_v_enchandler));
- /* "src/lxml/serializer.pxi":813
+ /* "src/lxml/serializer.pxi":812
* except:
* tree.xmlCharEncCloseFunc(enchandler)
* raise # <<<<<<<<<<<<<<
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_5, __pyx_t_2);
__pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_2 = 0;
- __PYX_ERR(9, 813, __pyx_L6_except_error)
+ __PYX_ERR(9, 812, __pyx_L6_except_error)
}
__pyx_L6_except_error:;
- /* "src/lxml/serializer.pxi":790
+ /* "src/lxml/serializer.pxi":789
* raise LookupError(
* f"unknown encoding: '{c_enc.decode('UTF-8') if c_enc is not NULL else u''}'")
* try: # <<<<<<<<<<<<<<
__pyx_L9_try_end:;
}
- /* "src/lxml/serializer.pxi":814
+ /* "src/lxml/serializer.pxi":813
* tree.xmlCharEncCloseFunc(enchandler)
* raise
* c_buffer_ret[0] = c_buffer # <<<<<<<<<<<<<<
*/
(__pyx_v_c_buffer_ret[0]) = __pyx_v_c_buffer;
- /* "src/lxml/serializer.pxi":815
+ /* "src/lxml/serializer.pxi":814
* raise
* c_buffer_ret[0] = c_buffer
* return writer # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_writer;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":780
+ /* "src/lxml/serializer.pxi":779
*
*
* cdef _FilelikeWriter _create_output_buffer( # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":817
+/* "src/lxml/serializer.pxi":816
* return writer
*
* cdef xmlChar **_convert_ns_prefixes(tree.xmlDict* c_dict, ns_prefixes) except NULL: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_convert_ns_prefixes", 0);
- /* "src/lxml/serializer.pxi":818
+ /* "src/lxml/serializer.pxi":817
*
* cdef xmlChar **_convert_ns_prefixes(tree.xmlDict* c_dict, ns_prefixes) except NULL:
* cdef size_t i, num_ns_prefixes = len(ns_prefixes) # <<<<<<<<<<<<<<
* # Need to allocate one extra memory block to handle last NULL entry
* c_ns_prefixes = <xmlChar **>python.lxml_malloc(num_ns_prefixes + 1, sizeof(xmlChar*))
*/
- __pyx_t_1 = PyObject_Length(__pyx_v_ns_prefixes); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(9, 818, __pyx_L1_error)
+ __pyx_t_1 = PyObject_Length(__pyx_v_ns_prefixes); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(9, 817, __pyx_L1_error)
__pyx_v_num_ns_prefixes = __pyx_t_1;
- /* "src/lxml/serializer.pxi":820
+ /* "src/lxml/serializer.pxi":819
* cdef size_t i, num_ns_prefixes = len(ns_prefixes)
* # Need to allocate one extra memory block to handle last NULL entry
* c_ns_prefixes = <xmlChar **>python.lxml_malloc(num_ns_prefixes + 1, sizeof(xmlChar*)) # <<<<<<<<<<<<<<
*/
__pyx_v_c_ns_prefixes = ((xmlChar **)lxml_malloc((__pyx_v_num_ns_prefixes + 1), (sizeof(xmlChar *))));
- /* "src/lxml/serializer.pxi":821
+ /* "src/lxml/serializer.pxi":820
* # Need to allocate one extra memory block to handle last NULL entry
* c_ns_prefixes = <xmlChar **>python.lxml_malloc(num_ns_prefixes + 1, sizeof(xmlChar*))
* if not c_ns_prefixes: # <<<<<<<<<<<<<<
__pyx_t_2 = ((!(__pyx_v_c_ns_prefixes != 0)) != 0);
if (unlikely(__pyx_t_2)) {
- /* "src/lxml/serializer.pxi":822
+ /* "src/lxml/serializer.pxi":821
* c_ns_prefixes = <xmlChar **>python.lxml_malloc(num_ns_prefixes + 1, sizeof(xmlChar*))
* if not c_ns_prefixes:
* raise MemoryError() # <<<<<<<<<<<<<<
* i = 0
* try:
*/
- PyErr_NoMemory(); __PYX_ERR(9, 822, __pyx_L1_error)
+ PyErr_NoMemory(); __PYX_ERR(9, 821, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":821
+ /* "src/lxml/serializer.pxi":820
* # Need to allocate one extra memory block to handle last NULL entry
* c_ns_prefixes = <xmlChar **>python.lxml_malloc(num_ns_prefixes + 1, sizeof(xmlChar*))
* if not c_ns_prefixes: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":823
+ /* "src/lxml/serializer.pxi":822
* if not c_ns_prefixes:
* raise MemoryError()
* i = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_i = 0;
- /* "src/lxml/serializer.pxi":824
+ /* "src/lxml/serializer.pxi":823
* raise MemoryError()
* i = 0
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_5);
/*try:*/ {
- /* "src/lxml/serializer.pxi":825
+ /* "src/lxml/serializer.pxi":824
* i = 0
* try:
* for prefix in ns_prefixes: # <<<<<<<<<<<<<<
__pyx_t_6 = __pyx_v_ns_prefixes; __Pyx_INCREF(__pyx_t_6); __pyx_t_1 = 0;
__pyx_t_7 = NULL;
} else {
- __pyx_t_1 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_ns_prefixes); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 825, __pyx_L4_error)
+ __pyx_t_1 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_ns_prefixes); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 824, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 825, __pyx_L4_error)
+ __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 824, __pyx_L4_error)
}
for (;;) {
if (likely(!__pyx_t_7)) {
if (likely(PyList_CheckExact(__pyx_t_6))) {
if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_8 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_8); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(9, 825, __pyx_L4_error)
+ __pyx_t_8 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_8); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(9, 824, __pyx_L4_error)
#else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 825, __pyx_L4_error)
+ __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 824, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
#endif
} else {
if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_8); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(9, 825, __pyx_L4_error)
+ __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_8); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(9, 824, __pyx_L4_error)
#else
- __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 825, __pyx_L4_error)
+ __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 824, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 825, __pyx_L4_error)
+ else __PYX_ERR(9, 824, __pyx_L4_error)
}
break;
}
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_8);
__pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":826
+ /* "src/lxml/serializer.pxi":825
* try:
* for prefix in ns_prefixes:
* prefix_utf = _utf8(prefix) # <<<<<<<<<<<<<<
* c_prefix = tree.xmlDictExists(c_dict, _xcstr(prefix_utf), len(prefix_utf))
* if c_prefix:
*/
- __pyx_t_8 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 826, __pyx_L4_error)
+ __pyx_t_8 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 825, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_XDECREF_SET(__pyx_v_prefix_utf, ((PyObject*)__pyx_t_8));
__pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":827
+ /* "src/lxml/serializer.pxi":826
* for prefix in ns_prefixes:
* prefix_utf = _utf8(prefix)
* c_prefix = tree.xmlDictExists(c_dict, _xcstr(prefix_utf), len(prefix_utf)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_prefix_utf == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(9, 827, __pyx_L4_error)
+ __PYX_ERR(9, 826, __pyx_L4_error)
}
- __pyx_t_9 = PyBytes_GET_SIZE(__pyx_v_prefix_utf); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(9, 827, __pyx_L4_error)
+ __pyx_t_9 = PyBytes_GET_SIZE(__pyx_v_prefix_utf); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(9, 826, __pyx_L4_error)
__pyx_v_c_prefix = xmlDictExists(__pyx_v_c_dict, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix_utf), __pyx_t_9);
- /* "src/lxml/serializer.pxi":828
+ /* "src/lxml/serializer.pxi":827
* prefix_utf = _utf8(prefix)
* c_prefix = tree.xmlDictExists(c_dict, _xcstr(prefix_utf), len(prefix_utf))
* if c_prefix: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_prefix != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":830
+ /* "src/lxml/serializer.pxi":829
* if c_prefix:
* # unknown prefixes do not need to get serialised
* c_ns_prefixes[i] = <xmlChar*>c_prefix # <<<<<<<<<<<<<<
*/
(__pyx_v_c_ns_prefixes[__pyx_v_i]) = ((xmlChar *)__pyx_v_c_prefix);
- /* "src/lxml/serializer.pxi":831
+ /* "src/lxml/serializer.pxi":830
* # unknown prefixes do not need to get serialised
* c_ns_prefixes[i] = <xmlChar*>c_prefix
* i += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_i = (__pyx_v_i + 1);
- /* "src/lxml/serializer.pxi":828
+ /* "src/lxml/serializer.pxi":827
* prefix_utf = _utf8(prefix)
* c_prefix = tree.xmlDictExists(c_dict, _xcstr(prefix_utf), len(prefix_utf))
* if c_prefix: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":825
+ /* "src/lxml/serializer.pxi":824
* i = 0
* try:
* for prefix in ns_prefixes: # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":824
+ /* "src/lxml/serializer.pxi":823
* raise MemoryError()
* i = 0
* try: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":832
+ /* "src/lxml/serializer.pxi":831
* c_ns_prefixes[i] = <xmlChar*>c_prefix
* i += 1
* except: # <<<<<<<<<<<<<<
*/
/*except:*/ {
__Pyx_AddTraceback("lxml.etree._convert_ns_prefixes", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(9, 832, __pyx_L6_except_error)
+ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(9, 831, __pyx_L6_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GOTREF(__pyx_t_10);
- /* "src/lxml/serializer.pxi":833
+ /* "src/lxml/serializer.pxi":832
* i += 1
* except:
* python.lxml_free(c_ns_prefixes) # <<<<<<<<<<<<<<
*/
lxml_free(__pyx_v_c_ns_prefixes);
- /* "src/lxml/serializer.pxi":834
+ /* "src/lxml/serializer.pxi":833
* except:
* python.lxml_free(c_ns_prefixes)
* raise # <<<<<<<<<<<<<<
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_8, __pyx_t_10);
__pyx_t_6 = 0; __pyx_t_8 = 0; __pyx_t_10 = 0;
- __PYX_ERR(9, 834, __pyx_L6_except_error)
+ __PYX_ERR(9, 833, __pyx_L6_except_error)
}
__pyx_L6_except_error:;
- /* "src/lxml/serializer.pxi":824
+ /* "src/lxml/serializer.pxi":823
* raise MemoryError()
* i = 0
* try: # <<<<<<<<<<<<<<
__pyx_L9_try_end:;
}
- /* "src/lxml/serializer.pxi":836
+ /* "src/lxml/serializer.pxi":835
* raise
*
* c_ns_prefixes[i] = NULL # append end marker # <<<<<<<<<<<<<<
*/
(__pyx_v_c_ns_prefixes[__pyx_v_i]) = NULL;
- /* "src/lxml/serializer.pxi":837
+ /* "src/lxml/serializer.pxi":836
*
* c_ns_prefixes[i] = NULL # append end marker
* return c_ns_prefixes # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_c_ns_prefixes;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":817
+ /* "src/lxml/serializer.pxi":816
* return writer
*
* cdef xmlChar **_convert_ns_prefixes(tree.xmlDict* c_dict, ns_prefixes) except NULL: # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":839
+/* "src/lxml/serializer.pxi":838
* return c_ns_prefixes
*
* cdef _tofilelikeC14N(f, _Element element, bint exclusive, bint with_comments, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_tofilelikeC14N", 0);
- /* "src/lxml/serializer.pxi":841
+ /* "src/lxml/serializer.pxi":840
* cdef _tofilelikeC14N(f, _Element element, bint exclusive, bint with_comments,
* int compression, inclusive_ns_prefixes):
* cdef _FilelikeWriter writer = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)Py_None);
- /* "src/lxml/serializer.pxi":843
+ /* "src/lxml/serializer.pxi":842
* cdef _FilelikeWriter writer = None
* cdef tree.xmlOutputBuffer* c_buffer
* cdef xmlChar **c_inclusive_ns_prefixes = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_c_inclusive_ns_prefixes = NULL;
- /* "src/lxml/serializer.pxi":847
+ /* "src/lxml/serializer.pxi":846
* cdef xmlDoc* c_base_doc
* cdef xmlDoc* c_doc
* cdef int bytes_count, error = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_error = 0;
- /* "src/lxml/serializer.pxi":849
+ /* "src/lxml/serializer.pxi":848
* cdef int bytes_count, error = 0
*
* c_base_doc = element._c_node.doc # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_element->_c_node->doc;
__pyx_v_c_base_doc = __pyx_t_1;
- /* "src/lxml/serializer.pxi":850
+ /* "src/lxml/serializer.pxi":849
*
* c_base_doc = element._c_node.doc
* c_doc = _fakeRootDoc(c_base_doc, element._c_node) # <<<<<<<<<<<<<<
* try:
* c_inclusive_ns_prefixes = (
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_c_base_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_1 == ((xmlDoc *)NULL))) __PYX_ERR(9, 850, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_c_base_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_1 == ((xmlDoc *)NULL))) __PYX_ERR(9, 849, __pyx_L1_error)
__pyx_v_c_doc = __pyx_t_1;
- /* "src/lxml/serializer.pxi":851
+ /* "src/lxml/serializer.pxi":850
* c_base_doc = element._c_node.doc
* c_doc = _fakeRootDoc(c_base_doc, element._c_node)
* try: # <<<<<<<<<<<<<<
*/
/*try:*/ {
- /* "src/lxml/serializer.pxi":854
+ /* "src/lxml/serializer.pxi":853
* c_inclusive_ns_prefixes = (
* _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes)
* if inclusive_ns_prefixes else NULL) # <<<<<<<<<<<<<<
*
* if _isString(f):
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 854, __pyx_L4_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 853, __pyx_L4_error)
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":853
+ /* "src/lxml/serializer.pxi":852
* try:
* c_inclusive_ns_prefixes = (
* _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) # <<<<<<<<<<<<<<
* if inclusive_ns_prefixes else NULL)
*
*/
- __pyx_t_4 = __pyx_f_4lxml_5etree__convert_ns_prefixes(__pyx_v_c_doc->dict, __pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_4 == ((xmlChar **)NULL))) __PYX_ERR(9, 853, __pyx_L4_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__convert_ns_prefixes(__pyx_v_c_doc->dict, __pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_4 == ((xmlChar **)NULL))) __PYX_ERR(9, 852, __pyx_L4_error)
__pyx_t_2 = __pyx_t_4;
} else {
- /* "src/lxml/serializer.pxi":854
+ /* "src/lxml/serializer.pxi":853
* c_inclusive_ns_prefixes = (
* _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes)
* if inclusive_ns_prefixes else NULL) # <<<<<<<<<<<<<<
}
__pyx_v_c_inclusive_ns_prefixes = __pyx_t_2;
- /* "src/lxml/serializer.pxi":856
+ /* "src/lxml/serializer.pxi":855
* if inclusive_ns_prefixes else NULL)
*
* if _isString(f): # <<<<<<<<<<<<<<
__pyx_t_3 = (_isString(__pyx_v_f) != 0);
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":857
+ /* "src/lxml/serializer.pxi":856
*
* if _isString(f):
* filename8 = _encodeFilename(f) # <<<<<<<<<<<<<<
* c_filename = _cstr(filename8)
* with nogil:
*/
- __pyx_t_5 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 857, __pyx_L4_error)
+ __pyx_t_5 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 856, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_v_filename8 = __pyx_t_5;
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":858
+ /* "src/lxml/serializer.pxi":857
* if _isString(f):
* filename8 = _encodeFilename(f)
* c_filename = _cstr(filename8) # <<<<<<<<<<<<<<
*/
__pyx_v_c_filename = PyBytes_AS_STRING(__pyx_v_filename8);
- /* "src/lxml/serializer.pxi":859
+ /* "src/lxml/serializer.pxi":858
* filename8 = _encodeFilename(f)
* c_filename = _cstr(filename8)
* with nogil: # <<<<<<<<<<<<<<
#endif
/*try:*/ {
- /* "src/lxml/serializer.pxi":860
+ /* "src/lxml/serializer.pxi":859
* c_filename = _cstr(filename8)
* with nogil:
* error = c14n.xmlC14NDocSave( # <<<<<<<<<<<<<<
__pyx_v_error = xmlC14NDocSave(__pyx_v_c_doc, NULL, __pyx_v_exclusive, __pyx_v_c_inclusive_ns_prefixes, __pyx_v_with_comments, __pyx_v_c_filename, __pyx_v_compression);
}
- /* "src/lxml/serializer.pxi":859
+ /* "src/lxml/serializer.pxi":858
* filename8 = _encodeFilename(f)
* c_filename = _cstr(filename8)
* with nogil: # <<<<<<<<<<<<<<
}
}
- /* "src/lxml/serializer.pxi":856
+ /* "src/lxml/serializer.pxi":855
* if inclusive_ns_prefixes else NULL)
*
* if _isString(f): # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":863
+ /* "src/lxml/serializer.pxi":862
* c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
* with_comments, c_filename, compression)
* elif hasattr(f, 'write'): # <<<<<<<<<<<<<<
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(NULL)
*/
- __pyx_t_3 = __Pyx_HasAttr(__pyx_v_f, __pyx_n_s_write); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 863, __pyx_L4_error)
+ __pyx_t_3 = __Pyx_HasAttr(__pyx_v_f, __pyx_n_s_write); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 862, __pyx_L4_error)
__pyx_t_6 = (__pyx_t_3 != 0);
if (likely(__pyx_t_6)) {
- /* "src/lxml/serializer.pxi":864
+ /* "src/lxml/serializer.pxi":863
* with_comments, c_filename, compression)
* elif hasattr(f, 'write'):
* writer = _FilelikeWriter(f, compression=compression) # <<<<<<<<<<<<<<
* c_buffer = writer._createOutputBuffer(NULL)
* with writer.error_log:
*/
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 864, __pyx_L4_error)
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 863, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_f);
__Pyx_GIVEREF(__pyx_v_f);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_f);
- __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 864, __pyx_L4_error)
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 863, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_compression); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 864, __pyx_L4_error)
+ __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_compression); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 863, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
- if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_compression, __pyx_t_8) < 0) __PYX_ERR(9, 864, __pyx_L4_error)
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_compression, __pyx_t_8) < 0) __PYX_ERR(9, 863, __pyx_L4_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FilelikeWriter), __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 864, __pyx_L4_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FilelikeWriter), __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 863, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF_SET(__pyx_v_writer, ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_t_8));
__pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":865
+ /* "src/lxml/serializer.pxi":864
* elif hasattr(f, 'write'):
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(NULL) # <<<<<<<<<<<<<<
* with writer.error_log:
* bytes_count = c14n.xmlC14NDocSaveTo(
*/
- __pyx_t_9 = __pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer(__pyx_v_writer, NULL); if (unlikely(__pyx_t_9 == ((xmlOutputBuffer *)NULL))) __PYX_ERR(9, 865, __pyx_L4_error)
+ __pyx_t_9 = __pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer(__pyx_v_writer, NULL); if (unlikely(__pyx_t_9 == ((xmlOutputBuffer *)NULL))) __PYX_ERR(9, 864, __pyx_L4_error)
__pyx_v_c_buffer = __pyx_t_9;
- /* "src/lxml/serializer.pxi":866
+ /* "src/lxml/serializer.pxi":865
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(NULL)
* with writer.error_log: # <<<<<<<<<<<<<<
* c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
*/
/*with:*/ {
- __pyx_t_10 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_writer->error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 866, __pyx_L4_error)
+ __pyx_t_10 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_writer->error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 865, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_writer->error_log); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(9, 866, __pyx_L10_error)
+ __pyx_t_11 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_writer->error_log); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(9, 865, __pyx_L10_error)
/*try:*/ {
{
(void)__pyx_t_12; (void)__pyx_t_13; (void)__pyx_t_14; /* mark used */
/*try:*/ {
- /* "src/lxml/serializer.pxi":867
+ /* "src/lxml/serializer.pxi":866
* c_buffer = writer._createOutputBuffer(NULL)
* with writer.error_log:
* bytes_count = c14n.xmlC14NDocSaveTo( # <<<<<<<<<<<<<<
*/
__pyx_v_bytes_count = xmlC14NDocSaveTo(__pyx_v_c_doc, NULL, __pyx_v_exclusive, __pyx_v_c_inclusive_ns_prefixes, __pyx_v_with_comments, __pyx_v_c_buffer);
- /* "src/lxml/serializer.pxi":870
+ /* "src/lxml/serializer.pxi":869
* c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
* with_comments, c_buffer)
* error = tree.xmlOutputBufferClose(c_buffer) # <<<<<<<<<<<<<<
*/
__pyx_v_error = xmlOutputBufferClose(__pyx_v_c_buffer);
- /* "src/lxml/serializer.pxi":871
+ /* "src/lxml/serializer.pxi":870
* with_comments, c_buffer)
* error = tree.xmlOutputBufferClose(c_buffer)
* if bytes_count < 0: # <<<<<<<<<<<<<<
__pyx_t_6 = ((__pyx_v_bytes_count < 0) != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":872
+ /* "src/lxml/serializer.pxi":871
* error = tree.xmlOutputBufferClose(c_buffer)
* if bytes_count < 0:
* error = bytes_count # <<<<<<<<<<<<<<
*/
__pyx_v_error = __pyx_v_bytes_count;
- /* "src/lxml/serializer.pxi":871
+ /* "src/lxml/serializer.pxi":870
* with_comments, c_buffer)
* error = tree.xmlOutputBufferClose(c_buffer)
* if bytes_count < 0: # <<<<<<<<<<<<<<
goto __pyx_L20;
}
- /* "src/lxml/serializer.pxi":873
+ /* "src/lxml/serializer.pxi":872
* if bytes_count < 0:
* error = bytes_count
* elif error != -1: # <<<<<<<<<<<<<<
__pyx_t_6 = ((__pyx_v_error != -1L) != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":874
+ /* "src/lxml/serializer.pxi":873
* error = bytes_count
* elif error != -1:
* error = xmlerror.XML_ERR_OK # <<<<<<<<<<<<<<
*/
__pyx_v_error = XML_ERR_OK;
- /* "src/lxml/serializer.pxi":873
+ /* "src/lxml/serializer.pxi":872
* if bytes_count < 0:
* error = bytes_count
* elif error != -1: # <<<<<<<<<<<<<<
}
__pyx_L20:;
- /* "src/lxml/serializer.pxi":866
+ /* "src/lxml/serializer.pxi":865
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(NULL)
* with writer.error_log: # <<<<<<<<<<<<<<
if (__pyx_t_10) {
__pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__35, NULL);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (unlikely(!__pyx_t_14)) __PYX_ERR(9, 866, __pyx_L4_error)
+ if (unlikely(!__pyx_t_14)) __PYX_ERR(9, 865, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
}
__pyx_L21:;
}
- /* "src/lxml/serializer.pxi":863
+ /* "src/lxml/serializer.pxi":862
* c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
* with_comments, c_filename, compression)
* elif hasattr(f, 'write'): # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":876
+ /* "src/lxml/serializer.pxi":875
* error = xmlerror.XML_ERR_OK
* else:
* raise TypeError(f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'") # <<<<<<<<<<<<<<
* _destroyFakeDoc(c_base_doc, c_doc)
*/
/*else*/ {
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 876, __pyx_L4_error)
+ __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 875, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_15 = 0;
__pyx_t_16 = 127;
__Pyx_GIVEREF(__pyx_kp_u_File_or_filename_expected_got);
PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_File_or_filename_expected_got);
__pyx_t_17 = _fqtypename(__pyx_v_f);
- __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_17, 0, strlen(__pyx_t_17), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 876, __pyx_L4_error)
+ __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_17, 0, strlen(__pyx_t_17), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 875, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_7);
__pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_16;
__pyx_t_15 += 1;
__Pyx_GIVEREF(__pyx_kp_u__22);
PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u__22);
- __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 876, __pyx_L4_error)
+ __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 875, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 876, __pyx_L4_error)
+ __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 875, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(9, 876, __pyx_L4_error)
+ __PYX_ERR(9, 875, __pyx_L4_error)
}
__pyx_L6:;
}
- /* "src/lxml/serializer.pxi":878
+ /* "src/lxml/serializer.pxi":877
* raise TypeError(f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'")
* finally:
* _destroyFakeDoc(c_base_doc, c_doc) # <<<<<<<<<<<<<<
/*normal exit:*/{
__pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_c_base_doc, __pyx_v_c_doc);
- /* "src/lxml/serializer.pxi":879
+ /* "src/lxml/serializer.pxi":878
* finally:
* _destroyFakeDoc(c_base_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL: # <<<<<<<<<<<<<<
__pyx_t_6 = ((__pyx_v_c_inclusive_ns_prefixes != NULL) != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":880
+ /* "src/lxml/serializer.pxi":879
* _destroyFakeDoc(c_base_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL:
* python.lxml_free(c_inclusive_ns_prefixes) # <<<<<<<<<<<<<<
*/
lxml_free(__pyx_v_c_inclusive_ns_prefixes);
- /* "src/lxml/serializer.pxi":879
+ /* "src/lxml/serializer.pxi":878
* finally:
* _destroyFakeDoc(c_base_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL: # <<<<<<<<<<<<<<
__pyx_t_11 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
{
- /* "src/lxml/serializer.pxi":878
+ /* "src/lxml/serializer.pxi":877
* raise TypeError(f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'")
* finally:
* _destroyFakeDoc(c_base_doc, c_doc) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_c_base_doc, __pyx_v_c_doc);
- /* "src/lxml/serializer.pxi":879
+ /* "src/lxml/serializer.pxi":878
* finally:
* _destroyFakeDoc(c_base_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL: # <<<<<<<<<<<<<<
__pyx_t_6 = ((__pyx_v_c_inclusive_ns_prefixes != NULL) != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":880
+ /* "src/lxml/serializer.pxi":879
* _destroyFakeDoc(c_base_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL:
* python.lxml_free(c_inclusive_ns_prefixes) # <<<<<<<<<<<<<<
*/
lxml_free(__pyx_v_c_inclusive_ns_prefixes);
- /* "src/lxml/serializer.pxi":879
+ /* "src/lxml/serializer.pxi":878
* finally:
* _destroyFakeDoc(c_base_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL: # <<<<<<<<<<<<<<
__pyx_L5:;
}
- /* "src/lxml/serializer.pxi":882
+ /* "src/lxml/serializer.pxi":881
* python.lxml_free(c_inclusive_ns_prefixes)
*
* if writer is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_6 != 0);
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":883
+ /* "src/lxml/serializer.pxi":882
*
* if writer is not None:
* writer._exc_context._raise_if_stored() # <<<<<<<<<<<<<<
*
* if error < 0:
*/
- __pyx_t_18 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(9, 883, __pyx_L1_error)
+ __pyx_t_18 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(9, 882, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":882
+ /* "src/lxml/serializer.pxi":881
* python.lxml_free(c_inclusive_ns_prefixes)
*
* if writer is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":885
+ /* "src/lxml/serializer.pxi":884
* writer._exc_context._raise_if_stored()
*
* if error < 0: # <<<<<<<<<<<<<<
__pyx_t_3 = ((__pyx_v_error < 0) != 0);
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":886
+ /* "src/lxml/serializer.pxi":885
*
* if error < 0:
* message = u"C14N failed" # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_kp_u_C14N_failed);
__pyx_v_message = __pyx_kp_u_C14N_failed;
- /* "src/lxml/serializer.pxi":887
+ /* "src/lxml/serializer.pxi":886
* if error < 0:
* message = u"C14N failed"
* if writer is not None: # <<<<<<<<<<<<<<
__pyx_t_6 = (__pyx_t_3 != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":888
+ /* "src/lxml/serializer.pxi":887
* message = u"C14N failed"
* if writer is not None:
* errors = writer.error_log # <<<<<<<<<<<<<<
__pyx_v_errors = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_8);
__pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":889
+ /* "src/lxml/serializer.pxi":888
* if writer is not None:
* errors = writer.error_log
* if len(errors): # <<<<<<<<<<<<<<
* message = errors[0].message
* raise C14NError(message)
*/
- __pyx_t_15 = PyObject_Length(((PyObject *)__pyx_v_errors)); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(9, 889, __pyx_L1_error)
+ __pyx_t_15 = PyObject_Length(((PyObject *)__pyx_v_errors)); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(9, 888, __pyx_L1_error)
__pyx_t_6 = (__pyx_t_15 != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":890
+ /* "src/lxml/serializer.pxi":889
* errors = writer.error_log
* if len(errors):
* message = errors[0].message # <<<<<<<<<<<<<<
* raise C14NError(message)
*
*/
- __pyx_t_8 = __Pyx_GetItemInt(((PyObject *)__pyx_v_errors), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 890, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_GetItemInt(((PyObject *)__pyx_v_errors), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 889, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 890, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 889, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF_SET(__pyx_v_message, __pyx_t_7);
__pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":889
+ /* "src/lxml/serializer.pxi":888
* if writer is not None:
* errors = writer.error_log
* if len(errors): # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":887
+ /* "src/lxml/serializer.pxi":886
* if error < 0:
* message = u"C14N failed"
* if writer is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":891
+ /* "src/lxml/serializer.pxi":890
* if len(errors):
* message = errors[0].message
* raise C14NError(message) # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_C14NError), __pyx_v_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 891, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_C14NError), __pyx_v_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __PYX_ERR(9, 891, __pyx_L1_error)
+ __PYX_ERR(9, 890, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":885
+ /* "src/lxml/serializer.pxi":884
* writer._exc_context._raise_if_stored()
*
* if error < 0: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":839
+ /* "src/lxml/serializer.pxi":838
* return c_ns_prefixes
*
* cdef _tofilelikeC14N(f, _Element element, bint exclusive, bint with_comments, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":896
+/* "src/lxml/serializer.pxi":895
* # C14N 2.0
*
* def canonicalize(xml_data=None, *, out=None, from_file=None, **options): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_options, values, pos_args, "canonicalize") < 0)) __PYX_ERR(9, 896, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_options, values, pos_args, "canonicalize") < 0)) __PYX_ERR(9, 895, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("canonicalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 896, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("canonicalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 895, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_options); __pyx_v_options = 0;
__Pyx_AddTraceback("lxml.etree.canonicalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannySetupContext("canonicalize", 0);
__Pyx_INCREF(__pyx_v_out);
- /* "src/lxml/serializer.pxi":909
+ /* "src/lxml/serializer.pxi":908
* The configuration options are the same as for the ``C14NWriterTarget``.
* """
* if xml_data is None and from_file is None: # <<<<<<<<<<<<<<
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":910
+ /* "src/lxml/serializer.pxi":909
* """
* if xml_data is None and from_file is None:
* raise ValueError("Either 'xml_data' or 'from_file' must be provided as input") # <<<<<<<<<<<<<<
*
* sio = None
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 910, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 909, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(9, 910, __pyx_L1_error)
+ __PYX_ERR(9, 909, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":909
+ /* "src/lxml/serializer.pxi":908
* The configuration options are the same as for the ``C14NWriterTarget``.
* """
* if xml_data is None and from_file is None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":912
+ /* "src/lxml/serializer.pxi":911
* raise ValueError("Either 'xml_data' or 'from_file' must be provided as input")
*
* sio = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_v_sio = Py_None;
- /* "src/lxml/serializer.pxi":913
+ /* "src/lxml/serializer.pxi":912
*
* sio = None
* if out is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":914
+ /* "src/lxml/serializer.pxi":913
* sio = None
* if out is None:
* sio = out = StringIO() # <<<<<<<<<<<<<<
}
__pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 914, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 913, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_INCREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_out, __pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":913
+ /* "src/lxml/serializer.pxi":912
*
* sio = None
* if out is None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":916
+ /* "src/lxml/serializer.pxi":915
* sio = out = StringIO()
*
* target = C14NWriterTarget(out.write, **options) # <<<<<<<<<<<<<<
*
* if xml_data is not None and not isinstance(xml_data, basestring):
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_write); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 916, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_write); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 915, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 916, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 915, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
__pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget), __pyx_t_5, __pyx_v_options); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 916, __pyx_L1_error)
+ __pyx_t_4 = PyDict_Copy(__pyx_v_options); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 915, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget), __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 915, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_target = ((struct __pyx_obj_4lxml_5etree_C14NWriterTarget *)__pyx_t_4);
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_target = ((struct __pyx_obj_4lxml_5etree_C14NWriterTarget *)__pyx_t_6);
+ __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":918
+ /* "src/lxml/serializer.pxi":917
* target = C14NWriterTarget(out.write, **options)
*
* if xml_data is not None and not isinstance(xml_data, basestring): # <<<<<<<<<<<<<<
__pyx_L8_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":919
+ /* "src/lxml/serializer.pxi":918
*
* if xml_data is not None and not isinstance(xml_data, basestring):
* _tree_to_target(xml_data, target) # <<<<<<<<<<<<<<
* return sio.getvalue() if sio is not None else None
*
*/
- __pyx_t_4 = __pyx_f_4lxml_5etree__tree_to_target(__pyx_v_xml_data, ((PyObject *)__pyx_v_target)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 919, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_6 = __pyx_f_4lxml_5etree__tree_to_target(__pyx_v_xml_data, ((PyObject *)__pyx_v_target)); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 918, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":920
+ /* "src/lxml/serializer.pxi":919
* if xml_data is not None and not isinstance(xml_data, basestring):
* _tree_to_target(xml_data, target)
* return sio.getvalue() if sio is not None else None # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = (__pyx_v_sio != Py_None);
if ((__pyx_t_2 != 0)) {
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_sio, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 920, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_sio, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 919, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 920, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_4 = __pyx_t_5;
- __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 919, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_6 = __pyx_t_4;
+ __pyx_t_4 = 0;
} else {
__Pyx_INCREF(Py_None);
- __pyx_t_4 = Py_None;
+ __pyx_t_6 = Py_None;
}
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":918
+ /* "src/lxml/serializer.pxi":917
* target = C14NWriterTarget(out.write, **options)
*
* if xml_data is not None and not isinstance(xml_data, basestring): # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":923
+ /* "src/lxml/serializer.pxi":922
*
* cdef _FeedParser parser = XMLParser(
* target=target, # <<<<<<<<<<<<<<
* attribute_defaults=True,
* collect_ids=False,
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 923, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_target, ((PyObject *)__pyx_v_target)) < 0) __PYX_ERR(9, 923, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 922, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_target, ((PyObject *)__pyx_v_target)) < 0) __PYX_ERR(9, 922, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":924
+ /* "src/lxml/serializer.pxi":923
* cdef _FeedParser parser = XMLParser(
* target=target,
* attribute_defaults=True, # <<<<<<<<<<<<<<
* collect_ids=False,
* )
*/
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_attribute_defaults, Py_True) < 0) __PYX_ERR(9, 923, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_attribute_defaults, Py_True) < 0) __PYX_ERR(9, 922, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":925
+ /* "src/lxml/serializer.pxi":924
* target=target,
* attribute_defaults=True,
* collect_ids=False, # <<<<<<<<<<<<<<
* )
*
*/
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_collect_ids, Py_False) < 0) __PYX_ERR(9, 923, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_collect_ids, Py_False) < 0) __PYX_ERR(9, 922, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":922
+ /* "src/lxml/serializer.pxi":921
* return sio.getvalue() if sio is not None else None
*
* cdef _FeedParser parser = XMLParser( # <<<<<<<<<<<<<<
* target=target,
* attribute_defaults=True,
*/
- __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 922, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 921, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_t_4);
+ __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":928
+ /* "src/lxml/serializer.pxi":927
* )
*
* if xml_data is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":929
+ /* "src/lxml/serializer.pxi":928
*
* if xml_data is not None:
* parser.feed(xml_data) # <<<<<<<<<<<<<<
* parser.close()
* elif from_file is not None:
*/
- __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_parser->__pyx_base.__pyx_vtab)->feed(__pyx_v_parser, __pyx_v_xml_data, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 929, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_parser->__pyx_base.__pyx_vtab)->feed(__pyx_v_parser, __pyx_v_xml_data, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 928, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":930
+ /* "src/lxml/serializer.pxi":929
* if xml_data is not None:
* parser.feed(xml_data)
* parser.close() # <<<<<<<<<<<<<<
* elif from_file is not None:
* try:
*/
- __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_parser->__pyx_base.__pyx_vtab)->close(__pyx_v_parser, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 930, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_parser->__pyx_base.__pyx_vtab)->close(__pyx_v_parser, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 929, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":928
+ /* "src/lxml/serializer.pxi":927
* )
*
* if xml_data is not None: # <<<<<<<<<<<<<<
goto __pyx_L10;
}
- /* "src/lxml/serializer.pxi":931
+ /* "src/lxml/serializer.pxi":930
* parser.feed(xml_data)
* parser.close()
* elif from_file is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":932
+ /* "src/lxml/serializer.pxi":931
* parser.close()
* elif from_file is not None:
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_10);
/*try:*/ {
- /* "src/lxml/serializer.pxi":933
+ /* "src/lxml/serializer.pxi":932
* elif from_file is not None:
* try:
* _parseDocument(from_file, parser, base_url=None) # <<<<<<<<<<<<<<
* except _TargetParserResult:
* pass
*/
- __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_from_file, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), Py_None)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 933, __pyx_L11_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_from_file, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), Py_None)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 932, __pyx_L11_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":932
+ /* "src/lxml/serializer.pxi":931
* parser.close()
* elif from_file is not None:
* try: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":934
+ /* "src/lxml/serializer.pxi":933
* try:
* _parseDocument(from_file, parser, base_url=None)
* except _TargetParserResult: # <<<<<<<<<<<<<<
* pass
*
*/
- __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6);
- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 934, __pyx_L13_except_error)
+ __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 933, __pyx_L13_except_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_5, __pyx_t_7);
+ __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_ErrRestore(__pyx_t_5, __pyx_t_4, __pyx_t_6);
- __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_6 = 0;
+ __Pyx_ErrRestore(__pyx_t_4, __pyx_t_6, __pyx_t_5);
+ __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0;
if (__pyx_t_11) {
__Pyx_ErrRestore(0,0,0);
goto __pyx_L12_exception_handled;
goto __pyx_L13_except_error;
__pyx_L13_except_error:;
- /* "src/lxml/serializer.pxi":932
+ /* "src/lxml/serializer.pxi":931
* parser.close()
* elif from_file is not None:
* try: # <<<<<<<<<<<<<<
__pyx_L16_try_end:;
}
- /* "src/lxml/serializer.pxi":931
+ /* "src/lxml/serializer.pxi":930
* parser.feed(xml_data)
* parser.close()
* elif from_file is not None: # <<<<<<<<<<<<<<
}
__pyx_L10:;
- /* "src/lxml/serializer.pxi":937
+ /* "src/lxml/serializer.pxi":936
* pass
*
* return sio.getvalue() if sio is not None else None # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = (__pyx_v_sio != Py_None);
if ((__pyx_t_2 != 0)) {
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_sio, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 937, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sio, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 936, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+ __pyx_t_6 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 937, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = __pyx_t_4;
- __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 936, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_5 = __pyx_t_6;
+ __pyx_t_6 = 0;
} else {
__Pyx_INCREF(Py_None);
- __pyx_t_6 = Py_None;
+ __pyx_t_5 = Py_None;
}
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":896
+ /* "src/lxml/serializer.pxi":895
* # C14N 2.0
*
* def canonicalize(xml_data=None, *, out=None, from_file=None, **options): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":940
+/* "src/lxml/serializer.pxi":939
*
*
* cdef _tree_to_target(element, target): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_tree_to_target", 0);
- /* "src/lxml/serializer.pxi":941
+ /* "src/lxml/serializer.pxi":940
*
* cdef _tree_to_target(element, target):
* for event, elem in iterwalk(element, events=('start', 'end', 'start-ns', 'comment', 'pi')): # <<<<<<<<<<<<<<
* text = None
* if event == 'start':
*/
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 940, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_element);
__Pyx_GIVEREF(__pyx_v_element);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_element);
- __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 940, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_events, __pyx_tuple__64) < 0) __PYX_ERR(9, 941, __pyx_L1_error)
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_iterwalk), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 941, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_events, __pyx_tuple__64) < 0) __PYX_ERR(9, 940, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_iterwalk), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 940, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
__pyx_t_5 = NULL;
} else {
- __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 940, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 940, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_2))) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(9, 940, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 940, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
} else {
if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(9, 940, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 940, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 941, __pyx_L1_error)
+ else __PYX_ERR(9, 940, __pyx_L1_error)
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 941, __pyx_L1_error)
+ __PYX_ERR(9, 940, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_6);
#else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 940, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 940, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 940, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
__Pyx_GOTREF(__pyx_t_1);
index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(9, 941, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(9, 940, __pyx_L1_error)
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L6_unpacking_done;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 941, __pyx_L1_error)
+ __PYX_ERR(9, 940, __pyx_L1_error)
__pyx_L6_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_event, __pyx_t_1);
__Pyx_XDECREF_SET(__pyx_v_elem, __pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":942
+ /* "src/lxml/serializer.pxi":941
* cdef _tree_to_target(element, target):
* for event, elem in iterwalk(element, events=('start', 'end', 'start-ns', 'comment', 'pi')):
* text = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__Pyx_XDECREF_SET(__pyx_v_text, Py_None);
- /* "src/lxml/serializer.pxi":943
+ /* "src/lxml/serializer.pxi":942
* for event, elem in iterwalk(element, events=('start', 'end', 'start-ns', 'comment', 'pi')):
* text = None
* if event == 'start': # <<<<<<<<<<<<<<
* target.start(elem.tag, elem.attrib)
* text = elem.text
*/
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_start, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 943, __pyx_L1_error)
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_start, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 942, __pyx_L1_error)
if (__pyx_t_9) {
- /* "src/lxml/serializer.pxi":944
+ /* "src/lxml/serializer.pxi":943
* text = None
* if event == 'start':
* target.start(elem.tag, elem.attrib) # <<<<<<<<<<<<<<
* text = elem.text
* elif event == 'end':
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 944, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 943, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 944, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 943, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_attrib); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 944, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_attrib); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 943, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_10 = NULL;
__pyx_t_11 = 0;
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_1, __pyx_t_7};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 944, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 943, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_1, __pyx_t_7};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 944, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 943, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else
#endif
{
- __pyx_t_12 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 944, __pyx_L1_error)
+ __pyx_t_12 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 943, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
if (__pyx_t_10) {
__Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL;
PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_t_7);
__pyx_t_1 = 0;
__pyx_t_7 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 944, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 943, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":945
+ /* "src/lxml/serializer.pxi":944
* if event == 'start':
* target.start(elem.tag, elem.attrib)
* text = elem.text # <<<<<<<<<<<<<<
* elif event == 'end':
* target.end(elem.tag)
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 945, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 944, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_text, __pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":943
+ /* "src/lxml/serializer.pxi":942
* for event, elem in iterwalk(element, events=('start', 'end', 'start-ns', 'comment', 'pi')):
* text = None
* if event == 'start': # <<<<<<<<<<<<<<
goto __pyx_L7;
}
- /* "src/lxml/serializer.pxi":946
+ /* "src/lxml/serializer.pxi":945
* target.start(elem.tag, elem.attrib)
* text = elem.text
* elif event == 'end': # <<<<<<<<<<<<<<
* target.end(elem.tag)
* text = elem.tail
*/
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_end, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 946, __pyx_L1_error)
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_end, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 945, __pyx_L1_error)
if (__pyx_t_9) {
- /* "src/lxml/serializer.pxi":947
+ /* "src/lxml/serializer.pxi":946
* text = elem.text
* elif event == 'end':
* target.end(elem.tag) # <<<<<<<<<<<<<<
* text = elem.tail
* elif event == 'start-ns':
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_end); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 947, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_end); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 946, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tag); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 947, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tag); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 946, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_12);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 947, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 946, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":948
+ /* "src/lxml/serializer.pxi":947
* elif event == 'end':
* target.end(elem.tag)
* text = elem.tail # <<<<<<<<<<<<<<
* elif event == 'start-ns':
* target.start_ns(*elem)
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tail); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 948, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tail); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 947, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_text, __pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":946
+ /* "src/lxml/serializer.pxi":945
* target.start(elem.tag, elem.attrib)
* text = elem.text
* elif event == 'end': # <<<<<<<<<<<<<<
goto __pyx_L7;
}
- /* "src/lxml/serializer.pxi":949
+ /* "src/lxml/serializer.pxi":948
* target.end(elem.tag)
* text = elem.tail
* elif event == 'start-ns': # <<<<<<<<<<<<<<
* target.start_ns(*elem)
* continue
*/
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_kp_s_start_ns, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 949, __pyx_L1_error)
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_kp_s_start_ns, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 948, __pyx_L1_error)
if (__pyx_t_9) {
- /* "src/lxml/serializer.pxi":950
+ /* "src/lxml/serializer.pxi":949
* text = elem.tail
* elif event == 'start-ns':
* target.start_ns(*elem) # <<<<<<<<<<<<<<
* continue
* elif event == 'comment':
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_start_ns_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 950, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_start_ns_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_elem); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 950, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_elem); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 950, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- /* "src/lxml/serializer.pxi":951
+ /* "src/lxml/serializer.pxi":950
* elif event == 'start-ns':
* target.start_ns(*elem)
* continue # <<<<<<<<<<<<<<
*/
goto __pyx_L3_continue;
- /* "src/lxml/serializer.pxi":949
+ /* "src/lxml/serializer.pxi":948
* target.end(elem.tag)
* text = elem.tail
* elif event == 'start-ns': # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":952
+ /* "src/lxml/serializer.pxi":951
* target.start_ns(*elem)
* continue
* elif event == 'comment': # <<<<<<<<<<<<<<
* target.comment(elem.text)
* text = elem.tail
*/
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_comment, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 952, __pyx_L1_error)
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_comment, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 951, __pyx_L1_error)
if (__pyx_t_9) {
- /* "src/lxml/serializer.pxi":953
+ /* "src/lxml/serializer.pxi":952
* continue
* elif event == 'comment':
* target.comment(elem.text) # <<<<<<<<<<<<<<
* text = elem.tail
* elif event == 'pi':
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_comment); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 953, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_comment); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 952, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 953, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 952, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_12 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 953, __pyx_L1_error)
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 952, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- /* "src/lxml/serializer.pxi":954
+ /* "src/lxml/serializer.pxi":953
* elif event == 'comment':
* target.comment(elem.text)
* text = elem.tail # <<<<<<<<<<<<<<
* elif event == 'pi':
* target.pi(elem.target, elem.text)
*/
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tail); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 954, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tail); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 953, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF_SET(__pyx_v_text, __pyx_t_12);
__pyx_t_12 = 0;
- /* "src/lxml/serializer.pxi":952
+ /* "src/lxml/serializer.pxi":951
* target.start_ns(*elem)
* continue
* elif event == 'comment': # <<<<<<<<<<<<<<
goto __pyx_L7;
}
- /* "src/lxml/serializer.pxi":955
+ /* "src/lxml/serializer.pxi":954
* target.comment(elem.text)
* text = elem.tail
* elif event == 'pi': # <<<<<<<<<<<<<<
* target.pi(elem.target, elem.text)
* text = elem.tail
*/
- __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_pi, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 955, __pyx_L1_error)
+ __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_pi, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 954, __pyx_L1_error)
if (__pyx_t_9) {
- /* "src/lxml/serializer.pxi":956
+ /* "src/lxml/serializer.pxi":955
* text = elem.tail
* elif event == 'pi':
* target.pi(elem.target, elem.text) # <<<<<<<<<<<<<<
* text = elem.tail
* if text:
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_pi); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 956, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_pi); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 955, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_target); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 956, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_target); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 955, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_text); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 956, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_text); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 955, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_1 = NULL;
__pyx_t_11 = 0;
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_3, __pyx_t_7};
- __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 956, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 955, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_3, __pyx_t_7};
- __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 956, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 955, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
{
- __pyx_t_10 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 956, __pyx_L1_error)
+ __pyx_t_10 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 955, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (__pyx_t_1) {
__Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __pyx_t_1 = NULL;
PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_11, __pyx_t_7);
__pyx_t_3 = 0;
__pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 956, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 955, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- /* "src/lxml/serializer.pxi":957
+ /* "src/lxml/serializer.pxi":956
* elif event == 'pi':
* target.pi(elem.target, elem.text)
* text = elem.tail # <<<<<<<<<<<<<<
* if text:
* target.data(text)
*/
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tail); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 957, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tail); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 956, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF_SET(__pyx_v_text, __pyx_t_12);
__pyx_t_12 = 0;
- /* "src/lxml/serializer.pxi":955
+ /* "src/lxml/serializer.pxi":954
* target.comment(elem.text)
* text = elem.tail
* elif event == 'pi': # <<<<<<<<<<<<<<
}
__pyx_L7:;
- /* "src/lxml/serializer.pxi":958
+ /* "src/lxml/serializer.pxi":957
* target.pi(elem.target, elem.text)
* text = elem.tail
* if text: # <<<<<<<<<<<<<<
* target.data(text)
* return target.close()
*/
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_text); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 958, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_text); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 957, __pyx_L1_error)
if (__pyx_t_9) {
- /* "src/lxml/serializer.pxi":959
+ /* "src/lxml/serializer.pxi":958
* text = elem.tail
* if text:
* target.data(text) # <<<<<<<<<<<<<<
* return target.close()
*
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 959, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 958, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
}
__pyx_t_12 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_10, __pyx_v_text) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_text);
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 959, __pyx_L1_error)
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 958, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- /* "src/lxml/serializer.pxi":958
+ /* "src/lxml/serializer.pxi":957
* target.pi(elem.target, elem.text)
* text = elem.tail
* if text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":941
+ /* "src/lxml/serializer.pxi":940
*
* cdef _tree_to_target(element, target):
* for event, elem in iterwalk(element, events=('start', 'end', 'start-ns', 'comment', 'pi')): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":960
+ /* "src/lxml/serializer.pxi":959
* if text:
* target.data(text)
* return target.close() # <<<<<<<<<<<<<<
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_close); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 960, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_close); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 959, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
}
__pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 960, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 959, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":940
+ /* "src/lxml/serializer.pxi":939
*
*
* cdef _tree_to_target(element, target): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1002
+/* "src/lxml/serializer.pxi":1001
* cdef bint _root_done
*
* def __init__(self, write, *, # <<<<<<<<<<<<<<
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_write,&__pyx_n_s_with_comments,&__pyx_n_s_strip_text,&__pyx_n_s_rewrite_prefixes,&__pyx_n_s_qname_aware_tags,&__pyx_n_s_qname_aware_attrs,&__pyx_n_s_exclude_attrs,&__pyx_n_s_exclude_tags,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
- /* "src/lxml/serializer.pxi":1003
+ /* "src/lxml/serializer.pxi":1002
*
* def __init__(self, write, *,
* with_comments=False, strip_text=False, rewrite_prefixes=False, # <<<<<<<<<<<<<<
values[2] = ((PyObject *)Py_False);
values[3] = ((PyObject *)Py_False);
- /* "src/lxml/serializer.pxi":1004
+ /* "src/lxml/serializer.pxi":1003
* def __init__(self, write, *,
* with_comments=False, strip_text=False, rewrite_prefixes=False,
* qname_aware_tags=None, qname_aware_attrs=None, # <<<<<<<<<<<<<<
values[4] = ((PyObject *)Py_None);
values[5] = ((PyObject *)Py_None);
- /* "src/lxml/serializer.pxi":1005
+ /* "src/lxml/serializer.pxi":1004
* with_comments=False, strip_text=False, rewrite_prefixes=False,
* qname_aware_tags=None, qname_aware_attrs=None,
* exclude_attrs=None, exclude_tags=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(9, 1002, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(9, 1001, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1002, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1001, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.C14NWriterTarget.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_4lxml_5etree_16C14NWriterTarget___init__(((struct __pyx_obj_4lxml_5etree_C14NWriterTarget *)__pyx_v_self), __pyx_v_write, __pyx_v_with_comments, __pyx_v_strip_text, __pyx_v_rewrite_prefixes, __pyx_v_qname_aware_tags, __pyx_v_qname_aware_attrs, __pyx_v_exclude_attrs, __pyx_v_exclude_tags);
- /* "src/lxml/serializer.pxi":1002
+ /* "src/lxml/serializer.pxi":1001
* cdef bint _root_done
*
* def __init__(self, write, *, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__init__", 0);
- /* "src/lxml/serializer.pxi":1006
+ /* "src/lxml/serializer.pxi":1005
* qname_aware_tags=None, qname_aware_attrs=None,
* exclude_attrs=None, exclude_tags=None):
* self._write = write # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_write);
__pyx_v_self->_write = __pyx_v_write;
- /* "src/lxml/serializer.pxi":1007
+ /* "src/lxml/serializer.pxi":1006
* exclude_attrs=None, exclude_tags=None):
* self._write = write
* self._data = [] # <<<<<<<<<<<<<<
* self._with_comments = with_comments
* self._strip_text = strip_text
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1007, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1006, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_data);
__pyx_v_self->_data = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1008
+ /* "src/lxml/serializer.pxi":1007
* self._write = write
* self._data = []
* self._with_comments = with_comments # <<<<<<<<<<<<<<
* self._strip_text = strip_text
* self._exclude_attrs = set(exclude_attrs) if exclude_attrs else None
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_with_comments); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1008, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_with_comments); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1007, __pyx_L1_error)
__pyx_v_self->_with_comments = __pyx_t_2;
- /* "src/lxml/serializer.pxi":1009
+ /* "src/lxml/serializer.pxi":1008
* self._data = []
* self._with_comments = with_comments
* self._strip_text = strip_text # <<<<<<<<<<<<<<
* self._exclude_attrs = set(exclude_attrs) if exclude_attrs else None
* self._exclude_tags = set(exclude_tags) if exclude_tags else None
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strip_text); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1009, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strip_text); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1008, __pyx_L1_error)
__pyx_v_self->_strip_text = __pyx_t_2;
- /* "src/lxml/serializer.pxi":1010
+ /* "src/lxml/serializer.pxi":1009
* self._with_comments = with_comments
* self._strip_text = strip_text
* self._exclude_attrs = set(exclude_attrs) if exclude_attrs else None # <<<<<<<<<<<<<<
* self._exclude_tags = set(exclude_tags) if exclude_tags else None
*
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_exclude_attrs); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1010, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_exclude_attrs); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1009, __pyx_L1_error)
if (__pyx_t_2) {
- __pyx_t_3 = PySet_New(__pyx_v_exclude_attrs); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1010, __pyx_L1_error)
+ __pyx_t_3 = PySet_New(__pyx_v_exclude_attrs); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1009, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = __pyx_t_3;
__pyx_t_3 = 0;
__pyx_v_self->_exclude_attrs = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1011
+ /* "src/lxml/serializer.pxi":1010
* self._strip_text = strip_text
* self._exclude_attrs = set(exclude_attrs) if exclude_attrs else None
* self._exclude_tags = set(exclude_tags) if exclude_tags else None # <<<<<<<<<<<<<<
*
* self._rewrite_prefixes = rewrite_prefixes
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_exclude_tags); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1011, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_exclude_tags); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1010, __pyx_L1_error)
if (__pyx_t_2) {
- __pyx_t_3 = PySet_New(__pyx_v_exclude_tags); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1011, __pyx_L1_error)
+ __pyx_t_3 = PySet_New(__pyx_v_exclude_tags); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1010, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = __pyx_t_3;
__pyx_t_3 = 0;
__pyx_v_self->_exclude_tags = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1013
+ /* "src/lxml/serializer.pxi":1012
* self._exclude_tags = set(exclude_tags) if exclude_tags else None
*
* self._rewrite_prefixes = rewrite_prefixes # <<<<<<<<<<<<<<
* if qname_aware_tags:
* self._qname_aware_tags = set(qname_aware_tags)
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_rewrite_prefixes); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1013, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_rewrite_prefixes); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1012, __pyx_L1_error)
__pyx_v_self->_rewrite_prefixes = __pyx_t_2;
- /* "src/lxml/serializer.pxi":1014
+ /* "src/lxml/serializer.pxi":1013
*
* self._rewrite_prefixes = rewrite_prefixes
* if qname_aware_tags: # <<<<<<<<<<<<<<
* self._qname_aware_tags = set(qname_aware_tags)
* else:
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_qname_aware_tags); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1014, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_qname_aware_tags); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1013, __pyx_L1_error)
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1015
+ /* "src/lxml/serializer.pxi":1014
* self._rewrite_prefixes = rewrite_prefixes
* if qname_aware_tags:
* self._qname_aware_tags = set(qname_aware_tags) # <<<<<<<<<<<<<<
* else:
* self._qname_aware_tags = None
*/
- __pyx_t_1 = PySet_New(__pyx_v_qname_aware_tags); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1015, __pyx_L1_error)
+ __pyx_t_1 = PySet_New(__pyx_v_qname_aware_tags); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1014, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_qname_aware_tags);
__pyx_v_self->_qname_aware_tags = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1014
+ /* "src/lxml/serializer.pxi":1013
*
* self._rewrite_prefixes = rewrite_prefixes
* if qname_aware_tags: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/serializer.pxi":1017
+ /* "src/lxml/serializer.pxi":1016
* self._qname_aware_tags = set(qname_aware_tags)
* else:
* self._qname_aware_tags = None # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "src/lxml/serializer.pxi":1018
+ /* "src/lxml/serializer.pxi":1017
* else:
* self._qname_aware_tags = None
* if qname_aware_attrs: # <<<<<<<<<<<<<<
* self._find_qname_aware_attrs = set(qname_aware_attrs).intersection
* else:
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_qname_aware_attrs); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1018, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_qname_aware_attrs); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1017, __pyx_L1_error)
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1019
+ /* "src/lxml/serializer.pxi":1018
* self._qname_aware_tags = None
* if qname_aware_attrs:
* self._find_qname_aware_attrs = set(qname_aware_attrs).intersection # <<<<<<<<<<<<<<
* else:
* self._find_qname_aware_attrs = None
*/
- __pyx_t_1 = PySet_New(__pyx_v_qname_aware_attrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1019, __pyx_L1_error)
+ __pyx_t_1 = PySet_New(__pyx_v_qname_aware_attrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1018, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_intersection); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1019, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_intersection); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1018, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_GIVEREF(__pyx_t_3);
__pyx_v_self->_find_qname_aware_attrs = __pyx_t_3;
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1018
+ /* "src/lxml/serializer.pxi":1017
* else:
* self._qname_aware_tags = None
* if qname_aware_attrs: # <<<<<<<<<<<<<<
goto __pyx_L4;
}
- /* "src/lxml/serializer.pxi":1021
+ /* "src/lxml/serializer.pxi":1020
* self._find_qname_aware_attrs = set(qname_aware_attrs).intersection
* else:
* self._find_qname_aware_attrs = None # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "src/lxml/serializer.pxi":1024
+ /* "src/lxml/serializer.pxi":1023
*
* # Stack with globally and newly declared namespaces as (uri, prefix) pairs.
* self._declared_ns_stack = [[ # <<<<<<<<<<<<<<
* ("http://www.w3.org/XML/1998/namespace", "xml"),
* ]]
*/
- __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1024, __pyx_L1_error)
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1023, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_tuple__65);
__Pyx_GIVEREF(__pyx_tuple__65);
PyList_SET_ITEM(__pyx_t_3, 0, __pyx_tuple__65);
- __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1024, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1023, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_3);
PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
__pyx_v_self->_declared_ns_stack = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1028
+ /* "src/lxml/serializer.pxi":1027
* ]]
* # Stack with user declared namespace prefixes as (uri, prefix) pairs.
* self._ns_stack = [] # <<<<<<<<<<<<<<
* if not rewrite_prefixes:
* self._ns_stack.append(_DEFAULT_NAMESPACE_PREFIXES.items())
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1028, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1027, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_ns_stack);
__pyx_v_self->_ns_stack = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1029
+ /* "src/lxml/serializer.pxi":1028
* # Stack with user declared namespace prefixes as (uri, prefix) pairs.
* self._ns_stack = []
* if not rewrite_prefixes: # <<<<<<<<<<<<<<
* self._ns_stack.append(_DEFAULT_NAMESPACE_PREFIXES.items())
* self._ns_stack.append([])
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_rewrite_prefixes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1029, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_rewrite_prefixes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1028, __pyx_L1_error)
__pyx_t_4 = ((!__pyx_t_2) != 0);
if (__pyx_t_4) {
- /* "src/lxml/serializer.pxi":1030
+ /* "src/lxml/serializer.pxi":1029
* self._ns_stack = []
* if not rewrite_prefixes:
* self._ns_stack.append(_DEFAULT_NAMESPACE_PREFIXES.items()) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_ns_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(9, 1030, __pyx_L1_error)
+ __PYX_ERR(9, 1029, __pyx_L1_error)
}
if (unlikely(__pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
- __PYX_ERR(9, 1030, __pyx_L1_error)
+ __PYX_ERR(9, 1029, __pyx_L1_error)
}
- __pyx_t_1 = __Pyx_PyDict_Items(__pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1030, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_Items(__pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1029, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_ns_stack, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 1030, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_ns_stack, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 1029, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1029
+ /* "src/lxml/serializer.pxi":1028
* # Stack with user declared namespace prefixes as (uri, prefix) pairs.
* self._ns_stack = []
* if not rewrite_prefixes: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1031
+ /* "src/lxml/serializer.pxi":1030
* if not rewrite_prefixes:
* self._ns_stack.append(_DEFAULT_NAMESPACE_PREFIXES.items())
* self._ns_stack.append([]) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_ns_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(9, 1031, __pyx_L1_error)
+ __PYX_ERR(9, 1030, __pyx_L1_error)
}
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1031, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1030, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_ns_stack, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 1031, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_ns_stack, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 1030, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1032
+ /* "src/lxml/serializer.pxi":1031
* self._ns_stack.append(_DEFAULT_NAMESPACE_PREFIXES.items())
* self._ns_stack.append([])
* self._prefix_map = {} # <<<<<<<<<<<<<<
* self._preserve_space = [False]
* self._pending_start = None
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1032, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1031, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_prefix_map);
__pyx_v_self->_prefix_map = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1033
+ /* "src/lxml/serializer.pxi":1032
* self._ns_stack.append([])
* self._prefix_map = {}
* self._preserve_space = [False] # <<<<<<<<<<<<<<
* self._pending_start = None
* self._ignored_depth = 0
*/
- __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1033, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1032, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(Py_False);
__Pyx_GIVEREF(Py_False);
__pyx_v_self->_preserve_space = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1034
+ /* "src/lxml/serializer.pxi":1033
* self._prefix_map = {}
* self._preserve_space = [False]
* self._pending_start = None # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_pending_start);
__pyx_v_self->_pending_start = ((PyObject*)Py_None);
- /* "src/lxml/serializer.pxi":1035
+ /* "src/lxml/serializer.pxi":1034
* self._preserve_space = [False]
* self._pending_start = None
* self._ignored_depth = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_self->_ignored_depth = 0;
- /* "src/lxml/serializer.pxi":1036
+ /* "src/lxml/serializer.pxi":1035
* self._pending_start = None
* self._ignored_depth = 0
* self._root_seen = False # <<<<<<<<<<<<<<
*/
__pyx_v_self->_root_seen = 0;
- /* "src/lxml/serializer.pxi":1037
+ /* "src/lxml/serializer.pxi":1036
* self._ignored_depth = 0
* self._root_seen = False
* self._root_done = False # <<<<<<<<<<<<<<
*/
__pyx_v_self->_root_done = 0;
- /* "src/lxml/serializer.pxi":1002
+ /* "src/lxml/serializer.pxi":1001
* cdef bint _root_done
*
* def __init__(self, write, *, # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_16C14NWriterTarget_4generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1039
+/* "src/lxml/serializer.pxi":1038
* self._root_done = False
*
* def _iter_namespaces(self, ns_stack): # <<<<<<<<<<<<<<
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_1__iter_namespaces *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1039, __pyx_L1_error)
+ __PYX_ERR(9, 1038, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_ns_stack);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ns_stack);
{
- __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_16C14NWriterTarget_4generator1, __pyx_codeobj__66, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter_namespaces, __pyx_n_s_C14NWriterTarget__iter_namespace, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1039, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_16C14NWriterTarget_4generator1, __pyx_codeobj__66, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter_namespaces, __pyx_n_s_C14NWriterTarget__iter_namespace, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1038, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1039, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1038, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1040
+ /* "src/lxml/serializer.pxi":1039
*
* def _iter_namespaces(self, ns_stack):
* for namespaces in reversed(ns_stack): # <<<<<<<<<<<<<<
* if namespaces: # almost no element declares new namespaces
* yield from namespaces
*/
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_reversed, __pyx_cur_scope->__pyx_v_ns_stack); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1040, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_reversed, __pyx_cur_scope->__pyx_v_ns_stack); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1039, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
__pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
__pyx_t_4 = NULL;
} else {
- __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1040, __pyx_L1_error)
+ __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1039, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1040, __pyx_L1_error)
+ __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1039, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_2))) {
if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(9, 1040, __pyx_L1_error)
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(9, 1039, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1040, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1039, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(9, 1040, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(9, 1039, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1040, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1039, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 1040, __pyx_L1_error)
+ else __PYX_ERR(9, 1039, __pyx_L1_error)
}
break;
}
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1041
+ /* "src/lxml/serializer.pxi":1040
* def _iter_namespaces(self, ns_stack):
* for namespaces in reversed(ns_stack):
* if namespaces: # almost no element declares new namespaces # <<<<<<<<<<<<<<
* yield from namespaces
*
*/
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_namespaces); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1041, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_namespaces); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1040, __pyx_L1_error)
if (__pyx_t_5) {
- /* "src/lxml/serializer.pxi":1042
+ /* "src/lxml/serializer.pxi":1041
* for namespaces in reversed(ns_stack):
* if namespaces: # almost no element declares new namespaces
* yield from namespaces # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_2);
__pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
__pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1042, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1041, __pyx_L1_error)
} else {
PyObject* exc_type = __Pyx_PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
- else __PYX_ERR(9, 1042, __pyx_L1_error)
+ else __PYX_ERR(9, 1041, __pyx_L1_error)
}
}
- /* "src/lxml/serializer.pxi":1041
+ /* "src/lxml/serializer.pxi":1040
* def _iter_namespaces(self, ns_stack):
* for namespaces in reversed(ns_stack):
* if namespaces: # almost no element declares new namespaces # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1040
+ /* "src/lxml/serializer.pxi":1039
*
* def _iter_namespaces(self, ns_stack):
* for namespaces in reversed(ns_stack): # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1039
+ /* "src/lxml/serializer.pxi":1038
* self._root_done = False
*
* def _iter_namespaces(self, ns_stack): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1044
+/* "src/lxml/serializer.pxi":1043
* yield from namespaces
*
* cdef _resolve_prefix_name(self, prefixed_name): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_resolve_prefix_name", 0);
- /* "src/lxml/serializer.pxi":1045
+ /* "src/lxml/serializer.pxi":1044
*
* cdef _resolve_prefix_name(self, prefixed_name):
* prefix, name = prefixed_name.split(':', 1) # <<<<<<<<<<<<<<
* for uri, p in self._iter_namespaces(self._ns_stack):
* if p == prefix:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_prefixed_name, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1045, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_prefixed_name, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1044, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1045, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1044, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1045, __pyx_L1_error)
+ __PYX_ERR(9, 1044, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_3);
#else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1045, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1044, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1045, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1044, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1045, __pyx_L1_error)
+ __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1044, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
__Pyx_GOTREF(__pyx_t_1);
index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
__Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(9, 1045, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(9, 1044, __pyx_L1_error)
__pyx_t_5 = NULL;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L4_unpacking_done;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_5 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1045, __pyx_L1_error)
+ __PYX_ERR(9, 1044, __pyx_L1_error)
__pyx_L4_unpacking_done:;
}
__pyx_v_prefix = __pyx_t_1;
__pyx_v_name = __pyx_t_3;
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1046
+ /* "src/lxml/serializer.pxi":1045
* cdef _resolve_prefix_name(self, prefixed_name):
* prefix, name = prefixed_name.split(':', 1)
* for uri, p in self._iter_namespaces(self._ns_stack): # <<<<<<<<<<<<<<
* if p == prefix:
* return f'{{{uri}}}{name}'
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iter_namespaces); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iter_namespaces); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1045, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_v_self->_ns_stack) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->_ns_stack);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1045, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
__pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
} else {
- __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1045, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1045, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_3))) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(9, 1045, __pyx_L1_error)
#else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1045, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
} else {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(9, 1045, __pyx_L1_error)
#else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1045, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 1046, __pyx_L1_error)
+ else __PYX_ERR(9, 1045, __pyx_L1_error)
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1046, __pyx_L1_error)
+ __PYX_ERR(9, 1045, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_4);
#else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1045, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1045, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1045, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_5 = Py_TYPE(__pyx_t_8)->tp_iternext;
__Pyx_GOTREF(__pyx_t_1);
index = 1; __pyx_t_4 = __pyx_t_5(__pyx_t_8); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed;
__Pyx_GOTREF(__pyx_t_4);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_8), 2) < 0) __PYX_ERR(9, 1046, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_8), 2) < 0) __PYX_ERR(9, 1045, __pyx_L1_error)
__pyx_t_5 = NULL;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L8_unpacking_done;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_5 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1046, __pyx_L1_error)
+ __PYX_ERR(9, 1045, __pyx_L1_error)
__pyx_L8_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_uri, __pyx_t_1);
__Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1047
+ /* "src/lxml/serializer.pxi":1046
* prefix, name = prefixed_name.split(':', 1)
* for uri, p in self._iter_namespaces(self._ns_stack):
* if p == prefix: # <<<<<<<<<<<<<<
* return f'{{{uri}}}{name}'
* raise ValueError(f'Prefix {prefix} of QName "{prefixed_name}" is not declared in scope')
*/
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_p, __pyx_v_prefix, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1047, __pyx_L1_error)
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 1047, __pyx_L1_error)
+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_p, __pyx_v_prefix, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1046, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(9, 1046, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_9) {
- /* "src/lxml/serializer.pxi":1048
+ /* "src/lxml/serializer.pxi":1047
* for uri, p in self._iter_namespaces(self._ns_stack):
* if p == prefix:
* return f'{{{uri}}}{name}' # <<<<<<<<<<<<<<
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1048, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1047, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_10 = 0;
__pyx_t_11 = 127;
__pyx_t_10 += 1;
__Pyx_GIVEREF(__pyx_kp_u__31);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__31);
- __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_uri, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1048, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_uri, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1047, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_11;
__pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__pyx_t_10 += 1;
__Pyx_GIVEREF(__pyx_kp_u__32);
PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__32);
- __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1048, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1047, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_11;
__pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_4);
__pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1048, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1047, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_4;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1047
+ /* "src/lxml/serializer.pxi":1046
* prefix, name = prefixed_name.split(':', 1)
* for uri, p in self._iter_namespaces(self._ns_stack):
* if p == prefix: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1046
+ /* "src/lxml/serializer.pxi":1045
* cdef _resolve_prefix_name(self, prefixed_name):
* prefix, name = prefixed_name.split(':', 1)
* for uri, p in self._iter_namespaces(self._ns_stack): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1049
+ /* "src/lxml/serializer.pxi":1048
* if p == prefix:
* return f'{{{uri}}}{name}'
* raise ValueError(f'Prefix {prefix} of QName "{prefixed_name}" is not declared in scope') # <<<<<<<<<<<<<<
*
* cdef _qname(self, qname, uri=None):
*/
- __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1049, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_6 = 0;
__pyx_t_11 = 127;
__pyx_t_6 += 7;
__Pyx_GIVEREF(__pyx_kp_u_Prefix);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_Prefix);
- __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_prefix, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1049, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_prefix, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_11;
__pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__pyx_t_6 += 11;
__Pyx_GIVEREF(__pyx_kp_u_of_QName);
PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u_of_QName);
- __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_prefixed_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1049, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_prefixed_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_11;
__pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__pyx_t_6 += 26;
__Pyx_GIVEREF(__pyx_kp_u_is_not_declared_in_scope);
PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_kp_u_is_not_declared_in_scope);
- __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_3, 5, __pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1049, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_3, 5, __pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1049, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(9, 1049, __pyx_L1_error)
+ __PYX_ERR(9, 1048, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1044
+ /* "src/lxml/serializer.pxi":1043
* yield from namespaces
*
* cdef _resolve_prefix_name(self, prefixed_name): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1051
+/* "src/lxml/serializer.pxi":1050
* raise ValueError(f'Prefix {prefix} of QName "{prefixed_name}" is not declared in scope')
*
* cdef _qname(self, qname, uri=None): # <<<<<<<<<<<<<<
}
__Pyx_INCREF(__pyx_v_uri);
- /* "src/lxml/serializer.pxi":1052
+ /* "src/lxml/serializer.pxi":1051
*
* cdef _qname(self, qname, uri=None):
* if uri is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1053
+ /* "src/lxml/serializer.pxi":1052
* cdef _qname(self, qname, uri=None):
* if uri is None:
* uri, tag = qname[1:].rsplit('}', 1) if qname[:1] == '{' else ('', qname) # <<<<<<<<<<<<<<
* else:
* tag = qname
*/
- __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_qname, 0, 1, NULL, NULL, &__pyx_slice__41, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_qname, 0, 1, NULL, NULL, &__pyx_slice__41, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_kp_s__31, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_kp_s__31, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_2) {
- __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_qname, 1, 0, NULL, NULL, &__pyx_slice__68, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_qname, 1, 0, NULL, NULL, &__pyx_slice__68, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_rsplit); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_rsplit); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
} else {
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_kp_s__12);
__Pyx_GIVEREF(__pyx_kp_s__12);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1053, __pyx_L1_error)
+ __PYX_ERR(9, 1052, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(9, 1053, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(9, 1052, __pyx_L1_error)
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L5_unpacking_done;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1053, __pyx_L1_error)
+ __PYX_ERR(9, 1052, __pyx_L1_error)
__pyx_L5_unpacking_done:;
}
__Pyx_DECREF_SET(__pyx_v_uri, __pyx_t_4);
__pyx_v_tag = __pyx_t_5;
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1052
+ /* "src/lxml/serializer.pxi":1051
*
* cdef _qname(self, qname, uri=None):
* if uri is None: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/serializer.pxi":1055
+ /* "src/lxml/serializer.pxi":1054
* uri, tag = qname[1:].rsplit('}', 1) if qname[:1] == '{' else ('', qname)
* else:
* tag = qname # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "src/lxml/serializer.pxi":1057
+ /* "src/lxml/serializer.pxi":1056
* tag = qname
*
* prefixes_seen = set() # <<<<<<<<<<<<<<
* for u, prefix in self._iter_namespaces(self._declared_ns_stack):
* if u == uri and prefix not in prefixes_seen:
*/
- __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1057, __pyx_L1_error)
+ __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1056, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_prefixes_seen = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1058
+ /* "src/lxml/serializer.pxi":1057
*
* prefixes_seen = set()
* for u, prefix in self._iter_namespaces(self._declared_ns_stack): # <<<<<<<<<<<<<<
* if u == uri and prefix not in prefixes_seen:
* return f'{prefix}:{tag}' if prefix else tag, tag, uri
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iter_namespaces); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iter_namespaces); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1057, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
}
__pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_self->_declared_ns_stack) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->_declared_ns_stack);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1057, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
__pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
} else {
- __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1057, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1057, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_5))) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1057, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1057, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
} else {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1057, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1057, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 1058, __pyx_L1_error)
+ else __PYX_ERR(9, 1057, __pyx_L1_error)
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1058, __pyx_L1_error)
+ __PYX_ERR(9, 1057, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_6);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1057, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1057, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_10 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1057, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_10)->tp_iternext;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_6 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 2) < 0) __PYX_ERR(9, 1058, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 2) < 0) __PYX_ERR(9, 1057, __pyx_L1_error)
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L9_unpacking_done;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1058, __pyx_L1_error)
+ __PYX_ERR(9, 1057, __pyx_L1_error)
__pyx_L9_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_u, __pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1059
+ /* "src/lxml/serializer.pxi":1058
* prefixes_seen = set()
* for u, prefix in self._iter_namespaces(self._declared_ns_stack):
* if u == uri and prefix not in prefixes_seen: # <<<<<<<<<<<<<<
* return f'{prefix}:{tag}' if prefix else tag, tag, uri
* prefixes_seen.add(prefix)
*/
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_u, __pyx_v_uri, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1059, __pyx_L1_error)
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1059, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_u, __pyx_v_uri, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1058, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1058, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L11_bool_binop_done;
}
- __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_prefix, __pyx_v_prefixes_seen, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1059, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_prefix, __pyx_v_prefixes_seen, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1058, __pyx_L1_error)
__pyx_t_11 = (__pyx_t_1 != 0);
__pyx_t_2 = __pyx_t_11;
__pyx_L11_bool_binop_done:;
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1060
+ /* "src/lxml/serializer.pxi":1059
* for u, prefix in self._iter_namespaces(self._declared_ns_stack):
* if u == uri and prefix not in prefixes_seen:
* return f'{prefix}:{tag}' if prefix else tag, tag, uri # <<<<<<<<<<<<<<
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1060, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1059, __pyx_L1_error)
if (__pyx_t_2) {
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1060, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1059, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_12 = 0;
__pyx_t_13 = 127;
- __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_prefix, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1060, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_prefix, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1059, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_13;
__pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__pyx_t_12 += 1;
__Pyx_GIVEREF(__pyx_kp_u__17);
PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_kp_u__17);
- __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1060, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1059, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_13;
__pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4);
__pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1060, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1059, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_3 = __pyx_t_4;
__Pyx_INCREF(__pyx_v_tag);
__pyx_t_3 = __pyx_v_tag;
}
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1060, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1059, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1059
+ /* "src/lxml/serializer.pxi":1058
* prefixes_seen = set()
* for u, prefix in self._iter_namespaces(self._declared_ns_stack):
* if u == uri and prefix not in prefixes_seen: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1061
+ /* "src/lxml/serializer.pxi":1060
* if u == uri and prefix not in prefixes_seen:
* return f'{prefix}:{tag}' if prefix else tag, tag, uri
* prefixes_seen.add(prefix) # <<<<<<<<<<<<<<
*
* # Not declared yet => add new declaration.
*/
- __pyx_t_14 = PySet_Add(__pyx_v_prefixes_seen, __pyx_v_prefix); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(9, 1061, __pyx_L1_error)
+ __pyx_t_14 = PySet_Add(__pyx_v_prefixes_seen, __pyx_v_prefix); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(9, 1060, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1058
+ /* "src/lxml/serializer.pxi":1057
*
* prefixes_seen = set()
* for u, prefix in self._iter_namespaces(self._declared_ns_stack): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1064
+ /* "src/lxml/serializer.pxi":1063
*
* # Not declared yet => add new declaration.
* if self._rewrite_prefixes: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_self->_rewrite_prefixes != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1065
+ /* "src/lxml/serializer.pxi":1064
* # Not declared yet => add new declaration.
* if self._rewrite_prefixes:
* if uri in self._prefix_map: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_prefix_map == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1065, __pyx_L1_error)
+ __PYX_ERR(9, 1064, __pyx_L1_error)
}
- __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_uri, __pyx_v_self->_prefix_map, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1065, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_uri, __pyx_v_self->_prefix_map, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1064, __pyx_L1_error)
__pyx_t_11 = (__pyx_t_2 != 0);
if (__pyx_t_11) {
- /* "src/lxml/serializer.pxi":1066
+ /* "src/lxml/serializer.pxi":1065
* if self._rewrite_prefixes:
* if uri in self._prefix_map:
* prefix = self._prefix_map[uri] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_prefix_map == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1066, __pyx_L1_error)
+ __PYX_ERR(9, 1065, __pyx_L1_error)
}
- __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_self->_prefix_map, __pyx_v_uri); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1066, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_self->_prefix_map, __pyx_v_uri); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1065, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_5);
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1065
+ /* "src/lxml/serializer.pxi":1064
* # Not declared yet => add new declaration.
* if self._rewrite_prefixes:
* if uri in self._prefix_map: # <<<<<<<<<<<<<<
goto __pyx_L14;
}
- /* "src/lxml/serializer.pxi":1068
+ /* "src/lxml/serializer.pxi":1067
* prefix = self._prefix_map[uri]
* else:
* prefix = self._prefix_map[uri] = f'n{len(self._prefix_map)}' # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_t_5);
if (unlikely(__pyx_t_5 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(9, 1068, __pyx_L1_error)
+ __PYX_ERR(9, 1067, __pyx_L1_error)
}
- __pyx_t_8 = PyDict_Size(__pyx_t_5); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1068, __pyx_L1_error)
+ __pyx_t_8 = PyDict_Size(__pyx_t_5); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1067, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_8, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1068, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_8, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1067, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_n_u_n, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1068, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_n_u_n, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1067, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_INCREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_4);
if (unlikely(__pyx_v_self->_prefix_map == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1068, __pyx_L1_error)
+ __PYX_ERR(9, 1067, __pyx_L1_error)
}
- if (unlikely(PyDict_SetItem(__pyx_v_self->_prefix_map, __pyx_v_uri, __pyx_t_4) < 0)) __PYX_ERR(9, 1068, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_self->_prefix_map, __pyx_v_uri, __pyx_t_4) < 0)) __PYX_ERR(9, 1067, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
__pyx_L14:;
- /* "src/lxml/serializer.pxi":1069
+ /* "src/lxml/serializer.pxi":1068
* else:
* prefix = self._prefix_map[uri] = f'n{len(self._prefix_map)}'
* self._declared_ns_stack[-1].append((uri, prefix)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_declared_ns_stack == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1069, __pyx_L1_error)
+ __PYX_ERR(9, 1068, __pyx_L1_error)
}
- __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_self->_declared_ns_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1069, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_self->_declared_ns_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1068, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1069, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1068, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_uri);
__Pyx_GIVEREF(__pyx_v_uri);
__Pyx_INCREF(__pyx_v_prefix);
__Pyx_GIVEREF(__pyx_v_prefix);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_prefix);
- __pyx_t_14 = __Pyx_PyObject_Append(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(9, 1069, __pyx_L1_error)
+ __pyx_t_14 = __Pyx_PyObject_Append(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(9, 1068, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1070
+ /* "src/lxml/serializer.pxi":1069
* prefix = self._prefix_map[uri] = f'n{len(self._prefix_map)}'
* self._declared_ns_stack[-1].append((uri, prefix))
* return f'{prefix}:{tag}', tag, uri # <<<<<<<<<<<<<<
* if not uri and '' not in prefixes_seen:
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1070, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1069, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_8 = 0;
__pyx_t_13 = 127;
- __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_prefix, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1070, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_prefix, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1069, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_13;
__pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__pyx_t_8 += 1;
__Pyx_GIVEREF(__pyx_kp_u__17);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_kp_u__17);
- __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1070, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1069, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_13;
__pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
__pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_8, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1070, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_8, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1069, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1070, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1069, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
__pyx_t_5 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1064
+ /* "src/lxml/serializer.pxi":1063
*
* # Not declared yet => add new declaration.
* if self._rewrite_prefixes: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1072
+ /* "src/lxml/serializer.pxi":1071
* return f'{prefix}:{tag}', tag, uri
*
* if not uri and '' not in prefixes_seen: # <<<<<<<<<<<<<<
* # No default namespace declared => no prefix needed.
* return tag, tag, uri
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_uri); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1072, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_uri); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1071, __pyx_L1_error)
__pyx_t_1 = ((!__pyx_t_2) != 0);
if (__pyx_t_1) {
} else {
__pyx_t_11 = __pyx_t_1;
goto __pyx_L16_bool_binop_done;
}
- __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_kp_s__12, __pyx_v_prefixes_seen, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1072, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_kp_s__12, __pyx_v_prefixes_seen, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1071, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_1 != 0);
__pyx_t_11 = __pyx_t_2;
__pyx_L16_bool_binop_done:;
if (__pyx_t_11) {
- /* "src/lxml/serializer.pxi":1074
+ /* "src/lxml/serializer.pxi":1073
* if not uri and '' not in prefixes_seen:
* # No default namespace declared => no prefix needed.
* return tag, tag, uri # <<<<<<<<<<<<<<
* for u, prefix in self._iter_namespaces(self._ns_stack):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1074, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1073, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_tag);
__Pyx_GIVEREF(__pyx_v_tag);
__pyx_t_5 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1072
+ /* "src/lxml/serializer.pxi":1071
* return f'{prefix}:{tag}', tag, uri
*
* if not uri and '' not in prefixes_seen: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1076
+ /* "src/lxml/serializer.pxi":1075
* return tag, tag, uri
*
* for u, prefix in self._iter_namespaces(self._ns_stack): # <<<<<<<<<<<<<<
* if u == uri:
* self._declared_ns_stack[-1].append((uri, prefix))
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iter_namespaces); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iter_namespaces); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
}
__pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_self->_ns_stack) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_self->_ns_stack);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
__pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
} else {
- __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1075, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_4))) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1075, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
} else {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1075, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 1076, __pyx_L1_error)
+ else __PYX_ERR(9, 1075, __pyx_L1_error)
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1076, __pyx_L1_error)
+ __PYX_ERR(9, 1075, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_6);
#else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_10 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_10)->tp_iternext;
__Pyx_GOTREF(__pyx_t_3);
index = 1; __pyx_t_6 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_6)) goto __pyx_L20_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 2) < 0) __PYX_ERR(9, 1076, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 2) < 0) __PYX_ERR(9, 1075, __pyx_L1_error)
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L21_unpacking_done;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1076, __pyx_L1_error)
+ __PYX_ERR(9, 1075, __pyx_L1_error)
__pyx_L21_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_u, __pyx_t_3);
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1077
+ /* "src/lxml/serializer.pxi":1076
*
* for u, prefix in self._iter_namespaces(self._ns_stack):
* if u == uri: # <<<<<<<<<<<<<<
* self._declared_ns_stack[-1].append((uri, prefix))
* return f'{prefix}:{tag}' if prefix else tag, tag, uri
*/
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_u, __pyx_v_uri, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1077, __pyx_L1_error)
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(9, 1077, __pyx_L1_error)
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_u, __pyx_v_uri, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1076, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(9, 1076, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_11) {
- /* "src/lxml/serializer.pxi":1078
+ /* "src/lxml/serializer.pxi":1077
* for u, prefix in self._iter_namespaces(self._ns_stack):
* if u == uri:
* self._declared_ns_stack[-1].append((uri, prefix)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_declared_ns_stack == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1078, __pyx_L1_error)
+ __PYX_ERR(9, 1077, __pyx_L1_error)
}
- __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_declared_ns_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1078, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_declared_ns_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1077, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1078, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1077, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_uri);
__Pyx_GIVEREF(__pyx_v_uri);
__Pyx_INCREF(__pyx_v_prefix);
__Pyx_GIVEREF(__pyx_v_prefix);
PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_prefix);
- __pyx_t_14 = __Pyx_PyObject_Append(__pyx_t_5, __pyx_t_6); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(9, 1078, __pyx_L1_error)
+ __pyx_t_14 = __Pyx_PyObject_Append(__pyx_t_5, __pyx_t_6); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(9, 1077, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1079
+ /* "src/lxml/serializer.pxi":1078
* if u == uri:
* self._declared_ns_stack[-1].append((uri, prefix))
* return f'{prefix}:{tag}' if prefix else tag, tag, uri # <<<<<<<<<<<<<<
* if not uri:
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(9, 1079, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(9, 1078, __pyx_L1_error)
if (__pyx_t_11) {
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1079, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1078, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_12 = 0;
__pyx_t_13 = 127;
- __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_prefix, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1079, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_prefix, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1078, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_13;
__pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
__pyx_t_12 += 1;
__Pyx_GIVEREF(__pyx_kp_u__17);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_kp_u__17);
- __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1079, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1078, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_13;
__pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
__pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1079, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1078, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_6 = __pyx_t_3;
__Pyx_INCREF(__pyx_v_tag);
__pyx_t_6 = __pyx_v_tag;
}
- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1079, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1078, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_6);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1077
+ /* "src/lxml/serializer.pxi":1076
*
* for u, prefix in self._iter_namespaces(self._ns_stack):
* if u == uri: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1076
+ /* "src/lxml/serializer.pxi":1075
* return tag, tag, uri
*
* for u, prefix in self._iter_namespaces(self._ns_stack): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1081
+ /* "src/lxml/serializer.pxi":1080
* return f'{prefix}:{tag}' if prefix else tag, tag, uri
*
* if not uri: # <<<<<<<<<<<<<<
* # As soon as a default namespace is defined,
* # anything that has no namespace (and thus, no prefix) goes there.
*/
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_uri); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(9, 1081, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_uri); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(9, 1080, __pyx_L1_error)
__pyx_t_2 = ((!__pyx_t_11) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1084
+ /* "src/lxml/serializer.pxi":1083
* # As soon as a default namespace is defined,
* # anything that has no namespace (and thus, no prefix) goes there.
* return tag, tag, uri # <<<<<<<<<<<<<<
* raise ValueError(f'Namespace "{uri}" of name "{tag}" is not declared in scope')
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1084, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1083, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_tag);
__Pyx_GIVEREF(__pyx_v_tag);
__pyx_t_4 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1081
+ /* "src/lxml/serializer.pxi":1080
* return f'{prefix}:{tag}' if prefix else tag, tag, uri
*
* if not uri: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1086
+ /* "src/lxml/serializer.pxi":1085
* return tag, tag, uri
*
* raise ValueError(f'Namespace "{uri}" of name "{tag}" is not declared in scope') # <<<<<<<<<<<<<<
*
* def data(self, data):
*/
- __pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1086, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1085, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8 = 0;
__pyx_t_13 = 127;
__pyx_t_8 += 11;
__Pyx_GIVEREF(__pyx_kp_u_Namespace);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Namespace);
- __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_uri, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1086, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_uri, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1085, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_13;
__pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
__pyx_t_8 += 11;
__Pyx_GIVEREF(__pyx_kp_u_of_name);
PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_of_name);
- __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1086, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1085, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_13;
__pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
__pyx_t_8 += 26;
__Pyx_GIVEREF(__pyx_kp_u_is_not_declared_in_scope);
PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_kp_u_is_not_declared_in_scope);
- __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_4, 5, __pyx_t_8, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1086, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_4, 5, __pyx_t_8, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1085, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1086, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1085, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(9, 1086, __pyx_L1_error)
+ __PYX_ERR(9, 1085, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1051
+ /* "src/lxml/serializer.pxi":1050
* raise ValueError(f'Prefix {prefix} of QName "{prefixed_name}" is not declared in scope')
*
* cdef _qname(self, qname, uri=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1088
+/* "src/lxml/serializer.pxi":1087
* raise ValueError(f'Namespace "{uri}" of name "{tag}" is not declared in scope')
*
* def data(self, data): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("data", 0);
- /* "src/lxml/serializer.pxi":1089
+ /* "src/lxml/serializer.pxi":1088
*
* def data(self, data):
* if not self._ignored_depth: # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_v_self->_ignored_depth != 0)) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1090
+ /* "src/lxml/serializer.pxi":1089
* def data(self, data):
* if not self._ignored_depth:
* self._data.append(data) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_data == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(9, 1090, __pyx_L1_error)
+ __PYX_ERR(9, 1089, __pyx_L1_error)
}
- __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->_data, __pyx_v_data); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(9, 1090, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->_data, __pyx_v_data); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(9, 1089, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1089
+ /* "src/lxml/serializer.pxi":1088
*
* def data(self, data):
* if not self._ignored_depth: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1088
+ /* "src/lxml/serializer.pxi":1087
* raise ValueError(f'Namespace "{uri}" of name "{tag}" is not declared in scope')
*
* def data(self, data): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1092
+/* "src/lxml/serializer.pxi":1091
* self._data.append(data)
*
* cdef _flush(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_flush", 0);
- /* "src/lxml/serializer.pxi":1093
+ /* "src/lxml/serializer.pxi":1092
*
* cdef _flush(self):
* data = u''.join(self._data) # <<<<<<<<<<<<<<
*/
__pyx_t_1 = __pyx_v_self->_data;
__Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = PyUnicode_Join(__pyx_kp_u__12, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1093, __pyx_L1_error)
+ __pyx_t_2 = PyUnicode_Join(__pyx_kp_u__12, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1092, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_data = __pyx_t_2;
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1094
+ /* "src/lxml/serializer.pxi":1093
* cdef _flush(self):
* data = u''.join(self._data)
* del self._data[:] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_data == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1094, __pyx_L1_error)
+ __PYX_ERR(9, 1093, __pyx_L1_error)
}
- if (__Pyx_PyObject_DelSlice(__pyx_v_self->_data, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(9, 1094, __pyx_L1_error)
+ if (__Pyx_PyObject_DelSlice(__pyx_v_self->_data, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(9, 1093, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1095
+ /* "src/lxml/serializer.pxi":1094
* data = u''.join(self._data)
* del self._data[:]
* if self._strip_text and not self._preserve_space[-1]: # <<<<<<<<<<<<<<
}
if (unlikely(__pyx_v_self->_preserve_space == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1095, __pyx_L1_error)
+ __PYX_ERR(9, 1094, __pyx_L1_error)
}
- __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_preserve_space, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1095, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_preserve_space, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1094, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(9, 1095, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(9, 1094, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_5 = ((!__pyx_t_4) != 0);
__pyx_t_3 = __pyx_t_5;
__pyx_L4_bool_binop_done:;
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":1096
+ /* "src/lxml/serializer.pxi":1095
* del self._data[:]
* if self._strip_text and not self._preserve_space[-1]:
* data = data.strip() # <<<<<<<<<<<<<<
* if self._pending_start is not None:
* (tag, attrs, new_namespaces), self._pending_start = self._pending_start, None
*/
- __pyx_t_2 = __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyUnicode_Type_strip, __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1096, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyUnicode_Type_strip, __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1095, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF_SET(__pyx_v_data, __pyx_t_2);
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1095
+ /* "src/lxml/serializer.pxi":1094
* data = u''.join(self._data)
* del self._data[:]
* if self._strip_text and not self._preserve_space[-1]: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1097
+ /* "src/lxml/serializer.pxi":1096
* if self._strip_text and not self._preserve_space[-1]:
* data = data.strip()
* if self._pending_start is not None: # <<<<<<<<<<<<<<
__pyx_t_5 = (__pyx_t_3 != 0);
if (__pyx_t_5) {
- /* "src/lxml/serializer.pxi":1098
+ /* "src/lxml/serializer.pxi":1097
* data = data.strip()
* if self._pending_start is not None:
* (tag, attrs, new_namespaces), self._pending_start = self._pending_start, None # <<<<<<<<<<<<<<
if (unlikely(size != 3)) {
if (size > 3) __Pyx_RaiseTooManyValuesError(3);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1098, __pyx_L1_error)
+ __PYX_ERR(9, 1097, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_6 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_8);
#else
- __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1098, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1097, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1098, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1097, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1098, __pyx_L1_error)
+ __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1097, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(9, 1098, __pyx_L1_error)
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(9, 1097, __pyx_L1_error)
}
__pyx_v_tag = __pyx_t_6;
__pyx_t_6 = 0;
__pyx_v_self->_pending_start = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1099
+ /* "src/lxml/serializer.pxi":1098
* if self._pending_start is not None:
* (tag, attrs, new_namespaces), self._pending_start = self._pending_start, None
* qname_text = data if u':' in data and _looks_like_prefix_name(data) else None # <<<<<<<<<<<<<<
* self._start(tag, attrs, new_namespaces, qname_text)
* if qname_text is not None:
*/
- __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v_data, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1099, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v_data, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1098, __pyx_L1_error)
__pyx_t_4 = (__pyx_t_3 != 0);
if (__pyx_t_4) {
} else {
}
__pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_data);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1099, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1098, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(9, 1099, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(9, 1098, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_5 = __pyx_t_4;
__pyx_L7_bool_binop_done:;
__pyx_v_qname_text = __pyx_t_1;
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1100
+ /* "src/lxml/serializer.pxi":1099
* (tag, attrs, new_namespaces), self._pending_start = self._pending_start, None
* qname_text = data if u':' in data and _looks_like_prefix_name(data) else None
* self._start(tag, attrs, new_namespaces, qname_text) # <<<<<<<<<<<<<<
*/
__pyx_t_9.__pyx_n = 1;
__pyx_t_9.qname_text = __pyx_v_qname_text;
- __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_start(__pyx_v_self, __pyx_v_tag, __pyx_v_attrs, __pyx_v_new_namespaces, &__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1100, __pyx_L1_error)
+ __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_start(__pyx_v_self, __pyx_v_tag, __pyx_v_attrs, __pyx_v_new_namespaces, &__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1099, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1101
+ /* "src/lxml/serializer.pxi":1100
* qname_text = data if u':' in data and _looks_like_prefix_name(data) else None
* self._start(tag, attrs, new_namespaces, qname_text)
* if qname_text is not None: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_t_5 != 0);
if (__pyx_t_4) {
- /* "src/lxml/serializer.pxi":1102
+ /* "src/lxml/serializer.pxi":1101
* self._start(tag, attrs, new_namespaces, qname_text)
* if qname_text is not None:
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1101
+ /* "src/lxml/serializer.pxi":1100
* qname_text = data if u':' in data and _looks_like_prefix_name(data) else None
* self._start(tag, attrs, new_namespaces, qname_text)
* if qname_text is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1097
+ /* "src/lxml/serializer.pxi":1096
* if self._strip_text and not self._preserve_space[-1]:
* data = data.strip()
* if self._pending_start is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1103
+ /* "src/lxml/serializer.pxi":1102
* if qname_text is not None:
* return
* if data and self._root_seen: # <<<<<<<<<<<<<<
* self._write(_escape_cdata_c14n(data))
*
*/
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_data); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1103, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_data); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1102, __pyx_L1_error)
if (__pyx_t_5) {
} else {
__pyx_t_4 = __pyx_t_5;
__pyx_L11_bool_binop_done:;
if (__pyx_t_4) {
- /* "src/lxml/serializer.pxi":1104
+ /* "src/lxml/serializer.pxi":1103
* return
* if data and self._root_seen:
* self._write(_escape_cdata_c14n(data)) # <<<<<<<<<<<<<<
*
* def start_ns(self, prefix, uri):
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree__escape_cdata_c14n(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1104, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree__escape_cdata_c14n(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1103, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_self->_write);
__pyx_t_8 = __pyx_v_self->_write; __pyx_t_7 = NULL;
__pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_2);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1104, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1103, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1103
+ /* "src/lxml/serializer.pxi":1102
* if qname_text is not None:
* return
* if data and self._root_seen: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1092
+ /* "src/lxml/serializer.pxi":1091
* self._data.append(data)
*
* cdef _flush(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1106
+/* "src/lxml/serializer.pxi":1105
* self._write(_escape_cdata_c14n(data))
*
* def start_ns(self, prefix, uri): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_uri)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("start_ns", 1, 2, 2, 1); __PYX_ERR(9, 1106, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("start_ns", 1, 2, 2, 1); __PYX_ERR(9, 1105, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "start_ns") < 0)) __PYX_ERR(9, 1106, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "start_ns") < 0)) __PYX_ERR(9, 1105, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("start_ns", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1106, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("start_ns", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1105, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.C14NWriterTarget.start_ns", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("start_ns", 0);
- /* "src/lxml/serializer.pxi":1107
+ /* "src/lxml/serializer.pxi":1106
*
* def start_ns(self, prefix, uri):
* if self._ignored_depth: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_ignored_depth != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1108
+ /* "src/lxml/serializer.pxi":1107
* def start_ns(self, prefix, uri):
* if self._ignored_depth:
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1107
+ /* "src/lxml/serializer.pxi":1106
*
* def start_ns(self, prefix, uri):
* if self._ignored_depth: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1110
+ /* "src/lxml/serializer.pxi":1109
* return
* # we may have to resolve qnames in text content
* if self._data: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_data != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_data) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1111
+ /* "src/lxml/serializer.pxi":1110
* # we may have to resolve qnames in text content
* if self._data:
* self._flush() # <<<<<<<<<<<<<<
* self._ns_stack[-1].append((uri, prefix))
*
*/
- __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1111, __pyx_L1_error)
+ __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1110, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1110
+ /* "src/lxml/serializer.pxi":1109
* return
* # we may have to resolve qnames in text content
* if self._data: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1112
+ /* "src/lxml/serializer.pxi":1111
* if self._data:
* self._flush()
* self._ns_stack[-1].append((uri, prefix)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_ns_stack == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1112, __pyx_L1_error)
+ __PYX_ERR(9, 1111, __pyx_L1_error)
}
- __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_ns_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1112, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_ns_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1111, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1112, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1111, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_uri);
__Pyx_GIVEREF(__pyx_v_uri);
__Pyx_INCREF(__pyx_v_prefix);
__Pyx_GIVEREF(__pyx_v_prefix);
PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_prefix);
- __pyx_t_4 = __Pyx_PyObject_Append(__pyx_t_2, __pyx_t_3); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(9, 1112, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Append(__pyx_t_2, __pyx_t_3); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(9, 1111, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1106
+ /* "src/lxml/serializer.pxi":1105
* self._write(_escape_cdata_c14n(data))
*
* def start_ns(self, prefix, uri): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1114
+/* "src/lxml/serializer.pxi":1113
* self._ns_stack[-1].append((uri, prefix))
*
* def start(self, tag, attrs): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_attrs)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("start", 1, 2, 2, 1); __PYX_ERR(9, 1114, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("start", 1, 2, 2, 1); __PYX_ERR(9, 1113, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "start") < 0)) __PYX_ERR(9, 1114, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "start") < 0)) __PYX_ERR(9, 1113, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("start", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1114, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("start", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1113, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.C14NWriterTarget.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("start", 0);
- /* "src/lxml/serializer.pxi":1115
+ /* "src/lxml/serializer.pxi":1114
*
* def start(self, tag, attrs):
* if self._exclude_tags is not None and ( # <<<<<<<<<<<<<<
goto __pyx_L4_bool_binop_done;
}
- /* "src/lxml/serializer.pxi":1116
+ /* "src/lxml/serializer.pxi":1115
* def start(self, tag, attrs):
* if self._exclude_tags is not None and (
* self._ignored_depth or tag in self._exclude_tags): # <<<<<<<<<<<<<<
}
if (unlikely(__pyx_v_self->_exclude_tags == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1116, __pyx_L1_error)
+ __PYX_ERR(9, 1115, __pyx_L1_error)
}
- __pyx_t_3 = (__Pyx_PySet_ContainsTF(__pyx_v_tag, __pyx_v_self->_exclude_tags, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1116, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PySet_ContainsTF(__pyx_v_tag, __pyx_v_self->_exclude_tags, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1115, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_3 != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
- /* "src/lxml/serializer.pxi":1115
+ /* "src/lxml/serializer.pxi":1114
*
* def start(self, tag, attrs):
* if self._exclude_tags is not None and ( # <<<<<<<<<<<<<<
*/
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1117
+ /* "src/lxml/serializer.pxi":1116
* if self._exclude_tags is not None and (
* self._ignored_depth or tag in self._exclude_tags):
* self._ignored_depth += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_self->_ignored_depth = (__pyx_v_self->_ignored_depth + 1);
- /* "src/lxml/serializer.pxi":1118
+ /* "src/lxml/serializer.pxi":1117
* self._ignored_depth or tag in self._exclude_tags):
* self._ignored_depth += 1
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1115
+ /* "src/lxml/serializer.pxi":1114
*
* def start(self, tag, attrs):
* if self._exclude_tags is not None and ( # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1119
+ /* "src/lxml/serializer.pxi":1118
* self._ignored_depth += 1
* return
* if self._data: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_data != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_data) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1120
+ /* "src/lxml/serializer.pxi":1119
* return
* if self._data:
* self._flush() # <<<<<<<<<<<<<<
*
* new_namespaces = []
*/
- __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1120, __pyx_L1_error)
+ __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1119, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1119
+ /* "src/lxml/serializer.pxi":1118
* self._ignored_depth += 1
* return
* if self._data: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1122
+ /* "src/lxml/serializer.pxi":1121
* self._flush()
*
* new_namespaces = [] # <<<<<<<<<<<<<<
* self._declared_ns_stack.append(new_namespaces)
*
*/
- __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1122, __pyx_L1_error)
+ __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1121, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_new_namespaces = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1123
+ /* "src/lxml/serializer.pxi":1122
*
* new_namespaces = []
* self._declared_ns_stack.append(new_namespaces) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_declared_ns_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(9, 1123, __pyx_L1_error)
+ __PYX_ERR(9, 1122, __pyx_L1_error)
}
- __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_declared_ns_stack, __pyx_v_new_namespaces); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 1123, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_declared_ns_stack, __pyx_v_new_namespaces); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 1122, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1125
+ /* "src/lxml/serializer.pxi":1124
* self._declared_ns_stack.append(new_namespaces)
*
* if self._qname_aware_tags is not None and tag in self._qname_aware_tags: # <<<<<<<<<<<<<<
}
if (unlikely(__pyx_v_self->_qname_aware_tags == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1125, __pyx_L1_error)
+ __PYX_ERR(9, 1124, __pyx_L1_error)
}
- __pyx_t_3 = (__Pyx_PySet_ContainsTF(__pyx_v_tag, __pyx_v_self->_qname_aware_tags, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1125, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PySet_ContainsTF(__pyx_v_tag, __pyx_v_self->_qname_aware_tags, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1124, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_3 != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L9_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1127
+ /* "src/lxml/serializer.pxi":1126
* if self._qname_aware_tags is not None and tag in self._qname_aware_tags:
* # Need to parse text first to see if it requires a prefix declaration.
* self._pending_start = (tag, attrs, new_namespaces) # <<<<<<<<<<<<<<
* return
* self._start(tag, attrs, new_namespaces)
*/
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1127, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1126, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_tag);
__Pyx_GIVEREF(__pyx_v_tag);
__pyx_v_self->_pending_start = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1128
+ /* "src/lxml/serializer.pxi":1127
* # Need to parse text first to see if it requires a prefix declaration.
* self._pending_start = (tag, attrs, new_namespaces)
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1125
+ /* "src/lxml/serializer.pxi":1124
* self._declared_ns_stack.append(new_namespaces)
*
* if self._qname_aware_tags is not None and tag in self._qname_aware_tags: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1129
+ /* "src/lxml/serializer.pxi":1128
* self._pending_start = (tag, attrs, new_namespaces)
* return
* self._start(tag, attrs, new_namespaces) # <<<<<<<<<<<<<<
*
* cdef _start(self, tag, attrs, new_namespaces, qname_text=None):
*/
- __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_start(__pyx_v_self, __pyx_v_tag, __pyx_v_attrs, __pyx_v_new_namespaces, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1129, __pyx_L1_error)
+ __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_start(__pyx_v_self, __pyx_v_tag, __pyx_v_attrs, __pyx_v_new_namespaces, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1128, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1114
+ /* "src/lxml/serializer.pxi":1113
* self._ns_stack[-1].append((uri, prefix))
*
* def start(self, tag, attrs): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1157
+/* "src/lxml/serializer.pxi":1156
* # Assign prefixes in lexicographical order of used URIs.
* parsed_qnames = {n: self._qname(n) for n in sorted(
* qnames, key=lambda n: n.split('}', 1))} # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("lambda", 0);
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_n, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1157, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_n, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1156, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1157, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1156, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1131
+/* "src/lxml/serializer.pxi":1130
* self._start(tag, attrs, new_namespaces)
*
* cdef _start(self, tag, attrs, new_namespaces, qname_text=None): # <<<<<<<<<<<<<<
}
__Pyx_INCREF(__pyx_v_attrs);
- /* "src/lxml/serializer.pxi":1132
+ /* "src/lxml/serializer.pxi":1131
*
* cdef _start(self, tag, attrs, new_namespaces, qname_text=None):
* if self._exclude_attrs is not None and attrs: # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_attrs); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_attrs); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1131, __pyx_L1_error)
__pyx_t_1 = __pyx_t_3;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1133
+ /* "src/lxml/serializer.pxi":1132
* cdef _start(self, tag, attrs, new_namespaces, qname_text=None):
* if self._exclude_attrs is not None and attrs:
* attrs = {k: v for k, v in attrs.items() if k not in self._exclude_attrs} # <<<<<<<<<<<<<<
* qnames = {tag, *attrs}
*/
{ /* enter inner scope */
- __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1132, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrs, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrs, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1132, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
}
__pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1132, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
__pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
} else {
- __pyx_t_8 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_8 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1132, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1132, __pyx_L8_error)
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_6))) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1132, __pyx_L8_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1132, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
} else {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1132, __pyx_L8_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1132, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 1133, __pyx_L8_error)
+ else __PYX_ERR(9, 1132, __pyx_L8_error)
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1133, __pyx_L8_error)
+ __PYX_ERR(9, 1132, __pyx_L8_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_10);
#else
- __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1132, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1132, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_10);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1132, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext;
__Pyx_GOTREF(__pyx_t_7);
index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L11_unpacking_failed;
__Pyx_GOTREF(__pyx_t_10);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(9, 1133, __pyx_L8_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(9, 1132, __pyx_L8_error)
__pyx_t_12 = NULL;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L12_unpacking_done;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_12 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1133, __pyx_L8_error)
+ __PYX_ERR(9, 1132, __pyx_L8_error)
__pyx_L12_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_k, __pyx_t_7);
__pyx_t_10 = 0;
if (unlikely(__pyx_v_self->_exclude_attrs == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1133, __pyx_L8_error)
+ __PYX_ERR(9, 1132, __pyx_L8_error)
}
- __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_8genexpr1__pyx_v_k, __pyx_v_self->_exclude_attrs, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1133, __pyx_L8_error)
+ __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_8genexpr1__pyx_v_k, __pyx_v_self->_exclude_attrs, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1132, __pyx_L8_error)
__pyx_t_3 = (__pyx_t_1 != 0);
if (__pyx_t_3) {
- if (unlikely(PyDict_SetItem(__pyx_t_4, (PyObject*)__pyx_8genexpr1__pyx_v_k, (PyObject*)__pyx_8genexpr1__pyx_v_v))) __PYX_ERR(9, 1133, __pyx_L8_error)
+ if (unlikely(PyDict_SetItem(__pyx_t_4, (PyObject*)__pyx_8genexpr1__pyx_v_k, (PyObject*)__pyx_8genexpr1__pyx_v_v))) __PYX_ERR(9, 1132, __pyx_L8_error)
}
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF_SET(__pyx_v_attrs, __pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1132
+ /* "src/lxml/serializer.pxi":1131
*
* cdef _start(self, tag, attrs, new_namespaces, qname_text=None):
* if self._exclude_attrs is not None and attrs: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1135
+ /* "src/lxml/serializer.pxi":1134
* attrs = {k: v for k, v in attrs.items() if k not in self._exclude_attrs}
*
* qnames = {tag, *attrs} # <<<<<<<<<<<<<<
* resolved_names = {}
*
*/
- __pyx_t_6 = PySet_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1135, __pyx_L1_error)
+ __pyx_t_6 = PySet_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- if (PySet_Add(__pyx_t_6, __pyx_v_tag) < 0) __PYX_ERR(9, 1135, __pyx_L1_error)
+ if (PySet_Add(__pyx_t_6, __pyx_v_tag) < 0) __PYX_ERR(9, 1134, __pyx_L1_error)
__pyx_t_4 = __pyx_t_6;
__pyx_t_6 = 0;
if (unlikely(__pyx_v_attrs == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after * must be an iterable, not NoneType");
- __PYX_ERR(9, 1135, __pyx_L1_error)
+ __PYX_ERR(9, 1134, __pyx_L1_error)
}
- if (__Pyx_PySet_Update(__pyx_t_4, __pyx_v_attrs) < 0) __PYX_ERR(9, 1135, __pyx_L1_error)
+ if (__Pyx_PySet_Update(__pyx_t_4, __pyx_v_attrs) < 0) __PYX_ERR(9, 1134, __pyx_L1_error)
__pyx_v_qnames = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1136
+ /* "src/lxml/serializer.pxi":1135
*
* qnames = {tag, *attrs}
* resolved_names = {} # <<<<<<<<<<<<<<
*
* # Resolve prefixes in attribute and tag text.
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1136, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_resolved_names = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1139
+ /* "src/lxml/serializer.pxi":1138
*
* # Resolve prefixes in attribute and tag text.
* if qname_text is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_3 != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1140
+ /* "src/lxml/serializer.pxi":1139
* # Resolve prefixes in attribute and tag text.
* if qname_text is not None:
* qname = resolved_names[qname_text] = self._resolve_prefix_name(qname_text) # <<<<<<<<<<<<<<
* qnames.add(qname)
* if self._find_qname_aware_attrs is not None and attrs:
*/
- __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_resolve_prefix_name(__pyx_v_self, __pyx_v_qname_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1140, __pyx_L1_error)
+ __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_resolve_prefix_name(__pyx_v_self, __pyx_v_qname_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1139, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_4);
__pyx_v_qname = __pyx_t_4;
- if (unlikely(PyDict_SetItem(__pyx_v_resolved_names, __pyx_v_qname_text, __pyx_t_4) < 0)) __PYX_ERR(9, 1140, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_resolved_names, __pyx_v_qname_text, __pyx_t_4) < 0)) __PYX_ERR(9, 1139, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1141
+ /* "src/lxml/serializer.pxi":1140
* if qname_text is not None:
* qname = resolved_names[qname_text] = self._resolve_prefix_name(qname_text)
* qnames.add(qname) # <<<<<<<<<<<<<<
* if self._find_qname_aware_attrs is not None and attrs:
* qattrs = self._find_qname_aware_attrs(attrs)
*/
- __pyx_t_13 = PySet_Add(__pyx_v_qnames, __pyx_v_qname); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1141, __pyx_L1_error)
+ __pyx_t_13 = PySet_Add(__pyx_v_qnames, __pyx_v_qname); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1140, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1139
+ /* "src/lxml/serializer.pxi":1138
*
* # Resolve prefixes in attribute and tag text.
* if qname_text is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1142
+ /* "src/lxml/serializer.pxi":1141
* qname = resolved_names[qname_text] = self._resolve_prefix_name(qname_text)
* qnames.add(qname)
* if self._find_qname_aware_attrs is not None and attrs: # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_t_2;
goto __pyx_L17_bool_binop_done;
}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_attrs); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1142, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_attrs); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1141, __pyx_L1_error)
__pyx_t_1 = __pyx_t_2;
__pyx_L17_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1143
+ /* "src/lxml/serializer.pxi":1142
* qnames.add(qname)
* if self._find_qname_aware_attrs is not None and attrs:
* qattrs = self._find_qname_aware_attrs(attrs) # <<<<<<<<<<<<<<
}
__pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v_attrs) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_attrs);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1143, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1142, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_qattrs = __pyx_t_4;
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1144
+ /* "src/lxml/serializer.pxi":1143
* if self._find_qname_aware_attrs is not None and attrs:
* qattrs = self._find_qname_aware_attrs(attrs)
* if qattrs: # <<<<<<<<<<<<<<
* for attr_name in qattrs:
* value = attrs[attr_name]
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_qattrs); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1144, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_qattrs); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1143, __pyx_L1_error)
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1145
+ /* "src/lxml/serializer.pxi":1144
* qattrs = self._find_qname_aware_attrs(attrs)
* if qattrs:
* for attr_name in qattrs: # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_qattrs; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
} else {
- __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_qattrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1145, __pyx_L1_error)
+ __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_qattrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1144, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1145, __pyx_L1_error)
+ __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1144, __pyx_L1_error)
}
for (;;) {
if (likely(!__pyx_t_9)) {
if (likely(PyList_CheckExact(__pyx_t_4))) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1145, __pyx_L1_error)
+ __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1144, __pyx_L1_error)
#else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1145, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1144, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
} else {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1145, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1144, __pyx_L1_error)
#else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1145, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1144, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 1145, __pyx_L1_error)
+ else __PYX_ERR(9, 1144, __pyx_L1_error)
}
break;
}
__Pyx_XDECREF_SET(__pyx_v_attr_name, __pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1146
+ /* "src/lxml/serializer.pxi":1145
* if qattrs:
* for attr_name in qattrs:
* value = attrs[attr_name] # <<<<<<<<<<<<<<
* if _looks_like_prefix_name(value):
* qname = resolved_names[value] = self._resolve_prefix_name(value)
*/
- __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_attrs, __pyx_v_attr_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1146, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_attrs, __pyx_v_attr_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1145, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1147
+ /* "src/lxml/serializer.pxi":1146
* for attr_name in qattrs:
* value = attrs[attr_name]
* if _looks_like_prefix_name(value): # <<<<<<<<<<<<<<
}
__pyx_t_6 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_10, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_value);
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1147, __pyx_L1_error)
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1146, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1147, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1146, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1148
+ /* "src/lxml/serializer.pxi":1147
* value = attrs[attr_name]
* if _looks_like_prefix_name(value):
* qname = resolved_names[value] = self._resolve_prefix_name(value) # <<<<<<<<<<<<<<
* qnames.add(qname)
* else:
*/
- __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_resolve_prefix_name(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1148, __pyx_L1_error)
+ __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_resolve_prefix_name(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1147, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_qname, __pyx_t_6);
- if (unlikely(PyDict_SetItem(__pyx_v_resolved_names, __pyx_v_value, __pyx_t_6) < 0)) __PYX_ERR(9, 1148, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_resolved_names, __pyx_v_value, __pyx_t_6) < 0)) __PYX_ERR(9, 1147, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1149
+ /* "src/lxml/serializer.pxi":1148
* if _looks_like_prefix_name(value):
* qname = resolved_names[value] = self._resolve_prefix_name(value)
* qnames.add(qname) # <<<<<<<<<<<<<<
* else:
* qattrs = None
*/
- __pyx_t_13 = PySet_Add(__pyx_v_qnames, __pyx_v_qname); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1149, __pyx_L1_error)
+ __pyx_t_13 = PySet_Add(__pyx_v_qnames, __pyx_v_qname); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1148, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1147
+ /* "src/lxml/serializer.pxi":1146
* for attr_name in qattrs:
* value = attrs[attr_name]
* if _looks_like_prefix_name(value): # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1145
+ /* "src/lxml/serializer.pxi":1144
* qattrs = self._find_qname_aware_attrs(attrs)
* if qattrs:
* for attr_name in qattrs: # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1144
+ /* "src/lxml/serializer.pxi":1143
* if self._find_qname_aware_attrs is not None and attrs:
* qattrs = self._find_qname_aware_attrs(attrs)
* if qattrs: # <<<<<<<<<<<<<<
goto __pyx_L19;
}
- /* "src/lxml/serializer.pxi":1151
+ /* "src/lxml/serializer.pxi":1150
* qnames.add(qname)
* else:
* qattrs = None # <<<<<<<<<<<<<<
}
__pyx_L19:;
- /* "src/lxml/serializer.pxi":1142
+ /* "src/lxml/serializer.pxi":1141
* qname = resolved_names[qname_text] = self._resolve_prefix_name(qname_text)
* qnames.add(qname)
* if self._find_qname_aware_attrs is not None and attrs: # <<<<<<<<<<<<<<
goto __pyx_L16;
}
- /* "src/lxml/serializer.pxi":1153
+ /* "src/lxml/serializer.pxi":1152
* qattrs = None
* else:
* qattrs = None # <<<<<<<<<<<<<<
}
__pyx_L16:;
- /* "src/lxml/serializer.pxi":1156
+ /* "src/lxml/serializer.pxi":1155
*
* # Assign prefixes in lexicographical order of used URIs.
* parsed_qnames = {n: self._qname(n) for n in sorted( # <<<<<<<<<<<<<<
*
*/
{ /* enter inner scope */
- __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1156, __pyx_L25_error)
+ __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1155, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_4);
- /* "src/lxml/serializer.pxi":1157
+ /* "src/lxml/serializer.pxi":1156
* # Assign prefixes in lexicographical order of used URIs.
* parsed_qnames = {n: self._qname(n) for n in sorted(
* qnames, key=lambda n: n.split('}', 1))} # <<<<<<<<<<<<<<
*
* # Write namespace declarations in prefix order ...
*/
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1156, __pyx_L25_error)
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1155, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_qnames);
__Pyx_GIVEREF(__pyx_v_qnames);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_qnames);
- __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1157, __pyx_L25_error)
+ __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1156, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_6_start_8genexpr2_lambda, 0, __pyx_n_s_C14NWriterTarget__start_locals_l, NULL, __pyx_n_s_lxml_etree, __pyx_d, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1157, __pyx_L25_error)
+ __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_6_start_8genexpr2_lambda, 0, __pyx_n_s_C14NWriterTarget__start_locals_l, NULL, __pyx_n_s_lxml_etree, __pyx_d, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1156, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_10);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_key, __pyx_t_10) < 0) __PYX_ERR(9, 1157, __pyx_L25_error)
+ if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_key, __pyx_t_10) < 0) __PYX_ERR(9, 1156, __pyx_L25_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- /* "src/lxml/serializer.pxi":1156
+ /* "src/lxml/serializer.pxi":1155
*
* # Assign prefixes in lexicographical order of used URIs.
* parsed_qnames = {n: self._qname(n) for n in sorted( # <<<<<<<<<<<<<<
* qnames, key=lambda n: n.split('}', 1))}
*
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_sorted, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1156, __pyx_L25_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_sorted, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1155, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = __pyx_t_10; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
} else {
- __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1156, __pyx_L25_error)
+ __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1155, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1156, __pyx_L25_error)
+ __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1155, __pyx_L25_error)
}
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_5))) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_10 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1156, __pyx_L25_error)
+ __pyx_t_10 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1155, __pyx_L25_error)
#else
- __pyx_t_10 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1156, __pyx_L25_error)
+ __pyx_t_10 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1155, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_10);
#endif
} else {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1156, __pyx_L25_error)
+ __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1155, __pyx_L25_error)
#else
- __pyx_t_10 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1156, __pyx_L25_error)
+ __pyx_t_10 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1155, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_10);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 1156, __pyx_L25_error)
+ else __PYX_ERR(9, 1155, __pyx_L25_error)
}
break;
}
}
__Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_n, __pyx_t_10);
__pyx_t_10 = 0;
- __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_qname(__pyx_v_self, __pyx_8genexpr2__pyx_v_n, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1156, __pyx_L25_error)
+ __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_qname(__pyx_v_self, __pyx_8genexpr2__pyx_v_n, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1155, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_10);
- if (unlikely(PyDict_SetItem(__pyx_t_4, (PyObject*)__pyx_8genexpr2__pyx_v_n, (PyObject*)__pyx_t_10))) __PYX_ERR(9, 1156, __pyx_L25_error)
+ if (unlikely(PyDict_SetItem(__pyx_t_4, (PyObject*)__pyx_8genexpr2__pyx_v_n, (PyObject*)__pyx_t_10))) __PYX_ERR(9, 1155, __pyx_L25_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_parsed_qnames = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1160
+ /* "src/lxml/serializer.pxi":1159
*
* # Write namespace declarations in prefix order ...
* if new_namespaces: # <<<<<<<<<<<<<<
* attr_list = [
* (u'xmlns:' + prefix if prefix else u'xmlns', uri)
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_new_namespaces); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1160, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_new_namespaces); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1159, __pyx_L1_error)
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1161
+ /* "src/lxml/serializer.pxi":1160
* # Write namespace declarations in prefix order ...
* if new_namespaces:
* attr_list = [ # <<<<<<<<<<<<<<
* (u'xmlns:' + prefix if prefix else u'xmlns', uri)
* for uri, prefix in new_namespaces
*/
- __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1161, __pyx_L1_error)
+ __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- /* "src/lxml/serializer.pxi":1163
+ /* "src/lxml/serializer.pxi":1162
* attr_list = [
* (u'xmlns:' + prefix if prefix else u'xmlns', uri)
* for uri, prefix in new_namespaces # <<<<<<<<<<<<<<
__pyx_t_5 = __pyx_v_new_namespaces; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
} else {
- __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_new_namespaces); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1163, __pyx_L1_error)
+ __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_new_namespaces); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1163, __pyx_L1_error)
+ __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1162, __pyx_L1_error)
}
for (;;) {
if (likely(!__pyx_t_9)) {
if (likely(PyList_CheckExact(__pyx_t_5))) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_10 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1163, __pyx_L1_error)
+ __pyx_t_10 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1162, __pyx_L1_error)
#else
- __pyx_t_10 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1163, __pyx_L1_error)
+ __pyx_t_10 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
#endif
} else {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1163, __pyx_L1_error)
+ __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1162, __pyx_L1_error)
#else
- __pyx_t_10 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1163, __pyx_L1_error)
+ __pyx_t_10 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 1163, __pyx_L1_error)
+ else __PYX_ERR(9, 1162, __pyx_L1_error)
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1163, __pyx_L1_error)
+ __PYX_ERR(9, 1162, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx_t_7);
#else
- __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1163, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1163, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_11 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1163, __pyx_L1_error)
+ __pyx_t_11 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext;
__Pyx_GOTREF(__pyx_t_6);
index = 1; __pyx_t_7 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L32_unpacking_failed;
__Pyx_GOTREF(__pyx_t_7);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(9, 1163, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(9, 1162, __pyx_L1_error)
__pyx_t_12 = NULL;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L33_unpacking_done;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_12 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1163, __pyx_L1_error)
+ __PYX_ERR(9, 1162, __pyx_L1_error)
__pyx_L33_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_uri, __pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_7);
__pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1162
+ /* "src/lxml/serializer.pxi":1161
* if new_namespaces:
* attr_list = [
* (u'xmlns:' + prefix if prefix else u'xmlns', uri) # <<<<<<<<<<<<<<
* for uri, prefix in new_namespaces
* ]
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1162, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1161, __pyx_L1_error)
if (__pyx_t_1) {
- __pyx_t_7 = PyNumber_Add(__pyx_kp_u_xmlns, __pyx_v_prefix); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1162, __pyx_L1_error)
+ __pyx_t_7 = PyNumber_Add(__pyx_kp_u_xmlns, __pyx_v_prefix); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_10 = __pyx_t_7;
__pyx_t_7 = 0;
__Pyx_INCREF(__pyx_n_u_xmlns_2);
__pyx_t_10 = __pyx_n_u_xmlns_2;
}
- __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1162, __pyx_L1_error)
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GIVEREF(__pyx_t_10);
PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10);
__Pyx_GIVEREF(__pyx_v_uri);
PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_uri);
__pyx_t_10 = 0;
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_7))) __PYX_ERR(9, 1161, __pyx_L1_error)
+ if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_7))) __PYX_ERR(9, 1160, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1163
+ /* "src/lxml/serializer.pxi":1162
* attr_list = [
* (u'xmlns:' + prefix if prefix else u'xmlns', uri)
* for uri, prefix in new_namespaces # <<<<<<<<<<<<<<
__pyx_v_attr_list = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1165
+ /* "src/lxml/serializer.pxi":1164
* for uri, prefix in new_namespaces
* ]
* attr_list.sort() # <<<<<<<<<<<<<<
* else:
* # almost always empty
*/
- __pyx_t_13 = PyList_Sort(__pyx_v_attr_list); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1165, __pyx_L1_error)
+ __pyx_t_13 = PyList_Sort(__pyx_v_attr_list); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1164, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1160
+ /* "src/lxml/serializer.pxi":1159
*
* # Write namespace declarations in prefix order ...
* if new_namespaces: # <<<<<<<<<<<<<<
goto __pyx_L29;
}
- /* "src/lxml/serializer.pxi":1168
+ /* "src/lxml/serializer.pxi":1167
* else:
* # almost always empty
* attr_list = [] # <<<<<<<<<<<<<<
* # ... followed by attributes in URI+name order
*/
/*else*/ {
- __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1168, __pyx_L1_error)
+ __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_attr_list = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
}
__pyx_L29:;
- /* "src/lxml/serializer.pxi":1171
+ /* "src/lxml/serializer.pxi":1170
*
* # ... followed by attributes in URI+name order
* if attrs: # <<<<<<<<<<<<<<
* for k, v in sorted(attrs.items()):
* if qattrs is not None and k in qattrs and v in resolved_names:
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_attrs); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1171, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_attrs); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1170, __pyx_L1_error)
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1172
+ /* "src/lxml/serializer.pxi":1171
* # ... followed by attributes in URI+name order
* if attrs:
* for k, v in sorted(attrs.items()): # <<<<<<<<<<<<<<
* if qattrs is not None and k in qattrs and v in resolved_names:
* v = parsed_qnames[resolved_names[v]][0]
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrs, __pyx_n_s_items); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1172, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrs, __pyx_n_s_items); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_10 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
}
__pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1172, __pyx_L1_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PySequence_List(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1172, __pyx_L1_error)
+ __pyx_t_7 = PySequence_List(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_4 = ((PyObject*)__pyx_t_7);
__pyx_t_7 = 0;
- __pyx_t_13 = PyList_Sort(__pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1172, __pyx_L1_error)
+ __pyx_t_13 = PyList_Sort(__pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1171, __pyx_L1_error)
if (unlikely(__pyx_t_4 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1172, __pyx_L1_error)
+ __PYX_ERR(9, 1171, __pyx_L1_error)
}
__pyx_t_7 = __pyx_t_4; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
for (;;) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_7)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1172, __pyx_L1_error)
+ __pyx_t_4 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1171, __pyx_L1_error)
#else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1172, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1172, __pyx_L1_error)
+ __PYX_ERR(9, 1171, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_10);
#else
- __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1172, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1172, __pyx_L1_error)
+ __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
#endif
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1172, __pyx_L1_error)
+ __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext;
__Pyx_GOTREF(__pyx_t_5);
index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_6); if (unlikely(!__pyx_t_10)) goto __pyx_L37_unpacking_failed;
__Pyx_GOTREF(__pyx_t_10);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_6), 2) < 0) __PYX_ERR(9, 1172, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_6), 2) < 0) __PYX_ERR(9, 1171, __pyx_L1_error)
__pyx_t_12 = NULL;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L38_unpacking_done;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_12 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1172, __pyx_L1_error)
+ __PYX_ERR(9, 1171, __pyx_L1_error)
__pyx_L38_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_5);
__Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_10);
__pyx_t_10 = 0;
- /* "src/lxml/serializer.pxi":1173
+ /* "src/lxml/serializer.pxi":1172
* if attrs:
* for k, v in sorted(attrs.items()):
* if qattrs is not None and k in qattrs and v in resolved_names: # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_t_3;
goto __pyx_L40_bool_binop_done;
}
- __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_v_k, __pyx_v_qattrs, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1173, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_v_k, __pyx_v_qattrs, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1172, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L40_bool_binop_done;
}
- __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_v, __pyx_v_resolved_names, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1173, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_v, __pyx_v_resolved_names, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1172, __pyx_L1_error)
__pyx_t_3 = (__pyx_t_2 != 0);
__pyx_t_1 = __pyx_t_3;
__pyx_L40_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1174
+ /* "src/lxml/serializer.pxi":1173
* for k, v in sorted(attrs.items()):
* if qattrs is not None and k in qattrs and v in resolved_names:
* v = parsed_qnames[resolved_names[v]][0] # <<<<<<<<<<<<<<
* attr_qname, attr_name, uri = parsed_qnames[k]
* # No prefix for attributes in default ('') namespace.
*/
- __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_resolved_names, __pyx_v_v); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1174, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_resolved_names, __pyx_v_v); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1173, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = __Pyx_PyDict_GetItem(__pyx_v_parsed_qnames, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1174, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyDict_GetItem(__pyx_v_parsed_qnames, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1173, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_10, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1174, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_10, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1173, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF_SET(__pyx_v_v, __pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1173
+ /* "src/lxml/serializer.pxi":1172
* if attrs:
* for k, v in sorted(attrs.items()):
* if qattrs is not None and k in qattrs and v in resolved_names: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1175
+ /* "src/lxml/serializer.pxi":1174
* if qattrs is not None and k in qattrs and v in resolved_names:
* v = parsed_qnames[resolved_names[v]][0]
* attr_qname, attr_name, uri = parsed_qnames[k] # <<<<<<<<<<<<<<
* # No prefix for attributes in default ('') namespace.
* attr_list.append((attr_qname if uri else attr_name, v))
*/
- __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_parsed_qnames, __pyx_v_k); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1175, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_parsed_qnames, __pyx_v_k); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
PyObject* sequence = __pyx_t_4;
if (unlikely(size != 3)) {
if (size > 3) __Pyx_RaiseTooManyValuesError(3);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1175, __pyx_L1_error)
+ __PYX_ERR(9, 1174, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_6);
#else
- __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1175, __pyx_L1_error)
+ __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1175, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1175, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_11 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1175, __pyx_L1_error)
+ __pyx_t_11 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext;
__Pyx_GOTREF(__pyx_t_5);
index = 2; __pyx_t_6 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_6)) goto __pyx_L43_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 3) < 0) __PYX_ERR(9, 1175, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 3) < 0) __PYX_ERR(9, 1174, __pyx_L1_error)
__pyx_t_12 = NULL;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L44_unpacking_done;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_12 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1175, __pyx_L1_error)
+ __PYX_ERR(9, 1174, __pyx_L1_error)
__pyx_L44_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_attr_qname, __pyx_t_10);
__Pyx_XDECREF_SET(__pyx_v_uri, __pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1177
+ /* "src/lxml/serializer.pxi":1176
* attr_qname, attr_name, uri = parsed_qnames[k]
* # No prefix for attributes in default ('') namespace.
* attr_list.append((attr_qname if uri else attr_name, v)) # <<<<<<<<<<<<<<
*
* # Honour xml:space attributes.
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_uri); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1177, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_uri); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1176, __pyx_L1_error)
if (__pyx_t_1) {
__Pyx_INCREF(__pyx_v_attr_qname);
__pyx_t_4 = __pyx_v_attr_qname;
__Pyx_INCREF(__pyx_v_attr_name);
__pyx_t_4 = __pyx_v_attr_name;
}
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1177, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_v_v);
PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_v);
__pyx_t_4 = 0;
- __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_attr_list, __pyx_t_6); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1177, __pyx_L1_error)
+ __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_attr_list, __pyx_t_6); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1176, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1172
+ /* "src/lxml/serializer.pxi":1171
* # ... followed by attributes in URI+name order
* if attrs:
* for k, v in sorted(attrs.items()): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1171
+ /* "src/lxml/serializer.pxi":1170
*
* # ... followed by attributes in URI+name order
* if attrs: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1180
+ /* "src/lxml/serializer.pxi":1179
*
* # Honour xml:space attributes.
* space_behaviour = attrs.get('{http://www.w3.org/XML/1998/namespace}space') # <<<<<<<<<<<<<<
* self._preserve_space.append(
* space_behaviour == 'preserve' if space_behaviour
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrs, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1180, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrs, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1179, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
}
__pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_kp_s_http_www_w3_org_XML_1998_namesp) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_kp_s_http_www_w3_org_XML_1998_namesp);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1180, __pyx_L1_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1179, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_space_behaviour = __pyx_t_7;
__pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1181
+ /* "src/lxml/serializer.pxi":1180
* # Honour xml:space attributes.
* space_behaviour = attrs.get('{http://www.w3.org/XML/1998/namespace}space')
* self._preserve_space.append( # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_preserve_space == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(9, 1181, __pyx_L1_error)
+ __PYX_ERR(9, 1180, __pyx_L1_error)
}
- /* "src/lxml/serializer.pxi":1182
+ /* "src/lxml/serializer.pxi":1181
* space_behaviour = attrs.get('{http://www.w3.org/XML/1998/namespace}space')
* self._preserve_space.append(
* space_behaviour == 'preserve' if space_behaviour # <<<<<<<<<<<<<<
* else self._preserve_space[-1])
*
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_space_behaviour); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1182, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_space_behaviour); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1181, __pyx_L1_error)
if (__pyx_t_1) {
- __pyx_t_6 = PyObject_RichCompare(__pyx_v_space_behaviour, __pyx_n_s_preserve, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1182, __pyx_L1_error)
+ __pyx_t_6 = PyObject_RichCompare(__pyx_v_space_behaviour, __pyx_n_s_preserve, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1181, __pyx_L1_error)
__pyx_t_7 = __pyx_t_6;
__pyx_t_6 = 0;
} else {
- /* "src/lxml/serializer.pxi":1183
+ /* "src/lxml/serializer.pxi":1182
* self._preserve_space.append(
* space_behaviour == 'preserve' if space_behaviour
* else self._preserve_space[-1]) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_preserve_space == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1183, __pyx_L1_error)
+ __PYX_ERR(9, 1182, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_self->_preserve_space, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1183, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_self->_preserve_space, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1182, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __pyx_t_6;
__pyx_t_6 = 0;
}
- /* "src/lxml/serializer.pxi":1181
+ /* "src/lxml/serializer.pxi":1180
* # Honour xml:space attributes.
* space_behaviour = attrs.get('{http://www.w3.org/XML/1998/namespace}space')
* self._preserve_space.append( # <<<<<<<<<<<<<<
* space_behaviour == 'preserve' if space_behaviour
* else self._preserve_space[-1])
*/
- __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_self->_preserve_space, __pyx_t_7); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1181, __pyx_L1_error)
+ __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_self->_preserve_space, __pyx_t_7); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1180, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1186
+ /* "src/lxml/serializer.pxi":1185
*
* # Write the tag.
* write = self._write # <<<<<<<<<<<<<<
__pyx_v_write = __pyx_t_7;
__pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1187
+ /* "src/lxml/serializer.pxi":1186
* # Write the tag.
* write = self._write
* write(u'<' + parsed_qnames[tag][0]) # <<<<<<<<<<<<<<
* if attr_list:
* write(u''.join([f' {k}="{_escape_attrib_c14n(v)}"' for k, v in attr_list]))
*/
- __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_parsed_qnames, __pyx_v_tag); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1187, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_parsed_qnames, __pyx_v_tag); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1186, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1187, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1186, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyNumber_Add(__pyx_kp_u__70, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1187, __pyx_L1_error)
+ __pyx_t_6 = PyNumber_Add(__pyx_kp_u__70, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1186, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_INCREF(__pyx_v_write);
__pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1187, __pyx_L1_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1186, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1188
+ /* "src/lxml/serializer.pxi":1187
* write = self._write
* write(u'<' + parsed_qnames[tag][0])
* if attr_list: # <<<<<<<<<<<<<<
__pyx_t_1 = (PyList_GET_SIZE(__pyx_v_attr_list) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1189
+ /* "src/lxml/serializer.pxi":1188
* write(u'<' + parsed_qnames[tag][0])
* if attr_list:
* write(u''.join([f' {k}="{_escape_attrib_c14n(v)}"' for k, v in attr_list])) # <<<<<<<<<<<<<<
* write(u'>')
*
*/
- __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6 = __pyx_v_attr_list; __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = 0;
for (;;) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 1188, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1189, __pyx_L1_error)
+ __PYX_ERR(9, 1188, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(__pyx_t_11);
#else
- __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_14 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_14 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_12 = Py_TYPE(__pyx_t_14)->tp_iternext;
__Pyx_GOTREF(__pyx_t_10);
index = 1; __pyx_t_11 = __pyx_t_12(__pyx_t_14); if (unlikely(!__pyx_t_11)) goto __pyx_L48_unpacking_failed;
__Pyx_GOTREF(__pyx_t_11);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_14), 2) < 0) __PYX_ERR(9, 1189, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_14), 2) < 0) __PYX_ERR(9, 1188, __pyx_L1_error)
__pyx_t_12 = NULL;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
goto __pyx_L49_unpacking_done;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__pyx_t_12 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1189, __pyx_L1_error)
+ __PYX_ERR(9, 1188, __pyx_L1_error)
__pyx_L49_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_10);
__pyx_t_10 = 0;
__Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_11);
__pyx_t_11 = 0;
- __pyx_t_5 = PyTuple_New(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_New(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_15 = 0;
__pyx_t_16 = 127;
__pyx_t_15 += 1;
__Pyx_GIVEREF(__pyx_kp_u__11);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u__11);
- __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_k, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_k, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_16;
__pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
__pyx_t_15 += 2;
__Pyx_GIVEREF(__pyx_kp_u__71);
PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__71);
- __pyx_t_11 = __pyx_f_4lxml_5etree__escape_attrib_c14n(__pyx_v_v); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_11 = __pyx_f_4lxml_5etree__escape_attrib_c14n(__pyx_v_v); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_10 = __Pyx_PyUnicode_Unicode(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyUnicode_Unicode(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) : __pyx_t_16;
__pyx_t_15 += 1;
__Pyx_GIVEREF(__pyx_kp_u__23);
PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_kp_u__23);
- __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_5, 5, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_5, 5, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_10))) __PYX_ERR(9, 1189, __pyx_L1_error)
+ if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_10))) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyUnicode_Join(__pyx_kp_u__12, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ __pyx_t_6 = PyUnicode_Join(__pyx_kp_u__12, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_INCREF(__pyx_v_write);
__pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_10, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6);
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1189, __pyx_L1_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1188
+ /* "src/lxml/serializer.pxi":1187
* write = self._write
* write(u'<' + parsed_qnames[tag][0])
* if attr_list: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1190
+ /* "src/lxml/serializer.pxi":1189
* if attr_list:
* write(u''.join([f' {k}="{_escape_attrib_c14n(v)}"' for k, v in attr_list]))
* write(u'>') # <<<<<<<<<<<<<<
}
__pyx_t_7 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_kp_u__26) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u__26);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1190, __pyx_L1_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1189, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1193
+ /* "src/lxml/serializer.pxi":1192
*
* # Write the resolved qname text content.
* if qname_text is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_1 != 0);
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":1194
+ /* "src/lxml/serializer.pxi":1193
* # Write the resolved qname text content.
* if qname_text is not None:
* write(_escape_cdata_c14n(parsed_qnames[resolved_names[qname_text]][0])) # <<<<<<<<<<<<<<
*
* self._root_seen = True
*/
- __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_resolved_names, __pyx_v_qname_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1194, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_resolved_names, __pyx_v_qname_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_parsed_qnames, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1194, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_parsed_qnames, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1194, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_f_4lxml_5etree__escape_cdata_c14n(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1194, __pyx_L1_error)
+ __pyx_t_6 = __pyx_f_4lxml_5etree__escape_cdata_c14n(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_INCREF(__pyx_v_write);
__pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_10, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6);
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1194, __pyx_L1_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1193
+ /* "src/lxml/serializer.pxi":1192
*
* # Write the resolved qname text content.
* if qname_text is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1196
+ /* "src/lxml/serializer.pxi":1195
* write(_escape_cdata_c14n(parsed_qnames[resolved_names[qname_text]][0]))
*
* self._root_seen = True # <<<<<<<<<<<<<<
*/
__pyx_v_self->_root_seen = 1;
- /* "src/lxml/serializer.pxi":1197
+ /* "src/lxml/serializer.pxi":1196
*
* self._root_seen = True
* self._ns_stack.append([]) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_ns_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(9, 1197, __pyx_L1_error)
+ __PYX_ERR(9, 1196, __pyx_L1_error)
}
- __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1197, __pyx_L1_error)
+ __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1196, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_self->_ns_stack, __pyx_t_7); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1197, __pyx_L1_error)
+ __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_self->_ns_stack, __pyx_t_7); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1196, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1131
+ /* "src/lxml/serializer.pxi":1130
* self._start(tag, attrs, new_namespaces)
*
* cdef _start(self, tag, attrs, new_namespaces, qname_text=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1199
+/* "src/lxml/serializer.pxi":1198
* self._ns_stack.append([])
*
* def end(self, tag): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("end", 0);
- /* "src/lxml/serializer.pxi":1200
+ /* "src/lxml/serializer.pxi":1199
*
* def end(self, tag):
* if self._ignored_depth: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_ignored_depth != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1201
+ /* "src/lxml/serializer.pxi":1200
* def end(self, tag):
* if self._ignored_depth:
* self._ignored_depth -= 1 # <<<<<<<<<<<<<<
*/
__pyx_v_self->_ignored_depth = (__pyx_v_self->_ignored_depth - 1);
- /* "src/lxml/serializer.pxi":1202
+ /* "src/lxml/serializer.pxi":1201
* if self._ignored_depth:
* self._ignored_depth -= 1
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1200
+ /* "src/lxml/serializer.pxi":1199
*
* def end(self, tag):
* if self._ignored_depth: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1203
+ /* "src/lxml/serializer.pxi":1202
* self._ignored_depth -= 1
* return
* if self._data: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_data != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_data) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1204
+ /* "src/lxml/serializer.pxi":1203
* return
* if self._data:
* self._flush() # <<<<<<<<<<<<<<
* self._write(f'</{self._qname(tag)[0]}>')
* self._preserve_space.pop()
*/
- __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1204, __pyx_L1_error)
+ __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1203, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1203
+ /* "src/lxml/serializer.pxi":1202
* self._ignored_depth -= 1
* return
* if self._data: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1205
+ /* "src/lxml/serializer.pxi":1204
* if self._data:
* self._flush()
* self._write(f'</{self._qname(tag)[0]}>') # <<<<<<<<<<<<<<
* self._preserve_space.pop()
* self._root_done = len(self._preserve_space) == 1
*/
- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1205, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1204, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = 0;
__pyx_t_5 = 127;
__pyx_t_4 += 2;
__Pyx_GIVEREF(__pyx_kp_u__72);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u__72);
- __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_qname(__pyx_v_self, __pyx_v_tag, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1205, __pyx_L1_error)
+ __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_qname(__pyx_v_self, __pyx_v_tag, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1204, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1205, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1204, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1205, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1204, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5;
__pyx_t_4 += 1;
__Pyx_GIVEREF(__pyx_kp_u__26);
PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__26);
- __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1205, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1204, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_INCREF(__pyx_v_self->_write);
__pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1205, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1204, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1206
+ /* "src/lxml/serializer.pxi":1205
* self._flush()
* self._write(f'</{self._qname(tag)[0]}>')
* self._preserve_space.pop() # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_preserve_space == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
- __PYX_ERR(9, 1206, __pyx_L1_error)
+ __PYX_ERR(9, 1205, __pyx_L1_error)
}
- __pyx_t_2 = __Pyx_PyList_Pop(__pyx_v_self->_preserve_space); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1206, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyList_Pop(__pyx_v_self->_preserve_space); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1205, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1207
+ /* "src/lxml/serializer.pxi":1206
* self._write(f'</{self._qname(tag)[0]}>')
* self._preserve_space.pop()
* self._root_done = len(self._preserve_space) == 1 # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_t_2);
if (unlikely(__pyx_t_2 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(9, 1207, __pyx_L1_error)
+ __PYX_ERR(9, 1206, __pyx_L1_error)
}
- __pyx_t_4 = PyList_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1207, __pyx_L1_error)
+ __pyx_t_4 = PyList_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1206, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_self->_root_done = (__pyx_t_4 == 1);
- /* "src/lxml/serializer.pxi":1208
+ /* "src/lxml/serializer.pxi":1207
* self._preserve_space.pop()
* self._root_done = len(self._preserve_space) == 1
* self._declared_ns_stack.pop() # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_declared_ns_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
- __PYX_ERR(9, 1208, __pyx_L1_error)
+ __PYX_ERR(9, 1207, __pyx_L1_error)
}
- __pyx_t_2 = __Pyx_PyList_Pop(__pyx_v_self->_declared_ns_stack); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1208, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyList_Pop(__pyx_v_self->_declared_ns_stack); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1207, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1209
+ /* "src/lxml/serializer.pxi":1208
* self._root_done = len(self._preserve_space) == 1
* self._declared_ns_stack.pop()
* self._ns_stack.pop() # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_ns_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
- __PYX_ERR(9, 1209, __pyx_L1_error)
+ __PYX_ERR(9, 1208, __pyx_L1_error)
}
- __pyx_t_2 = __Pyx_PyList_Pop(__pyx_v_self->_ns_stack); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1209, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyList_Pop(__pyx_v_self->_ns_stack); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1199
+ /* "src/lxml/serializer.pxi":1198
* self._ns_stack.append([])
*
* def end(self, tag): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1211
+/* "src/lxml/serializer.pxi":1210
* self._ns_stack.pop()
*
* def comment(self, text): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("comment", 0);
- /* "src/lxml/serializer.pxi":1212
+ /* "src/lxml/serializer.pxi":1211
*
* def comment(self, text):
* if not self._with_comments: # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_v_self->_with_comments != 0)) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1213
+ /* "src/lxml/serializer.pxi":1212
* def comment(self, text):
* if not self._with_comments:
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1212
+ /* "src/lxml/serializer.pxi":1211
*
* def comment(self, text):
* if not self._with_comments: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1214
+ /* "src/lxml/serializer.pxi":1213
* if not self._with_comments:
* return
* if self._ignored_depth: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_ignored_depth != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1215
+ /* "src/lxml/serializer.pxi":1214
* return
* if self._ignored_depth:
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1214
+ /* "src/lxml/serializer.pxi":1213
* if not self._with_comments:
* return
* if self._ignored_depth: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1216
+ /* "src/lxml/serializer.pxi":1215
* if self._ignored_depth:
* return
* if self._root_done: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_root_done != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1217
+ /* "src/lxml/serializer.pxi":1216
* return
* if self._root_done:
* self._write(u'\n') # <<<<<<<<<<<<<<
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_u__19) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_u__19);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1217, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1216, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1216
+ /* "src/lxml/serializer.pxi":1215
* if self._ignored_depth:
* return
* if self._root_done: # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "src/lxml/serializer.pxi":1218
+ /* "src/lxml/serializer.pxi":1217
* if self._root_done:
* self._write(u'\n')
* elif self._root_seen and self._data: # <<<<<<<<<<<<<<
__pyx_L6_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1219
+ /* "src/lxml/serializer.pxi":1218
* self._write(u'\n')
* elif self._root_seen and self._data:
* self._flush() # <<<<<<<<<<<<<<
* self._write(f'<!--{_escape_cdata_c14n(text)}-->')
* if not self._root_seen:
*/
- __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1219, __pyx_L1_error)
+ __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1218, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1218
+ /* "src/lxml/serializer.pxi":1217
* if self._root_done:
* self._write(u'\n')
* elif self._root_seen and self._data: # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "src/lxml/serializer.pxi":1220
+ /* "src/lxml/serializer.pxi":1219
* elif self._root_seen and self._data:
* self._flush()
* self._write(f'<!--{_escape_cdata_c14n(text)}-->') # <<<<<<<<<<<<<<
* if not self._root_seen:
* self._write(u'\n')
*/
- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1220, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1219, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_6 = 0;
__pyx_t_7 = 127;
__pyx_t_6 += 4;
__Pyx_GIVEREF(__pyx_kp_u__73);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u__73);
- __pyx_t_4 = __pyx_f_4lxml_5etree__escape_cdata_c14n(__pyx_v_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1220, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__escape_cdata_c14n(__pyx_v_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1219, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_PyUnicode_Unicode(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1220, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyUnicode_Unicode(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1219, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7;
__pyx_t_6 += 3;
__Pyx_GIVEREF(__pyx_kp_u__74);
PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__74);
- __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1220, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1219, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_INCREF(__pyx_v_self->_write);
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1220, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1219, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1221
+ /* "src/lxml/serializer.pxi":1220
* self._flush()
* self._write(f'<!--{_escape_cdata_c14n(text)}-->')
* if not self._root_seen: # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_v_self->_root_seen != 0)) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1222
+ /* "src/lxml/serializer.pxi":1221
* self._write(f'<!--{_escape_cdata_c14n(text)}-->')
* if not self._root_seen:
* self._write(u'\n') # <<<<<<<<<<<<<<
}
__pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_8, __pyx_kp_u__19) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_u__19);
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1222, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1221, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1221
+ /* "src/lxml/serializer.pxi":1220
* self._flush()
* self._write(f'<!--{_escape_cdata_c14n(text)}-->')
* if not self._root_seen: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1211
+ /* "src/lxml/serializer.pxi":1210
* self._ns_stack.pop()
*
* def comment(self, text): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1224
+/* "src/lxml/serializer.pxi":1223
* self._write(u'\n')
*
* def pi(self, target, data): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("pi", 1, 2, 2, 1); __PYX_ERR(9, 1224, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("pi", 1, 2, 2, 1); __PYX_ERR(9, 1223, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pi") < 0)) __PYX_ERR(9, 1224, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pi") < 0)) __PYX_ERR(9, 1223, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("pi", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1224, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("pi", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1223, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.C14NWriterTarget.pi", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("pi", 0);
- /* "src/lxml/serializer.pxi":1225
+ /* "src/lxml/serializer.pxi":1224
*
* def pi(self, target, data):
* if self._ignored_depth: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_ignored_depth != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1226
+ /* "src/lxml/serializer.pxi":1225
* def pi(self, target, data):
* if self._ignored_depth:
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1225
+ /* "src/lxml/serializer.pxi":1224
*
* def pi(self, target, data):
* if self._ignored_depth: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1227
+ /* "src/lxml/serializer.pxi":1226
* if self._ignored_depth:
* return
* if self._root_done: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_root_done != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1228
+ /* "src/lxml/serializer.pxi":1227
* return
* if self._root_done:
* self._write(u'\n') # <<<<<<<<<<<<<<
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_u__19) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_u__19);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1228, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1227, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1227
+ /* "src/lxml/serializer.pxi":1226
* if self._ignored_depth:
* return
* if self._root_done: # <<<<<<<<<<<<<<
goto __pyx_L4;
}
- /* "src/lxml/serializer.pxi":1229
+ /* "src/lxml/serializer.pxi":1228
* if self._root_done:
* self._write(u'\n')
* elif self._root_seen and self._data: # <<<<<<<<<<<<<<
__pyx_L5_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1230
+ /* "src/lxml/serializer.pxi":1229
* self._write(u'\n')
* elif self._root_seen and self._data:
* self._flush() # <<<<<<<<<<<<<<
* self._write(
* f'<?{target} {_escape_cdata_c14n(data)}?>' if data else f'<?{target}?>')
*/
- __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1230, __pyx_L1_error)
+ __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_C14NWriterTarget *)__pyx_v_self->__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1229
+ /* "src/lxml/serializer.pxi":1228
* if self._root_done:
* self._write(u'\n')
* elif self._root_seen and self._data: # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "src/lxml/serializer.pxi":1232
+ /* "src/lxml/serializer.pxi":1231
* self._flush()
* self._write(
* f'<?{target} {_escape_cdata_c14n(data)}?>' if data else f'<?{target}?>') # <<<<<<<<<<<<<<
* if not self._root_seen:
* self._write(u'\n')
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_data); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1232, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_data); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1231, __pyx_L1_error)
if (__pyx_t_1) {
- __pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1232, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6 = 0;
__pyx_t_7 = 127;
__pyx_t_6 += 2;
__Pyx_GIVEREF(__pyx_kp_u__75);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u__75);
- __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_target, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1232, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_target, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7;
__pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8);
__pyx_t_6 += 1;
__Pyx_GIVEREF(__pyx_kp_u__11);
PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__11);
- __pyx_t_8 = __pyx_f_4lxml_5etree__escape_cdata_c14n(__pyx_v_data); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1232, __pyx_L1_error)
+ __pyx_t_8 = __pyx_f_4lxml_5etree__escape_cdata_c14n(__pyx_v_data); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1232, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_7;
__pyx_t_6 += 2;
__Pyx_GIVEREF(__pyx_kp_u__48);
PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_kp_u__48);
- __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_4, 5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1232, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_4, 5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_3 = __pyx_t_9;
__pyx_t_9 = 0;
} else {
- __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1232, __pyx_L1_error)
+ __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_6 = 0;
__pyx_t_7 = 127;
__pyx_t_6 += 2;
__Pyx_GIVEREF(__pyx_kp_u__75);
PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_kp_u__75);
- __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_target, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1232, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_target, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7;
__pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
__pyx_t_6 += 2;
__Pyx_GIVEREF(__pyx_kp_u__48);
PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_kp_u__48);
- __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1232, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_3 = __pyx_t_4;
__pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_9, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1231, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1230, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1233
+ /* "src/lxml/serializer.pxi":1232
* self._write(
* f'<?{target} {_escape_cdata_c14n(data)}?>' if data else f'<?{target}?>')
* if not self._root_seen: # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_v_self->_root_seen != 0)) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1234
+ /* "src/lxml/serializer.pxi":1233
* f'<?{target} {_escape_cdata_c14n(data)}?>' if data else f'<?{target}?>')
* if not self._root_seen:
* self._write(u'\n') # <<<<<<<<<<<<<<
}
__pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_kp_u__19) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u__19);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1234, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1233, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1233
+ /* "src/lxml/serializer.pxi":1232
* self._write(
* f'<?{target} {_escape_cdata_c14n(data)}?>' if data else f'<?{target}?>')
* if not self._root_seen: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1224
+ /* "src/lxml/serializer.pxi":1223
* self._write(u'\n')
*
* def pi(self, target, data): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1236
+/* "src/lxml/serializer.pxi":1235
* self._write(u'\n')
*
* def close(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("close", 0);
- /* "src/lxml/serializer.pxi":1237
+ /* "src/lxml/serializer.pxi":1236
*
* def close(self):
* return None # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1236
+ /* "src/lxml/serializer.pxi":1235
* self._write(u'\n')
*
* def close(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1240
+/* "src/lxml/serializer.pxi":1239
*
*
* cdef _raise_serialization_error(text): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_raise_serialization_error", 0);
- /* "src/lxml/serializer.pxi":1241
+ /* "src/lxml/serializer.pxi":1240
*
* cdef _raise_serialization_error(text):
* raise TypeError("cannot serialize %r (type %s)" % (text, type(text).__name__)) # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_text)), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1241, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_text)), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1240, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1241, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1240, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_text);
__Pyx_GIVEREF(__pyx_v_text);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_cannot_serialize_r_type_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1241, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_cannot_serialize_r_type_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1240, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1241, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1240, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1241, __pyx_L1_error)
+ __PYX_ERR(9, 1240, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1240
+ /* "src/lxml/serializer.pxi":1239
*
*
* cdef _raise_serialization_error(text): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1244
+/* "src/lxml/serializer.pxi":1243
*
*
* cdef unicode _escape_cdata_c14n(stext): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_escape_cdata_c14n", 0);
- /* "src/lxml/serializer.pxi":1247
+ /* "src/lxml/serializer.pxi":1246
* # escape character data
* cdef unicode text
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "src/lxml/serializer.pxi":1251
+ /* "src/lxml/serializer.pxi":1250
* # shorter than 500 character, or so. assume that's, by far,
* # the most common case in most applications.
* text = unicode(stext) # <<<<<<<<<<<<<<
* if u'&' in text:
* text = text.replace(u'&', u'&')
*/
- __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_stext); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1251, __pyx_L3_error)
+ __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_stext); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1250, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_text = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1252
+ /* "src/lxml/serializer.pxi":1251
* # the most common case in most applications.
* text = unicode(stext)
* if u'&' in text: # <<<<<<<<<<<<<<
* text = text.replace(u'&', u'&')
* if u'<' in text:
*/
- __pyx_t_5 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__29, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1252, __pyx_L3_error)
+ __pyx_t_5 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__29, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1251, __pyx_L3_error)
__pyx_t_6 = (__pyx_t_5 != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":1253
+ /* "src/lxml/serializer.pxi":1252
* text = unicode(stext)
* if u'&' in text:
* text = text.replace(u'&', u'&') # <<<<<<<<<<<<<<
* if u'<' in text:
* text = text.replace(u'<', u'<')
*/
- __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__29, __pyx_kp_u_amp, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1253, __pyx_L3_error)
+ __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__29, __pyx_kp_u_amp, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1252, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1252
+ /* "src/lxml/serializer.pxi":1251
* # the most common case in most applications.
* text = unicode(stext)
* if u'&' in text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1254
+ /* "src/lxml/serializer.pxi":1253
* if u'&' in text:
* text = text.replace(u'&', u'&')
* if u'<' in text: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1254, __pyx_L3_error)
+ __PYX_ERR(9, 1253, __pyx_L3_error)
}
- __pyx_t_6 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__70, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1254, __pyx_L3_error)
+ __pyx_t_6 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__70, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1253, __pyx_L3_error)
__pyx_t_5 = (__pyx_t_6 != 0);
if (__pyx_t_5) {
- /* "src/lxml/serializer.pxi":1255
+ /* "src/lxml/serializer.pxi":1254
* text = text.replace(u'&', u'&')
* if u'<' in text:
* text = text.replace(u'<', u'<') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
- __PYX_ERR(9, 1255, __pyx_L3_error)
+ __PYX_ERR(9, 1254, __pyx_L3_error)
}
- __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__70, __pyx_kp_u_lt, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1255, __pyx_L3_error)
+ __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__70, __pyx_kp_u_lt, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1254, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1254
+ /* "src/lxml/serializer.pxi":1253
* if u'&' in text:
* text = text.replace(u'&', u'&')
* if u'<' in text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1256
+ /* "src/lxml/serializer.pxi":1255
* if u'<' in text:
* text = text.replace(u'<', u'<')
* if u'>' in text: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1256, __pyx_L3_error)
+ __PYX_ERR(9, 1255, __pyx_L3_error)
}
- __pyx_t_5 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__26, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1256, __pyx_L3_error)
+ __pyx_t_5 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__26, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1255, __pyx_L3_error)
__pyx_t_6 = (__pyx_t_5 != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":1257
+ /* "src/lxml/serializer.pxi":1256
* text = text.replace(u'<', u'<')
* if u'>' in text:
* text = text.replace(u'>', u'>') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
- __PYX_ERR(9, 1257, __pyx_L3_error)
+ __PYX_ERR(9, 1256, __pyx_L3_error)
}
- __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__26, __pyx_kp_u_gt, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1257, __pyx_L3_error)
+ __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__26, __pyx_kp_u_gt, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1256, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1256
+ /* "src/lxml/serializer.pxi":1255
* if u'<' in text:
* text = text.replace(u'<', u'<')
* if u'>' in text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1258
+ /* "src/lxml/serializer.pxi":1257
* if u'>' in text:
* text = text.replace(u'>', u'>')
* if u'\r' in text: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1258, __pyx_L3_error)
+ __PYX_ERR(9, 1257, __pyx_L3_error)
}
- __pyx_t_6 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__76, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1258, __pyx_L3_error)
+ __pyx_t_6 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__76, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1257, __pyx_L3_error)
__pyx_t_5 = (__pyx_t_6 != 0);
if (__pyx_t_5) {
- /* "src/lxml/serializer.pxi":1259
+ /* "src/lxml/serializer.pxi":1258
* text = text.replace(u'>', u'>')
* if u'\r' in text:
* text = text.replace(u'\r', u'
') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
- __PYX_ERR(9, 1259, __pyx_L3_error)
+ __PYX_ERR(9, 1258, __pyx_L3_error)
}
- __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__76, __pyx_kp_u_xD, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1259, __pyx_L3_error)
+ __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__76, __pyx_kp_u_xD, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1258, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1258
+ /* "src/lxml/serializer.pxi":1257
* if u'>' in text:
* text = text.replace(u'>', u'>')
* if u'\r' in text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1260
+ /* "src/lxml/serializer.pxi":1259
* if u'\r' in text:
* text = text.replace(u'\r', u'
')
* return text # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_text;
goto __pyx_L7_try_return;
- /* "src/lxml/serializer.pxi":1247
+ /* "src/lxml/serializer.pxi":1246
* # escape character data
* cdef unicode text
* try: # <<<<<<<<<<<<<<
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1261
+ /* "src/lxml/serializer.pxi":1260
* text = text.replace(u'\r', u'
')
* return text
* except (TypeError, AttributeError): # <<<<<<<<<<<<<<
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
if (__pyx_t_7) {
__Pyx_AddTraceback("lxml.etree._escape_cdata_c14n", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(9, 1261, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(9, 1260, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GOTREF(__pyx_t_9);
- /* "src/lxml/serializer.pxi":1262
+ /* "src/lxml/serializer.pxi":1261
* return text
* except (TypeError, AttributeError):
* _raise_serialization_error(stext) # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_10 = __pyx_f_4lxml_5etree__raise_serialization_error(__pyx_v_stext); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1262, __pyx_L5_except_error)
+ __pyx_t_10 = __pyx_f_4lxml_5etree__raise_serialization_error(__pyx_v_stext); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1261, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "src/lxml/serializer.pxi":1247
+ /* "src/lxml/serializer.pxi":1246
* # escape character data
* cdef unicode text
* try: # <<<<<<<<<<<<<<
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
}
- /* "src/lxml/serializer.pxi":1244
+ /* "src/lxml/serializer.pxi":1243
*
*
* cdef unicode _escape_cdata_c14n(stext): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1265
+/* "src/lxml/serializer.pxi":1264
*
*
* cdef unicode _escape_attrib_c14n(stext): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_escape_attrib_c14n", 0);
- /* "src/lxml/serializer.pxi":1268
+ /* "src/lxml/serializer.pxi":1267
* # escape attribute value
* cdef unicode text
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "src/lxml/serializer.pxi":1269
+ /* "src/lxml/serializer.pxi":1268
* cdef unicode text
* try:
* text = unicode(stext) # <<<<<<<<<<<<<<
* if u'&' in text:
* text = text.replace(u'&', u'&')
*/
- __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_stext); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1269, __pyx_L3_error)
+ __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_stext); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1268, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_text = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1270
+ /* "src/lxml/serializer.pxi":1269
* try:
* text = unicode(stext)
* if u'&' in text: # <<<<<<<<<<<<<<
* text = text.replace(u'&', u'&')
* if u'<' in text:
*/
- __pyx_t_5 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__29, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1270, __pyx_L3_error)
+ __pyx_t_5 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__29, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1269, __pyx_L3_error)
__pyx_t_6 = (__pyx_t_5 != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":1271
+ /* "src/lxml/serializer.pxi":1270
* text = unicode(stext)
* if u'&' in text:
* text = text.replace(u'&', u'&') # <<<<<<<<<<<<<<
* if u'<' in text:
* text = text.replace(u'<', u'<')
*/
- __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__29, __pyx_kp_u_amp, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1271, __pyx_L3_error)
+ __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__29, __pyx_kp_u_amp, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1270, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1270
+ /* "src/lxml/serializer.pxi":1269
* try:
* text = unicode(stext)
* if u'&' in text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1272
+ /* "src/lxml/serializer.pxi":1271
* if u'&' in text:
* text = text.replace(u'&', u'&')
* if u'<' in text: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1272, __pyx_L3_error)
+ __PYX_ERR(9, 1271, __pyx_L3_error)
}
- __pyx_t_6 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__70, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1272, __pyx_L3_error)
+ __pyx_t_6 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__70, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1271, __pyx_L3_error)
__pyx_t_5 = (__pyx_t_6 != 0);
if (__pyx_t_5) {
- /* "src/lxml/serializer.pxi":1273
+ /* "src/lxml/serializer.pxi":1272
* text = text.replace(u'&', u'&')
* if u'<' in text:
* text = text.replace(u'<', u'<') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
- __PYX_ERR(9, 1273, __pyx_L3_error)
+ __PYX_ERR(9, 1272, __pyx_L3_error)
}
- __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__70, __pyx_kp_u_lt, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1273, __pyx_L3_error)
+ __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__70, __pyx_kp_u_lt, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1272, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1272
+ /* "src/lxml/serializer.pxi":1271
* if u'&' in text:
* text = text.replace(u'&', u'&')
* if u'<' in text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1274
+ /* "src/lxml/serializer.pxi":1273
* if u'<' in text:
* text = text.replace(u'<', u'<')
* if u'"' in text: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1274, __pyx_L3_error)
+ __PYX_ERR(9, 1273, __pyx_L3_error)
}
- __pyx_t_5 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__23, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1274, __pyx_L3_error)
+ __pyx_t_5 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__23, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1273, __pyx_L3_error)
__pyx_t_6 = (__pyx_t_5 != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":1275
+ /* "src/lxml/serializer.pxi":1274
* text = text.replace(u'<', u'<')
* if u'"' in text:
* text = text.replace(u'"', u'"') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
- __PYX_ERR(9, 1275, __pyx_L3_error)
+ __PYX_ERR(9, 1274, __pyx_L3_error)
}
- __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__23, __pyx_kp_u_quot, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1275, __pyx_L3_error)
+ __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__23, __pyx_kp_u_quot, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1274, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1274
+ /* "src/lxml/serializer.pxi":1273
* if u'<' in text:
* text = text.replace(u'<', u'<')
* if u'"' in text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1276
+ /* "src/lxml/serializer.pxi":1275
* if u'"' in text:
* text = text.replace(u'"', u'"')
* if u'\t' in text: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1276, __pyx_L3_error)
+ __PYX_ERR(9, 1275, __pyx_L3_error)
}
- __pyx_t_6 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__77, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1276, __pyx_L3_error)
+ __pyx_t_6 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__77, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1275, __pyx_L3_error)
__pyx_t_5 = (__pyx_t_6 != 0);
if (__pyx_t_5) {
- /* "src/lxml/serializer.pxi":1277
+ /* "src/lxml/serializer.pxi":1276
* text = text.replace(u'"', u'"')
* if u'\t' in text:
* text = text.replace(u'\t', u'	') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
- __PYX_ERR(9, 1277, __pyx_L3_error)
+ __PYX_ERR(9, 1276, __pyx_L3_error)
}
- __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__77, __pyx_kp_u_x9, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1277, __pyx_L3_error)
+ __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__77, __pyx_kp_u_x9, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1276, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1276
+ /* "src/lxml/serializer.pxi":1275
* if u'"' in text:
* text = text.replace(u'"', u'"')
* if u'\t' in text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1278
+ /* "src/lxml/serializer.pxi":1277
* if u'\t' in text:
* text = text.replace(u'\t', u'	')
* if u'\n' in text: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1278, __pyx_L3_error)
+ __PYX_ERR(9, 1277, __pyx_L3_error)
}
- __pyx_t_5 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__19, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1278, __pyx_L3_error)
+ __pyx_t_5 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__19, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 1277, __pyx_L3_error)
__pyx_t_6 = (__pyx_t_5 != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":1279
+ /* "src/lxml/serializer.pxi":1278
* text = text.replace(u'\t', u'	')
* if u'\n' in text:
* text = text.replace(u'\n', u'
') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
- __PYX_ERR(9, 1279, __pyx_L3_error)
+ __PYX_ERR(9, 1278, __pyx_L3_error)
}
- __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__19, __pyx_kp_u_xA, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1279, __pyx_L3_error)
+ __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__19, __pyx_kp_u_xA, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1278, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1278
+ /* "src/lxml/serializer.pxi":1277
* if u'\t' in text:
* text = text.replace(u'\t', u'	')
* if u'\n' in text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1280
+ /* "src/lxml/serializer.pxi":1279
* if u'\n' in text:
* text = text.replace(u'\n', u'
')
* if u'\r' in text: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1280, __pyx_L3_error)
+ __PYX_ERR(9, 1279, __pyx_L3_error)
}
- __pyx_t_6 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__76, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1280, __pyx_L3_error)
+ __pyx_t_6 = (__Pyx_PyUnicode_ContainsTF(__pyx_kp_u__76, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1279, __pyx_L3_error)
__pyx_t_5 = (__pyx_t_6 != 0);
if (__pyx_t_5) {
- /* "src/lxml/serializer.pxi":1281
+ /* "src/lxml/serializer.pxi":1280
* text = text.replace(u'\n', u'
')
* if u'\r' in text:
* text = text.replace(u'\r', u'
') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_text == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
- __PYX_ERR(9, 1281, __pyx_L3_error)
+ __PYX_ERR(9, 1280, __pyx_L3_error)
}
- __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__76, __pyx_kp_u_xD, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1281, __pyx_L3_error)
+ __pyx_t_4 = PyUnicode_Replace(__pyx_v_text, __pyx_kp_u__76, __pyx_kp_u_xD, -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1280, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1280
+ /* "src/lxml/serializer.pxi":1279
* if u'\n' in text:
* text = text.replace(u'\n', u'
')
* if u'\r' in text: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1282
+ /* "src/lxml/serializer.pxi":1281
* if u'\r' in text:
* text = text.replace(u'\r', u'
')
* return text # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_text;
goto __pyx_L7_try_return;
- /* "src/lxml/serializer.pxi":1268
+ /* "src/lxml/serializer.pxi":1267
* # escape attribute value
* cdef unicode text
* try: # <<<<<<<<<<<<<<
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1283
+ /* "src/lxml/serializer.pxi":1282
* text = text.replace(u'\r', u'
')
* return text
* except (TypeError, AttributeError): # <<<<<<<<<<<<<<
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
if (__pyx_t_7) {
__Pyx_AddTraceback("lxml.etree._escape_attrib_c14n", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(9, 1283, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(9, 1282, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GOTREF(__pyx_t_9);
- /* "src/lxml/serializer.pxi":1284
+ /* "src/lxml/serializer.pxi":1283
* return text
* except (TypeError, AttributeError):
* _raise_serialization_error(stext) # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_10 = __pyx_f_4lxml_5etree__raise_serialization_error(__pyx_v_stext); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1284, __pyx_L5_except_error)
+ __pyx_t_10 = __pyx_f_4lxml_5etree__raise_serialization_error(__pyx_v_stext); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1283, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "src/lxml/serializer.pxi":1268
+ /* "src/lxml/serializer.pxi":1267
* # escape attribute value
* cdef unicode text
* try: # <<<<<<<<<<<<<<
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
}
- /* "src/lxml/serializer.pxi":1265
+ /* "src/lxml/serializer.pxi":1264
*
*
* cdef unicode _escape_attrib_c14n(stext): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1334
+/* "src/lxml/serializer.pxi":1333
* cdef int method
*
* def __init__(self, output_file not None, encoding=None, compression=None, # <<<<<<<<<<<<<<
values[1] = ((PyObject *)Py_None);
values[2] = ((PyObject *)Py_None);
- /* "src/lxml/serializer.pxi":1335
+ /* "src/lxml/serializer.pxi":1334
*
* def __init__(self, output_file not None, encoding=None, compression=None,
* close=False, buffered=True): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(9, 1334, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(9, 1333, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1334, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1333, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.xmlfile.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
if (unlikely(((PyObject *)__pyx_v_output_file) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_file"); __PYX_ERR(9, 1334, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_file"); __PYX_ERR(9, 1333, __pyx_L1_error)
}
__pyx_r = __pyx_pf_4lxml_5etree_7xmlfile___init__(((struct __pyx_obj_4lxml_5etree_xmlfile *)__pyx_v_self), __pyx_v_output_file, __pyx_v_encoding, __pyx_v_compression, __pyx_v_close, __pyx_v_buffered);
- /* "src/lxml/serializer.pxi":1334
+ /* "src/lxml/serializer.pxi":1333
* cdef int method
*
* def __init__(self, output_file not None, encoding=None, compression=None, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__init__", 0);
- /* "src/lxml/serializer.pxi":1336
+ /* "src/lxml/serializer.pxi":1335
* def __init__(self, output_file not None, encoding=None, compression=None,
* close=False, buffered=True):
* self.output_file = output_file # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->output_file);
__pyx_v_self->output_file = __pyx_v_output_file;
- /* "src/lxml/serializer.pxi":1337
+ /* "src/lxml/serializer.pxi":1336
* close=False, buffered=True):
* self.output_file = output_file
* self.encoding = _utf8orNone(encoding) # <<<<<<<<<<<<<<
* self.compresslevel = compression or 0
* self.close = close
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__utf8orNone(__pyx_v_encoding); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1337, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree__utf8orNone(__pyx_v_encoding); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1336, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->encoding);
__pyx_v_self->encoding = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1338
+ /* "src/lxml/serializer.pxi":1337
* self.output_file = output_file
* self.encoding = _utf8orNone(encoding)
* self.compresslevel = compression or 0 # <<<<<<<<<<<<<<
* self.close = close
* self.buffered = buffered
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_compression); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1338, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_compression); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1337, __pyx_L1_error)
if (!__pyx_t_3) {
} else {
- __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_compression); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1338, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_compression); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1337, __pyx_L1_error)
__pyx_t_2 = __pyx_t_4;
goto __pyx_L3_bool_binop_done;
}
__pyx_L3_bool_binop_done:;
__pyx_v_self->compresslevel = __pyx_t_2;
- /* "src/lxml/serializer.pxi":1339
+ /* "src/lxml/serializer.pxi":1338
* self.encoding = _utf8orNone(encoding)
* self.compresslevel = compression or 0
* self.close = close # <<<<<<<<<<<<<<
* self.buffered = buffered
* self.method = OUTPUT_METHOD_XML
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_close); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1339, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_close); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1338, __pyx_L1_error)
__pyx_v_self->close = __pyx_t_3;
- /* "src/lxml/serializer.pxi":1340
+ /* "src/lxml/serializer.pxi":1339
* self.compresslevel = compression or 0
* self.close = close
* self.buffered = buffered # <<<<<<<<<<<<<<
* self.method = OUTPUT_METHOD_XML
*
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_buffered); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1340, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_buffered); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1339, __pyx_L1_error)
__pyx_v_self->buffered = __pyx_t_3;
- /* "src/lxml/serializer.pxi":1341
+ /* "src/lxml/serializer.pxi":1340
* self.close = close
* self.buffered = buffered
* self.method = OUTPUT_METHOD_XML # <<<<<<<<<<<<<<
*/
__pyx_v_self->method = __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML;
- /* "src/lxml/serializer.pxi":1334
+ /* "src/lxml/serializer.pxi":1333
* cdef int method
*
* def __init__(self, output_file not None, encoding=None, compression=None, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1343
+/* "src/lxml/serializer.pxi":1342
* self.method = OUTPUT_METHOD_XML
*
* def __enter__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__enter__", 0);
- /* "src/lxml/serializer.pxi":1344
+ /* "src/lxml/serializer.pxi":1343
*
* def __enter__(self):
* assert self.output_file is not None # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->output_file != Py_None);
if (unlikely(!(__pyx_t_1 != 0))) {
PyErr_SetNone(PyExc_AssertionError);
- __PYX_ERR(9, 1344, __pyx_L1_error)
+ __PYX_ERR(9, 1343, __pyx_L1_error)
}
}
#endif
- /* "src/lxml/serializer.pxi":1346
+ /* "src/lxml/serializer.pxi":1345
* assert self.output_file is not None
* self.writer = _IncrementalFileWriter(
* self.output_file, self.encoding, self.compresslevel, # <<<<<<<<<<<<<<
* self.close, self.buffered, self.method)
* return self.writer
*/
- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->compresslevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1346, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->compresslevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1345, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- /* "src/lxml/serializer.pxi":1347
+ /* "src/lxml/serializer.pxi":1346
* self.writer = _IncrementalFileWriter(
* self.output_file, self.encoding, self.compresslevel,
* self.close, self.buffered, self.method) # <<<<<<<<<<<<<<
* return self.writer
*
*/
- __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->close); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1347, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->close); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1346, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_self->buffered); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1347, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_self->buffered); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1346, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_self->method); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1347, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_self->method); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1346, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- /* "src/lxml/serializer.pxi":1345
+ /* "src/lxml/serializer.pxi":1344
* def __enter__(self):
* assert self.output_file is not None
* self.writer = _IncrementalFileWriter( # <<<<<<<<<<<<<<
* self.output_file, self.encoding, self.compresslevel,
* self.close, self.buffered, self.method)
*/
- __pyx_t_6 = PyTuple_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1345, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1344, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_self->output_file);
__Pyx_GIVEREF(__pyx_v_self->output_file);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1345, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1344, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_GIVEREF(__pyx_t_5);
__pyx_v_self->writer = ((struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *)__pyx_t_5);
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1348
+ /* "src/lxml/serializer.pxi":1347
* self.output_file, self.encoding, self.compresslevel,
* self.close, self.buffered, self.method)
* return self.writer # <<<<<<<<<<<<<<
__pyx_r = ((PyObject *)__pyx_v_self->writer);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1343
+ /* "src/lxml/serializer.pxi":1342
* self.method = OUTPUT_METHOD_XML
*
* def __enter__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1350
+/* "src/lxml/serializer.pxi":1349
* return self.writer
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_val)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(9, 1350, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(9, 1349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_tb)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(9, 1350, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(9, 1349, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(9, 1350, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(9, 1349, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1350, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1349, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.xmlfile.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__exit__", 0);
- /* "src/lxml/serializer.pxi":1351
+ /* "src/lxml/serializer.pxi":1350
*
* def __exit__(self, exc_type, exc_val, exc_tb):
* if self.writer is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1352
+ /* "src/lxml/serializer.pxi":1351
* def __exit__(self, exc_type, exc_val, exc_tb):
* if self.writer is not None:
* old_writer, self.writer = self.writer, None # <<<<<<<<<<<<<<
__pyx_v_self->writer = ((struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1353
+ /* "src/lxml/serializer.pxi":1352
* if self.writer is not None:
* old_writer, self.writer = self.writer, None
* raise_on_error = exc_type is None # <<<<<<<<<<<<<<
* if self.close:
*/
__pyx_t_2 = (__pyx_v_exc_type == Py_None);
- __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1353, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1352, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_raise_on_error = __pyx_t_4;
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1354
+ /* "src/lxml/serializer.pxi":1353
* old_writer, self.writer = self.writer, None
* raise_on_error = exc_type is None
* old_writer._close(raise_on_error) # <<<<<<<<<<<<<<
* if self.close:
* self.output_file = None
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_raise_on_error); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1354, __pyx_L1_error)
- __pyx_t_4 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(__pyx_v_old_writer, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1354, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_raise_on_error); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1353, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(__pyx_v_old_writer, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1353, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1355
+ /* "src/lxml/serializer.pxi":1354
* raise_on_error = exc_type is None
* old_writer._close(raise_on_error)
* if self.close: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_self->close != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1356
+ /* "src/lxml/serializer.pxi":1355
* old_writer._close(raise_on_error)
* if self.close:
* self.output_file = None # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->output_file);
__pyx_v_self->output_file = Py_None;
- /* "src/lxml/serializer.pxi":1355
+ /* "src/lxml/serializer.pxi":1354
* raise_on_error = exc_type is None
* old_writer._close(raise_on_error)
* if self.close: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1351
+ /* "src/lxml/serializer.pxi":1350
*
* def __exit__(self, exc_type, exc_val, exc_tb):
* if self.writer is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1350
+ /* "src/lxml/serializer.pxi":1349
* return self.writer
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1358
+/* "src/lxml/serializer.pxi":1357
* self.output_file = None
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_2___aenter__ *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1358, __pyx_L1_error)
+ __PYX_ERR(9, 1357, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_7xmlfile_8generator2, __pyx_codeobj__78, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_xmlfile___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1358, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_7xmlfile_8generator2, __pyx_codeobj__78, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_xmlfile___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1357, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1358, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1357, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1359
+ /* "src/lxml/serializer.pxi":1358
*
* async def __aenter__(self):
* assert self.output_file is not None # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->output_file != Py_None);
if (unlikely(!(__pyx_t_1 != 0))) {
PyErr_SetNone(PyExc_AssertionError);
- __PYX_ERR(9, 1359, __pyx_L1_error)
+ __PYX_ERR(9, 1358, __pyx_L1_error)
}
}
#endif
- /* "src/lxml/serializer.pxi":1360
+ /* "src/lxml/serializer.pxi":1359
* async def __aenter__(self):
* assert self.output_file is not None
* if isinstance(self.output_file, basestring): # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_1 != 0);
if (unlikely(__pyx_t_3)) {
- /* "src/lxml/serializer.pxi":1361
+ /* "src/lxml/serializer.pxi":1360
* assert self.output_file is not None
* if isinstance(self.output_file, basestring):
* raise TypeError("Cannot asynchronously write to a plain file") # <<<<<<<<<<<<<<
* if not hasattr(self.output_file, 'write'):
* raise TypeError("Output file needs an async .write() method")
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1361, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1360, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1361, __pyx_L1_error)
+ __PYX_ERR(9, 1360, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1360
+ /* "src/lxml/serializer.pxi":1359
* async def __aenter__(self):
* assert self.output_file is not None
* if isinstance(self.output_file, basestring): # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1362
+ /* "src/lxml/serializer.pxi":1361
* if isinstance(self.output_file, basestring):
* raise TypeError("Cannot asynchronously write to a plain file")
* if not hasattr(self.output_file, 'write'): # <<<<<<<<<<<<<<
*/
__pyx_t_2 = __pyx_cur_scope->__pyx_v_self->output_file;
__Pyx_INCREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_HasAttr(__pyx_t_2, __pyx_n_s_write); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 1362, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_HasAttr(__pyx_t_2, __pyx_n_s_write); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 1361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_1 = ((!(__pyx_t_3 != 0)) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1363
+ /* "src/lxml/serializer.pxi":1362
* raise TypeError("Cannot asynchronously write to a plain file")
* if not hasattr(self.output_file, 'write'):
* raise TypeError("Output file needs an async .write() method") # <<<<<<<<<<<<<<
* self.async_writer = _AsyncIncrementalFileWriter(
* self.output_file, self.encoding, self.compresslevel,
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__80, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1363, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__80, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1362, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1363, __pyx_L1_error)
+ __PYX_ERR(9, 1362, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1362
+ /* "src/lxml/serializer.pxi":1361
* if isinstance(self.output_file, basestring):
* raise TypeError("Cannot asynchronously write to a plain file")
* if not hasattr(self.output_file, 'write'): # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1365
+ /* "src/lxml/serializer.pxi":1364
* raise TypeError("Output file needs an async .write() method")
* self.async_writer = _AsyncIncrementalFileWriter(
* self.output_file, self.encoding, self.compresslevel, # <<<<<<<<<<<<<<
* self.close, self.buffered, self.method)
* return self.async_writer
*/
- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->compresslevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1365, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->compresslevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- /* "src/lxml/serializer.pxi":1366
+ /* "src/lxml/serializer.pxi":1365
* self.async_writer = _AsyncIncrementalFileWriter(
* self.output_file, self.encoding, self.compresslevel,
* self.close, self.buffered, self.method) # <<<<<<<<<<<<<<
* return self.async_writer
*
*/
- __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_cur_scope->__pyx_v_self->close); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1366, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_cur_scope->__pyx_v_self->close); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_cur_scope->__pyx_v_self->buffered); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1366, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_cur_scope->__pyx_v_self->buffered); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->method); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1366, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->method); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- /* "src/lxml/serializer.pxi":1364
+ /* "src/lxml/serializer.pxi":1363
* if not hasattr(self.output_file, 'write'):
* raise TypeError("Output file needs an async .write() method")
* self.async_writer = _AsyncIncrementalFileWriter( # <<<<<<<<<<<<<<
* self.output_file, self.encoding, self.compresslevel,
* self.close, self.buffered, self.method)
*/
- __pyx_t_7 = PyTuple_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1364, __pyx_L1_error)
+ __pyx_t_7 = PyTuple_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1363, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->output_file);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->output_file);
__pyx_t_4 = 0;
__pyx_t_5 = 0;
__pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter), __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1364, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter), __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1363, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GIVEREF(__pyx_t_6);
__pyx_cur_scope->__pyx_v_self->async_writer = ((struct __pyx_obj_4lxml_5etree__AsyncIncrementalFileWriter *)__pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1367
+ /* "src/lxml/serializer.pxi":1366
* self.output_file, self.encoding, self.compresslevel,
* self.close, self.buffered, self.method)
* return self.async_writer # <<<<<<<<<<<<<<
goto __pyx_L0;
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1358
+ /* "src/lxml/serializer.pxi":1357
* self.output_file = None
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1369
+/* "src/lxml/serializer.pxi":1368
* return self.async_writer
*
* async def __aexit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_val)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__aexit__", 1, 3, 3, 1); __PYX_ERR(9, 1369, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__aexit__", 1, 3, 3, 1); __PYX_ERR(9, 1368, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_tb)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__aexit__", 1, 3, 3, 2); __PYX_ERR(9, 1369, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__aexit__", 1, 3, 3, 2); __PYX_ERR(9, 1368, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__aexit__") < 0)) __PYX_ERR(9, 1369, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__aexit__") < 0)) __PYX_ERR(9, 1368, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__aexit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1369, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__aexit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1368, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.xmlfile.__aexit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_3___aexit__ *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1369, __pyx_L1_error)
+ __PYX_ERR(9, 1368, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_exc_tb);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_exc_tb);
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_7xmlfile_11generator3, __pyx_codeobj__81, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_xmlfile___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1369, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_7xmlfile_11generator3, __pyx_codeobj__81, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_xmlfile___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1368, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1369, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1368, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1370
+ /* "src/lxml/serializer.pxi":1369
*
* async def __aexit__(self, exc_type, exc_val, exc_tb):
* if self.async_writer is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1371
+ /* "src/lxml/serializer.pxi":1370
* async def __aexit__(self, exc_type, exc_val, exc_tb):
* if self.async_writer is not None:
* old_writer, self.async_writer = self.async_writer, None # <<<<<<<<<<<<<<
__pyx_cur_scope->__pyx_v_self->async_writer = ((struct __pyx_obj_4lxml_5etree__AsyncIncrementalFileWriter *)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1372
+ /* "src/lxml/serializer.pxi":1371
* if self.async_writer is not None:
* old_writer, self.async_writer = self.async_writer, None
* raise_on_error = exc_type is None # <<<<<<<<<<<<<<
* if self.close:
*/
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_exc_type == Py_None);
- __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1372, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_cur_scope->__pyx_v_raise_on_error = __pyx_t_4;
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1373
+ /* "src/lxml/serializer.pxi":1372
* old_writer, self.async_writer = self.async_writer, None
* raise_on_error = exc_type is None
* await old_writer._close(raise_on_error) # <<<<<<<<<<<<<<
* if self.close:
* self.output_file = None
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_old_writer), __pyx_n_s_close_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1373, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_old_writer), __pyx_n_s_close_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1372, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_cur_scope->__pyx_v_raise_on_error) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_raise_on_error);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1373, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1372, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L5_resume_from_await:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1373, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1372, __pyx_L1_error)
} else {
PyObject* exc_type = __Pyx_PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
- else __PYX_ERR(9, 1373, __pyx_L1_error)
+ else __PYX_ERR(9, 1372, __pyx_L1_error)
}
}
- /* "src/lxml/serializer.pxi":1374
+ /* "src/lxml/serializer.pxi":1373
* raise_on_error = exc_type is None
* await old_writer._close(raise_on_error)
* if self.close: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_self->close != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1375
+ /* "src/lxml/serializer.pxi":1374
* await old_writer._close(raise_on_error)
* if self.close:
* self.output_file = None # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_cur_scope->__pyx_v_self->output_file);
__pyx_cur_scope->__pyx_v_self->output_file = Py_None;
- /* "src/lxml/serializer.pxi":1374
+ /* "src/lxml/serializer.pxi":1373
* raise_on_error = exc_type is None
* await old_writer._close(raise_on_error)
* if self.close: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1370
+ /* "src/lxml/serializer.pxi":1369
*
* async def __aexit__(self, exc_type, exc_val, exc_tb):
* if self.async_writer is not None: # <<<<<<<<<<<<<<
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1369
+ /* "src/lxml/serializer.pxi":1368
* return self.async_writer
*
* async def __aexit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1384
+/* "src/lxml/serializer.pxi":1383
* xmlfile.
* """
* def __init__(self, *args, **kwargs): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
- if (unlikely(__pyx_kwds)) {
- __pyx_v_kwargs = PyDict_Copy(__pyx_kwds); if (unlikely(!__pyx_v_kwargs)) return -1;
- __Pyx_GOTREF(__pyx_v_kwargs);
- } else {
- __pyx_v_kwargs = NULL;
- }
+ __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
+ __Pyx_GOTREF(__pyx_v_kwargs);
__Pyx_INCREF(__pyx_args);
__pyx_v_args = __pyx_args;
__pyx_r = __pyx_pf_4lxml_5etree_8htmlfile___init__(((struct __pyx_obj_4lxml_5etree_htmlfile *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__init__", 0);
- /* "src/lxml/serializer.pxi":1385
+ /* "src/lxml/serializer.pxi":1384
* """
* def __init__(self, *args, **kwargs):
* super().__init__(*args, **kwargs) # <<<<<<<<<<<<<<
* self.method = OUTPUT_METHOD_HTML
*
*/
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1385, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1384, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree_htmlfile));
__Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_5etree_htmlfile));
__Pyx_INCREF(((PyObject *)__pyx_v_self));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self));
PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1385, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1384, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1385, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1384, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1385, __pyx_L1_error)
+ __pyx_t_2 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1384, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1384, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1386
+ /* "src/lxml/serializer.pxi":1385
* def __init__(self, *args, **kwargs):
* super().__init__(*args, **kwargs)
* self.method = OUTPUT_METHOD_HTML # <<<<<<<<<<<<<<
*/
__pyx_v_self->__pyx_base.method = __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML;
- /* "src/lxml/serializer.pxi":1384
+ /* "src/lxml/serializer.pxi":1383
* xmlfile.
* """
* def __init__(self, *args, **kwargs): # <<<<<<<<<<<<<<
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("lxml.etree.htmlfile.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1409
+/* "src/lxml/serializer.pxi":1408
* cdef bint _buffered
*
* def __cinit__(self, outfile, bytes encoding, int compresslevel, bint close, # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_encoding)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 1); __PYX_ERR(9, 1409, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 1); __PYX_ERR(9, 1408, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_compresslevel)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 2); __PYX_ERR(9, 1409, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 2); __PYX_ERR(9, 1408, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_close)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 3); __PYX_ERR(9, 1409, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 3); __PYX_ERR(9, 1408, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_buffered)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 4); __PYX_ERR(9, 1409, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 4); __PYX_ERR(9, 1408, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 5); __PYX_ERR(9, 1409, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 5); __PYX_ERR(9, 1408, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 1409, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 1408, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
}
__pyx_v_outfile = values[0];
__pyx_v_encoding = ((PyObject*)values[1]);
- __pyx_v_compresslevel = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_compresslevel == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1409, __pyx_L3_error)
- __pyx_v_close = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_close == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1409, __pyx_L3_error)
- __pyx_v_buffered = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_buffered == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1410, __pyx_L3_error)
- __pyx_v_method = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_method == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1410, __pyx_L3_error)
+ __pyx_v_compresslevel = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_compresslevel == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1408, __pyx_L3_error)
+ __pyx_v_close = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_close == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1408, __pyx_L3_error)
+ __pyx_v_buffered = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_buffered == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1409, __pyx_L3_error)
+ __pyx_v_method = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_method == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1409, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1409, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1408, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._IncrementalFileWriter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_encoding), (&PyBytes_Type), 1, "encoding", 1))) __PYX_ERR(9, 1409, __pyx_L1_error)
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_encoding), (&PyBytes_Type), 1, "encoding", 1))) __PYX_ERR(9, 1408, __pyx_L1_error)
__pyx_r = __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(((struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *)__pyx_v_self), __pyx_v_outfile, __pyx_v_encoding, __pyx_v_compresslevel, __pyx_v_close, __pyx_v_buffered, __pyx_v_method);
/* function exit code */
__Pyx_RefNannySetupContext("__cinit__", 0);
__Pyx_INCREF(__pyx_v_encoding);
- /* "src/lxml/serializer.pxi":1411
+ /* "src/lxml/serializer.pxi":1410
* def __cinit__(self, outfile, bytes encoding, int compresslevel, bint close,
* bint buffered, int method):
* self._status = WRITER_STARTING # <<<<<<<<<<<<<<
*/
__pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_STARTING;
- /* "src/lxml/serializer.pxi":1412
+ /* "src/lxml/serializer.pxi":1411
* bint buffered, int method):
* self._status = WRITER_STARTING
* self._element_stack = [] # <<<<<<<<<<<<<<
* if encoding is None:
* encoding = b'ASCII'
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1412, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1411, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_element_stack);
__pyx_v_self->_element_stack = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1413
+ /* "src/lxml/serializer.pxi":1412
* self._status = WRITER_STARTING
* self._element_stack = []
* if encoding is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":1414
+ /* "src/lxml/serializer.pxi":1413
* self._element_stack = []
* if encoding is None:
* encoding = b'ASCII' # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_n_b_ASCII);
__Pyx_DECREF_SET(__pyx_v_encoding, __pyx_n_b_ASCII);
- /* "src/lxml/serializer.pxi":1413
+ /* "src/lxml/serializer.pxi":1412
* self._status = WRITER_STARTING
* self._element_stack = []
* if encoding is None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1415
+ /* "src/lxml/serializer.pxi":1414
* if encoding is None:
* encoding = b'ASCII'
* self._encoding = encoding # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_encoding);
__pyx_v_self->_encoding = __pyx_v_encoding;
- /* "src/lxml/serializer.pxi":1416
+ /* "src/lxml/serializer.pxi":1415
* encoding = b'ASCII'
* self._encoding = encoding
* self._c_encoding = _cstr(encoding) if encoding is not None else NULL # <<<<<<<<<<<<<<
}
__pyx_v_self->_c_encoding = __pyx_t_4;
- /* "src/lxml/serializer.pxi":1417
+ /* "src/lxml/serializer.pxi":1416
* self._encoding = encoding
* self._c_encoding = _cstr(encoding) if encoding is not None else NULL
* self._buffered = buffered # <<<<<<<<<<<<<<
*/
__pyx_v_self->_buffered = __pyx_v_buffered;
- /* "src/lxml/serializer.pxi":1418
+ /* "src/lxml/serializer.pxi":1417
* self._c_encoding = _cstr(encoding) if encoding is not None else NULL
* self._buffered = buffered
* self._target = _create_output_buffer( # <<<<<<<<<<<<<<
* outfile, self._c_encoding, compresslevel, &self._c_out, close)
* self._method = method
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__create_output_buffer(__pyx_v_outfile, __pyx_v_self->_c_encoding, __pyx_v_compresslevel, (&__pyx_v_self->_c_out), __pyx_v_close)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1418, __pyx_L1_error)
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__create_output_buffer(__pyx_v_outfile, __pyx_v_self->_c_encoding, __pyx_v_compresslevel, (&__pyx_v_self->_c_out), __pyx_v_close)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1417, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_target);
__pyx_v_self->_target = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1420
+ /* "src/lxml/serializer.pxi":1419
* self._target = _create_output_buffer(
* outfile, self._c_encoding, compresslevel, &self._c_out, close)
* self._method = method # <<<<<<<<<<<<<<
*/
__pyx_v_self->_method = __pyx_v_method;
- /* "src/lxml/serializer.pxi":1409
+ /* "src/lxml/serializer.pxi":1408
* cdef bint _buffered
*
* def __cinit__(self, outfile, bytes encoding, int compresslevel, bint close, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1422
+/* "src/lxml/serializer.pxi":1421
* self._method = method
*
* def __dealloc__(self): # <<<<<<<<<<<<<<
int __pyx_t_1;
__Pyx_RefNannySetupContext("__dealloc__", 0);
- /* "src/lxml/serializer.pxi":1423
+ /* "src/lxml/serializer.pxi":1422
*
* def __dealloc__(self):
* if self._c_out is not NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_self->_c_out != NULL) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1424
+ /* "src/lxml/serializer.pxi":1423
* def __dealloc__(self):
* if self._c_out is not NULL:
* tree.xmlOutputBufferClose(self._c_out) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferClose(__pyx_v_self->_c_out));
- /* "src/lxml/serializer.pxi":1423
+ /* "src/lxml/serializer.pxi":1422
*
* def __dealloc__(self):
* if self._c_out is not NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1422
+ /* "src/lxml/serializer.pxi":1421
* self._method = method
*
* def __dealloc__(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyFinishContext();
}
-/* "src/lxml/serializer.pxi":1426
+/* "src/lxml/serializer.pxi":1425
* tree.xmlOutputBufferClose(self._c_out)
*
* def write_declaration(self, version=None, standalone=None, doctype=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_declaration") < 0)) __PYX_ERR(9, 1426, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_declaration") < 0)) __PYX_ERR(9, 1425, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("write_declaration", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1426, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("write_declaration", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1425, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._IncrementalFileWriter.write_declaration", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_INCREF(__pyx_v_version);
__Pyx_INCREF(__pyx_v_doctype);
- /* "src/lxml/serializer.pxi":1431
+ /* "src/lxml/serializer.pxi":1430
* Write an XML declaration and (optionally) a doctype into the file.
* """
* assert self._c_out is not NULL # <<<<<<<<<<<<<<
if (unlikely(!Py_OptimizeFlag)) {
if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
PyErr_SetNone(PyExc_AssertionError);
- __PYX_ERR(9, 1431, __pyx_L1_error)
+ __PYX_ERR(9, 1430, __pyx_L1_error)
}
}
#endif
- /* "src/lxml/serializer.pxi":1434
+ /* "src/lxml/serializer.pxi":1433
* cdef const_xmlChar* c_version
* cdef int c_standalone
* if self._method != OUTPUT_METHOD_XML: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_self->_method != __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1435
+ /* "src/lxml/serializer.pxi":1434
* cdef int c_standalone
* if self._method != OUTPUT_METHOD_XML:
* raise LxmlSyntaxError("only XML documents have declarations") # <<<<<<<<<<<<<<
* if self._status >= WRITER_DECL_WRITTEN:
* raise LxmlSyntaxError("XML declaration already written")
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1435, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1434, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_only_XML_documents_have_declarat) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_only_XML_documents_have_declarat);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1435, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1434, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1435, __pyx_L1_error)
+ __PYX_ERR(9, 1434, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1434
+ /* "src/lxml/serializer.pxi":1433
* cdef const_xmlChar* c_version
* cdef int c_standalone
* if self._method != OUTPUT_METHOD_XML: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1436
+ /* "src/lxml/serializer.pxi":1435
* if self._method != OUTPUT_METHOD_XML:
* raise LxmlSyntaxError("only XML documents have declarations")
* if self._status >= WRITER_DECL_WRITTEN: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_self->_status >= __pyx_e_4lxml_5etree_WRITER_DECL_WRITTEN) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1437
+ /* "src/lxml/serializer.pxi":1436
* raise LxmlSyntaxError("only XML documents have declarations")
* if self._status >= WRITER_DECL_WRITTEN:
* raise LxmlSyntaxError("XML declaration already written") # <<<<<<<<<<<<<<
* version = _utf8orNone(version)
* c_version = _xcstr(version) if version is not None else NULL
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1437, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1436, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_XML_declaration_already_written) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_XML_declaration_already_written);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1437, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1436, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1437, __pyx_L1_error)
+ __PYX_ERR(9, 1436, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1436
+ /* "src/lxml/serializer.pxi":1435
* if self._method != OUTPUT_METHOD_XML:
* raise LxmlSyntaxError("only XML documents have declarations")
* if self._status >= WRITER_DECL_WRITTEN: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1438
+ /* "src/lxml/serializer.pxi":1437
* if self._status >= WRITER_DECL_WRITTEN:
* raise LxmlSyntaxError("XML declaration already written")
* version = _utf8orNone(version) # <<<<<<<<<<<<<<
* c_version = _xcstr(version) if version is not None else NULL
* doctype = _utf8orNone(doctype)
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree__utf8orNone(__pyx_v_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1438, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree__utf8orNone(__pyx_v_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1437, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF_SET(__pyx_v_version, __pyx_t_2);
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1439
+ /* "src/lxml/serializer.pxi":1438
* raise LxmlSyntaxError("XML declaration already written")
* version = _utf8orNone(version)
* c_version = _xcstr(version) if version is not None else NULL # <<<<<<<<<<<<<<
}
__pyx_v_c_version = __pyx_t_5;
- /* "src/lxml/serializer.pxi":1440
+ /* "src/lxml/serializer.pxi":1439
* version = _utf8orNone(version)
* c_version = _xcstr(version) if version is not None else NULL
* doctype = _utf8orNone(doctype) # <<<<<<<<<<<<<<
* if standalone is None:
* c_standalone = -1
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree__utf8orNone(__pyx_v_doctype); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1440, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree__utf8orNone(__pyx_v_doctype); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1439, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF_SET(__pyx_v_doctype, __pyx_t_2);
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1441
+ /* "src/lxml/serializer.pxi":1440
* c_version = _xcstr(version) if version is not None else NULL
* doctype = _utf8orNone(doctype)
* if standalone is None: # <<<<<<<<<<<<<<
__pyx_t_6 = (__pyx_t_1 != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":1442
+ /* "src/lxml/serializer.pxi":1441
* doctype = _utf8orNone(doctype)
* if standalone is None:
* c_standalone = -1 # <<<<<<<<<<<<<<
*/
__pyx_v_c_standalone = -1;
- /* "src/lxml/serializer.pxi":1441
+ /* "src/lxml/serializer.pxi":1440
* c_version = _xcstr(version) if version is not None else NULL
* doctype = _utf8orNone(doctype)
* if standalone is None: # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "src/lxml/serializer.pxi":1444
+ /* "src/lxml/serializer.pxi":1443
* c_standalone = -1
* else:
* c_standalone = 1 if standalone else 0 # <<<<<<<<<<<<<<
* if doctype is not None:
*/
/*else*/ {
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1444, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1443, __pyx_L1_error)
if (__pyx_t_6) {
__pyx_t_7 = 1;
} else {
}
__pyx_L5:;
- /* "src/lxml/serializer.pxi":1445
+ /* "src/lxml/serializer.pxi":1444
* else:
* c_standalone = 1 if standalone else 0
* _writeDeclarationToBuffer(self._c_out, c_version, self._c_encoding, c_standalone) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeDeclarationToBuffer(__pyx_v_self->_c_out, __pyx_v_c_version, __pyx_v_self->_c_encoding, __pyx_v_c_standalone);
- /* "src/lxml/serializer.pxi":1446
+ /* "src/lxml/serializer.pxi":1445
* c_standalone = 1 if standalone else 0
* _writeDeclarationToBuffer(self._c_out, c_version, self._c_encoding, c_standalone)
* if doctype is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_6 != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1447
+ /* "src/lxml/serializer.pxi":1446
* _writeDeclarationToBuffer(self._c_out, c_version, self._c_encoding, c_standalone)
* if doctype is not None:
* _writeDoctype(self._c_out, _xcstr(doctype)) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeDoctype(__pyx_v_self->_c_out, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_doctype));
- /* "src/lxml/serializer.pxi":1448
+ /* "src/lxml/serializer.pxi":1447
* if doctype is not None:
* _writeDoctype(self._c_out, _xcstr(doctype))
* self._status = WRITER_DTD_WRITTEN # <<<<<<<<<<<<<<
*/
__pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_DTD_WRITTEN;
- /* "src/lxml/serializer.pxi":1446
+ /* "src/lxml/serializer.pxi":1445
* c_standalone = 1 if standalone else 0
* _writeDeclarationToBuffer(self._c_out, c_version, self._c_encoding, c_standalone)
* if doctype is not None: # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":1450
+ /* "src/lxml/serializer.pxi":1449
* self._status = WRITER_DTD_WRITTEN
* else:
* self._status = WRITER_DECL_WRITTEN # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "src/lxml/serializer.pxi":1451
+ /* "src/lxml/serializer.pxi":1450
* else:
* self._status = WRITER_DECL_WRITTEN
* if not self._buffered: # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_v_self->_buffered != 0)) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1452
+ /* "src/lxml/serializer.pxi":1451
* self._status = WRITER_DECL_WRITTEN
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
- /* "src/lxml/serializer.pxi":1451
+ /* "src/lxml/serializer.pxi":1450
* else:
* self._status = WRITER_DECL_WRITTEN
* if not self._buffered: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1453
+ /* "src/lxml/serializer.pxi":1452
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out)
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* def write_doctype(self, doctype):
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1453, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1452, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1426
+ /* "src/lxml/serializer.pxi":1425
* tree.xmlOutputBufferClose(self._c_out)
*
* def write_declaration(self, version=None, standalone=None, doctype=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1455
+/* "src/lxml/serializer.pxi":1454
* self._handle_error(self._c_out.error)
*
* def write_doctype(self, doctype): # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("write_doctype", 0);
__Pyx_INCREF(__pyx_v_doctype);
- /* "src/lxml/serializer.pxi":1460
+ /* "src/lxml/serializer.pxi":1459
* Writes the given doctype declaration verbatimly into the file.
* """
* assert self._c_out is not NULL # <<<<<<<<<<<<<<
if (unlikely(!Py_OptimizeFlag)) {
if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
PyErr_SetNone(PyExc_AssertionError);
- __PYX_ERR(9, 1460, __pyx_L1_error)
+ __PYX_ERR(9, 1459, __pyx_L1_error)
}
}
#endif
- /* "src/lxml/serializer.pxi":1461
+ /* "src/lxml/serializer.pxi":1460
* """
* assert self._c_out is not NULL
* if doctype is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1462
+ /* "src/lxml/serializer.pxi":1461
* assert self._c_out is not NULL
* if doctype is None:
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1461
+ /* "src/lxml/serializer.pxi":1460
* """
* assert self._c_out is not NULL
* if doctype is None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1463
+ /* "src/lxml/serializer.pxi":1462
* if doctype is None:
* return
* if self._status >= WRITER_DTD_WRITTEN: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_self->_status >= __pyx_e_4lxml_5etree_WRITER_DTD_WRITTEN) != 0);
if (unlikely(__pyx_t_2)) {
- /* "src/lxml/serializer.pxi":1464
+ /* "src/lxml/serializer.pxi":1463
* return
* if self._status >= WRITER_DTD_WRITTEN:
* raise LxmlSyntaxError("DOCTYPE already written or cannot write it here") # <<<<<<<<<<<<<<
* doctype = _utf8(doctype)
* _writeDoctype(self._c_out, _xcstr(doctype))
*/
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1464, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1463, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
}
__pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_DOCTYPE_already_written_or_canno) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_DOCTYPE_already_written_or_canno);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1464, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1463, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(9, 1464, __pyx_L1_error)
+ __PYX_ERR(9, 1463, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1463
+ /* "src/lxml/serializer.pxi":1462
* if doctype is None:
* return
* if self._status >= WRITER_DTD_WRITTEN: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1465
+ /* "src/lxml/serializer.pxi":1464
* if self._status >= WRITER_DTD_WRITTEN:
* raise LxmlSyntaxError("DOCTYPE already written or cannot write it here")
* doctype = _utf8(doctype) # <<<<<<<<<<<<<<
* _writeDoctype(self._c_out, _xcstr(doctype))
* self._status = WRITER_DTD_WRITTEN
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_doctype); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1465, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_doctype); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1464, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_doctype, __pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1466
+ /* "src/lxml/serializer.pxi":1465
* raise LxmlSyntaxError("DOCTYPE already written or cannot write it here")
* doctype = _utf8(doctype)
* _writeDoctype(self._c_out, _xcstr(doctype)) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeDoctype(__pyx_v_self->_c_out, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_doctype));
- /* "src/lxml/serializer.pxi":1467
+ /* "src/lxml/serializer.pxi":1466
* doctype = _utf8(doctype)
* _writeDoctype(self._c_out, _xcstr(doctype))
* self._status = WRITER_DTD_WRITTEN # <<<<<<<<<<<<<<
*/
__pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_DTD_WRITTEN;
- /* "src/lxml/serializer.pxi":1468
+ /* "src/lxml/serializer.pxi":1467
* _writeDoctype(self._c_out, _xcstr(doctype))
* self._status = WRITER_DTD_WRITTEN
* if not self._buffered: # <<<<<<<<<<<<<<
__pyx_t_2 = ((!(__pyx_v_self->_buffered != 0)) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1469
+ /* "src/lxml/serializer.pxi":1468
* self._status = WRITER_DTD_WRITTEN
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
- /* "src/lxml/serializer.pxi":1468
+ /* "src/lxml/serializer.pxi":1467
* _writeDoctype(self._c_out, _xcstr(doctype))
* self._status = WRITER_DTD_WRITTEN
* if not self._buffered: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1470
+ /* "src/lxml/serializer.pxi":1469
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out)
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* def method(self, method):
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1470, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1469, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1455
+ /* "src/lxml/serializer.pxi":1454
* self._handle_error(self._c_out.error)
*
* def write_doctype(self, doctype): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1472
+/* "src/lxml/serializer.pxi":1471
* self._handle_error(self._c_out.error)
*
* def method(self, method): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("method", 0);
- /* "src/lxml/serializer.pxi":1478
+ /* "src/lxml/serializer.pxi":1477
* method is one of (None, 'xml', 'html') where None means 'xml'.
* """
* assert self._c_out is not NULL # <<<<<<<<<<<<<<
if (unlikely(!Py_OptimizeFlag)) {
if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
PyErr_SetNone(PyExc_AssertionError);
- __PYX_ERR(9, 1478, __pyx_L1_error)
+ __PYX_ERR(9, 1477, __pyx_L1_error)
}
}
#endif
- /* "src/lxml/serializer.pxi":1479
+ /* "src/lxml/serializer.pxi":1478
* """
* assert self._c_out is not NULL
* c_method = self._method if method is None else _findOutputMethod(method) # <<<<<<<<<<<<<<
if ((__pyx_t_2 != 0)) {
__pyx_t_1 = __pyx_v_self->_method;
} else {
- __pyx_t_3 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 1479, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 1478, __pyx_L1_error)
__pyx_t_1 = __pyx_t_3;
}
__pyx_v_c_method = __pyx_t_1;
- /* "src/lxml/serializer.pxi":1480
+ /* "src/lxml/serializer.pxi":1479
* assert self._c_out is not NULL
* c_method = self._method if method is None else _findOutputMethod(method)
* return _MethodChanger(self, c_method) # <<<<<<<<<<<<<<
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_c_method); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1480, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_c_method); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1479, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1480, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1479, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(((PyObject *)__pyx_v_self));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self));
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
__pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1480, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1479, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1472
+ /* "src/lxml/serializer.pxi":1471
* self._handle_error(self._c_out.error)
*
* def method(self, method): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1482
+/* "src/lxml/serializer.pxi":1481
* return _MethodChanger(self, c_method)
*
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "element") < 0)) __PYX_ERR(9, 1482, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "element") < 0)) __PYX_ERR(9, 1481, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("element", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1482, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("element", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1481, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v__extra); __pyx_v__extra = 0;
__Pyx_AddTraceback("lxml.etree._IncrementalFileWriter.element", __pyx_clineno, __pyx_lineno, __pyx_filename);
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("element", 0);
- /* "src/lxml/serializer.pxi":1488
+ /* "src/lxml/serializer.pxi":1487
* method is one of (None, 'xml', 'html') where None means 'xml'.
* """
* assert self._c_out is not NULL # <<<<<<<<<<<<<<
if (unlikely(!Py_OptimizeFlag)) {
if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
PyErr_SetNone(PyExc_AssertionError);
- __PYX_ERR(9, 1488, __pyx_L1_error)
+ __PYX_ERR(9, 1487, __pyx_L1_error)
}
}
#endif
- /* "src/lxml/serializer.pxi":1489
+ /* "src/lxml/serializer.pxi":1488
* """
* assert self._c_out is not NULL
* attributes = [] # <<<<<<<<<<<<<<
* if attrib is not None:
* for name, value in _iter_attrib(attrib):
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1489, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1488, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_attributes = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1490
+ /* "src/lxml/serializer.pxi":1489
* assert self._c_out is not NULL
* attributes = []
* if attrib is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":1491
+ /* "src/lxml/serializer.pxi":1490
* attributes = []
* if attrib is not None:
* for name, value in _iter_attrib(attrib): # <<<<<<<<<<<<<<
* if name not in _extra:
* ns, name = _getNsTag(name)
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__iter_attrib(__pyx_v_attrib); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1491, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree__iter_attrib(__pyx_v_attrib); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1490, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
__pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
__pyx_t_6 = NULL;
} else {
- __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1491, __pyx_L1_error)
+ __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1490, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1491, __pyx_L1_error)
+ __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1490, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_4))) {
if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(9, 1491, __pyx_L1_error)
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(9, 1490, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1491, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1490, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(9, 1491, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(9, 1490, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1491, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1490, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 1491, __pyx_L1_error)
+ else __PYX_ERR(9, 1490, __pyx_L1_error)
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1491, __pyx_L1_error)
+ __PYX_ERR(9, 1490, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_8);
#else
- __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1491, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1490, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1491, __pyx_L1_error)
+ __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1490, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1491, __pyx_L1_error)
+ __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1490, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
__Pyx_GOTREF(__pyx_t_7);
index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_8);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(9, 1491, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(9, 1490, __pyx_L1_error)
__pyx_t_10 = NULL;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L7_unpacking_done;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_10 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1491, __pyx_L1_error)
+ __PYX_ERR(9, 1490, __pyx_L1_error)
__pyx_L7_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
__Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_8);
__pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":1492
+ /* "src/lxml/serializer.pxi":1491
* if attrib is not None:
* for name, value in _iter_attrib(attrib):
* if name not in _extra: # <<<<<<<<<<<<<<
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value)))
*/
- __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v__extra, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1492, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v__extra, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(9, 1491, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1493
+ /* "src/lxml/serializer.pxi":1492
* for name, value in _iter_attrib(attrib):
* if name not in _extra:
* ns, name = _getNsTag(name) # <<<<<<<<<<<<<<
* attributes.append((ns, name, _utf8(value)))
* if _extra:
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1493, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1492, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (likely(__pyx_t_1 != Py_None)) {
PyObject* sequence = __pyx_t_1;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1493, __pyx_L1_error)
+ __PYX_ERR(9, 1492, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(__pyx_t_7);
#else
- __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1493, __pyx_L1_error)
+ __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1492, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1493, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1492, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(9, 1493, __pyx_L1_error)
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(9, 1492, __pyx_L1_error)
}
__Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_8);
__pyx_t_8 = 0;
__Pyx_DECREF_SET(__pyx_v_name, __pyx_t_7);
__pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1494
+ /* "src/lxml/serializer.pxi":1493
* if name not in _extra:
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value))) # <<<<<<<<<<<<<<
* if _extra:
* for name, value in _extra.iteritems():
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1494, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1493, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1494, __pyx_L1_error)
+ __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1493, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_v_ns);
__Pyx_GIVEREF(__pyx_v_ns);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_attributes, __pyx_t_7); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(9, 1494, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_attributes, __pyx_t_7); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(9, 1493, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1492
+ /* "src/lxml/serializer.pxi":1491
* if attrib is not None:
* for name, value in _iter_attrib(attrib):
* if name not in _extra: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1491
+ /* "src/lxml/serializer.pxi":1490
* attributes = []
* if attrib is not None:
* for name, value in _iter_attrib(attrib): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1490
+ /* "src/lxml/serializer.pxi":1489
* assert self._c_out is not NULL
* attributes = []
* if attrib is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1495
+ /* "src/lxml/serializer.pxi":1494
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value)))
* if _extra: # <<<<<<<<<<<<<<
* for name, value in _extra.iteritems():
* ns, name = _getNsTag(name)
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__extra); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1495, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__extra); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1494, __pyx_L1_error)
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1496
+ /* "src/lxml/serializer.pxi":1495
* attributes.append((ns, name, _utf8(value)))
* if _extra:
* for name, value in _extra.iteritems(): # <<<<<<<<<<<<<<
* attributes.append((ns, name, _utf8(value)))
*/
__pyx_t_5 = 0;
- __pyx_t_7 = __Pyx_dict_iterator(__pyx_v__extra, 1, __pyx_n_s_iteritems, (&__pyx_t_12), (&__pyx_t_13)); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1496, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_dict_iterator(__pyx_v__extra, 1, __pyx_n_s_iteritems, (&__pyx_t_12), (&__pyx_t_13)); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1495, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_4);
__pyx_t_4 = __pyx_t_7;
while (1) {
__pyx_t_14 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_12, &__pyx_t_5, &__pyx_t_7, &__pyx_t_1, NULL, __pyx_t_13);
if (unlikely(__pyx_t_14 == 0)) break;
- if (unlikely(__pyx_t_14 == -1)) __PYX_ERR(9, 1496, __pyx_L1_error)
+ if (unlikely(__pyx_t_14 == -1)) __PYX_ERR(9, 1495, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
__Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1497
+ /* "src/lxml/serializer.pxi":1496
* if _extra:
* for name, value in _extra.iteritems():
* ns, name = _getNsTag(name) # <<<<<<<<<<<<<<
* attributes.append((ns, name, _utf8(value)))
* reversed_nsmap = {}
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1497, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1496, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (likely(__pyx_t_1 != Py_None)) {
PyObject* sequence = __pyx_t_1;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1497, __pyx_L1_error)
+ __PYX_ERR(9, 1496, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_7 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_8);
#else
- __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1497, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1496, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1497, __pyx_L1_error)
+ __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1496, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(9, 1497, __pyx_L1_error)
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(9, 1496, __pyx_L1_error)
}
__Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_7);
__pyx_t_7 = 0;
__Pyx_DECREF_SET(__pyx_v_name, __pyx_t_8);
__pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":1498
+ /* "src/lxml/serializer.pxi":1497
* for name, value in _extra.iteritems():
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value))) # <<<<<<<<<<<<<<
* reversed_nsmap = {}
* if nsmap:
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1498, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1497, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1498, __pyx_L1_error)
+ __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1497, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_INCREF(__pyx_v_ns);
__Pyx_GIVEREF(__pyx_v_ns);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_attributes, __pyx_t_8); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(9, 1498, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_attributes, __pyx_t_8); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(9, 1497, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1495
+ /* "src/lxml/serializer.pxi":1494
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value)))
* if _extra: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1499
+ /* "src/lxml/serializer.pxi":1498
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value)))
* reversed_nsmap = {} # <<<<<<<<<<<<<<
* if nsmap:
* for prefix, ns in nsmap.items():
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1499, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1498, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_reversed_nsmap = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1500
+ /* "src/lxml/serializer.pxi":1499
* attributes.append((ns, name, _utf8(value)))
* reversed_nsmap = {}
* if nsmap: # <<<<<<<<<<<<<<
* for prefix, ns in nsmap.items():
* if prefix is not None:
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_nsmap); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1500, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_nsmap); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1499, __pyx_L1_error)
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1501
+ /* "src/lxml/serializer.pxi":1500
* reversed_nsmap = {}
* if nsmap:
* for prefix, ns in nsmap.items(): # <<<<<<<<<<<<<<
* if prefix is not None:
* prefix = _utf8(prefix)
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
}
__pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
__pyx_t_8 = __pyx_t_4; __Pyx_INCREF(__pyx_t_8); __pyx_t_12 = 0;
__pyx_t_6 = NULL;
} else {
- __pyx_t_12 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ __pyx_t_12 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_6 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ __pyx_t_6 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1500, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_8))) {
if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_8)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ __pyx_t_4 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(9, 1500, __pyx_L1_error)
#else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
} else {
if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(9, 1500, __pyx_L1_error)
#else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(9, 1501, __pyx_L1_error)
+ else __PYX_ERR(9, 1500, __pyx_L1_error)
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1501, __pyx_L1_error)
+ __PYX_ERR(9, 1500, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_7);
#else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_9 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1501, __pyx_L1_error)
+ __pyx_t_9 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
__Pyx_GOTREF(__pyx_t_1);
index = 1; __pyx_t_7 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L15_unpacking_failed;
__Pyx_GOTREF(__pyx_t_7);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(9, 1501, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(9, 1500, __pyx_L1_error)
__pyx_t_10 = NULL;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L16_unpacking_done;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_10 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1501, __pyx_L1_error)
+ __PYX_ERR(9, 1500, __pyx_L1_error)
__pyx_L16_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_1);
__Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_7);
__pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1502
+ /* "src/lxml/serializer.pxi":1501
* if nsmap:
* for prefix, ns in nsmap.items():
* if prefix is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":1503
+ /* "src/lxml/serializer.pxi":1502
* for prefix, ns in nsmap.items():
* if prefix is not None:
* prefix = _utf8(prefix) # <<<<<<<<<<<<<<
* _prefixValidOrRaise(prefix)
* reversed_nsmap[_utf8(ns)] = prefix
*/
- __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1503, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1502, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_4);
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1504
+ /* "src/lxml/serializer.pxi":1503
* if prefix is not None:
* prefix = _utf8(prefix)
* _prefixValidOrRaise(prefix) # <<<<<<<<<<<<<<
* reversed_nsmap[_utf8(ns)] = prefix
* ns, name = _getNsTag(tag)
*/
- __pyx_t_13 = __pyx_f_4lxml_5etree__prefixValidOrRaise(__pyx_v_prefix); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1504, __pyx_L1_error)
+ __pyx_t_13 = __pyx_f_4lxml_5etree__prefixValidOrRaise(__pyx_v_prefix); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(9, 1503, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1502
+ /* "src/lxml/serializer.pxi":1501
* if nsmap:
* for prefix, ns in nsmap.items():
* if prefix is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1505
+ /* "src/lxml/serializer.pxi":1504
* prefix = _utf8(prefix)
* _prefixValidOrRaise(prefix)
* reversed_nsmap[_utf8(ns)] = prefix # <<<<<<<<<<<<<<
* ns, name = _getNsTag(tag)
*
*/
- __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_ns); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1505, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_ns); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1504, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- if (unlikely(PyDict_SetItem(__pyx_v_reversed_nsmap, __pyx_t_4, __pyx_v_prefix) < 0)) __PYX_ERR(9, 1505, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_reversed_nsmap, __pyx_t_4, __pyx_v_prefix) < 0)) __PYX_ERR(9, 1504, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1501
+ /* "src/lxml/serializer.pxi":1500
* reversed_nsmap = {}
* if nsmap:
* for prefix, ns in nsmap.items(): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":1500
+ /* "src/lxml/serializer.pxi":1499
* attributes.append((ns, name, _utf8(value)))
* reversed_nsmap = {}
* if nsmap: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1506
+ /* "src/lxml/serializer.pxi":1505
* _prefixValidOrRaise(prefix)
* reversed_nsmap[_utf8(ns)] = prefix
* ns, name = _getNsTag(tag) # <<<<<<<<<<<<<<
*
* c_method = self._method if method is None else _findOutputMethod(method)
*/
- __pyx_t_8 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1506, __pyx_L1_error)
+ __pyx_t_8 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1505, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (likely(__pyx_t_8 != Py_None)) {
PyObject* sequence = __pyx_t_8;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1506, __pyx_L1_error)
+ __PYX_ERR(9, 1505, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_7);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1506, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1505, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1506, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1505, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
} else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(9, 1506, __pyx_L1_error)
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(9, 1505, __pyx_L1_error)
}
__Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_4);
__pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
__pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":1508
+ /* "src/lxml/serializer.pxi":1507
* ns, name = _getNsTag(tag)
*
* c_method = self._method if method is None else _findOutputMethod(method) # <<<<<<<<<<<<<<
if ((__pyx_t_3 != 0)) {
__pyx_t_13 = __pyx_v_self->_method;
} else {
- __pyx_t_14 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(9, 1508, __pyx_L1_error)
+ __pyx_t_14 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(9, 1507, __pyx_L1_error)
__pyx_t_13 = __pyx_t_14;
}
__pyx_v_c_method = __pyx_t_13;
- /* "src/lxml/serializer.pxi":1510
+ /* "src/lxml/serializer.pxi":1509
* c_method = self._method if method is None else _findOutputMethod(method)
*
* return _FileWriterElement(self, (ns, name, attributes, reversed_nsmap), c_method) # <<<<<<<<<<<<<<
* cdef _write_qname(self, bytes name, bytes prefix):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1510, __pyx_L1_error)
+ __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_INCREF(__pyx_v_ns);
__Pyx_GIVEREF(__pyx_v_ns);
__Pyx_INCREF(__pyx_v_reversed_nsmap);
__Pyx_GIVEREF(__pyx_v_reversed_nsmap);
PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_reversed_nsmap);
- __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_c_method); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1510, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_c_method); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1510, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(((PyObject *)__pyx_v_self));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self));
PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_7);
__pyx_t_8 = 0;
__pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FileWriterElement), __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1510, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FileWriterElement), __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = __pyx_t_7;
__pyx_t_7 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1482
+ /* "src/lxml/serializer.pxi":1481
* return _MethodChanger(self, c_method)
*
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1512
+/* "src/lxml/serializer.pxi":1511
* return _FileWriterElement(self, (ns, name, attributes, reversed_nsmap), c_method)
*
* cdef _write_qname(self, bytes name, bytes prefix): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_write_qname", 0);
- /* "src/lxml/serializer.pxi":1513
+ /* "src/lxml/serializer.pxi":1512
*
* cdef _write_qname(self, bytes name, bytes prefix):
* if prefix: # empty bytes for no prefix (not None to allow sorting) # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_prefix != Py_None)&&(PyBytes_GET_SIZE(__pyx_v_prefix) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1514
+ /* "src/lxml/serializer.pxi":1513
* cdef _write_qname(self, bytes name, bytes prefix):
* if prefix: # empty bytes for no prefix (not None to allow sorting)
* tree.xmlOutputBufferWrite(self._c_out, len(prefix), _cstr(prefix)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_prefix == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(9, 1514, __pyx_L1_error)
+ __PYX_ERR(9, 1513, __pyx_L1_error)
}
- __pyx_t_2 = PyBytes_GET_SIZE(__pyx_v_prefix); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1514, __pyx_L1_error)
+ __pyx_t_2 = PyBytes_GET_SIZE(__pyx_v_prefix); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1513, __pyx_L1_error)
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, __pyx_t_2, PyBytes_AS_STRING(__pyx_v_prefix)));
- /* "src/lxml/serializer.pxi":1515
+ /* "src/lxml/serializer.pxi":1514
* if prefix: # empty bytes for no prefix (not None to allow sorting)
* tree.xmlOutputBufferWrite(self._c_out, len(prefix), _cstr(prefix))
* tree.xmlOutputBufferWrite(self._c_out, 1, ':') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)":")));
- /* "src/lxml/serializer.pxi":1513
+ /* "src/lxml/serializer.pxi":1512
*
* cdef _write_qname(self, bytes name, bytes prefix):
* if prefix: # empty bytes for no prefix (not None to allow sorting) # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1516
+ /* "src/lxml/serializer.pxi":1515
* tree.xmlOutputBufferWrite(self._c_out, len(prefix), _cstr(prefix))
* tree.xmlOutputBufferWrite(self._c_out, 1, ':')
* tree.xmlOutputBufferWrite(self._c_out, len(name), _cstr(name)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_name == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(9, 1516, __pyx_L1_error)
+ __PYX_ERR(9, 1515, __pyx_L1_error)
}
- __pyx_t_2 = PyBytes_GET_SIZE(__pyx_v_name); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1516, __pyx_L1_error)
+ __pyx_t_2 = PyBytes_GET_SIZE(__pyx_v_name); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1515, __pyx_L1_error)
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, __pyx_t_2, PyBytes_AS_STRING(__pyx_v_name)));
- /* "src/lxml/serializer.pxi":1512
+ /* "src/lxml/serializer.pxi":1511
* return _FileWriterElement(self, (ns, name, attributes, reversed_nsmap), c_method)
*
* cdef _write_qname(self, bytes name, bytes prefix): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1518
+/* "src/lxml/serializer.pxi":1517
* tree.xmlOutputBufferWrite(self._c_out, len(name), _cstr(name))
*
* cdef _write_start_element(self, element_config): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_write_start_element", 0);
- /* "src/lxml/serializer.pxi":1519
+ /* "src/lxml/serializer.pxi":1518
*
* cdef _write_start_element(self, element_config):
* if self._status > WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_self->_status > __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1520
+ /* "src/lxml/serializer.pxi":1519
* cdef _write_start_element(self, element_config):
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document") # <<<<<<<<<<<<<<
* ns, name, attributes, nsmap = element_config
* flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1520, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1519, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_cannot_append_trailing_element_t) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_cannot_append_trailing_element_t);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1520, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1519, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1520, __pyx_L1_error)
+ __PYX_ERR(9, 1519, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1519
+ /* "src/lxml/serializer.pxi":1518
*
* cdef _write_start_element(self, element_config):
* if self._status > WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1521
+ /* "src/lxml/serializer.pxi":1520
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document")
* ns, name, attributes, nsmap = element_config # <<<<<<<<<<<<<<
if (unlikely(size != 4)) {
if (size > 4) __Pyx_RaiseTooManyValuesError(4);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1521, __pyx_L1_error)
+ __PYX_ERR(9, 1520, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
Py_ssize_t i;
PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_3,&__pyx_t_4,&__pyx_t_5};
for (i=0; i < 4; i++) {
- PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(9, 1521, __pyx_L1_error)
+ PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(9, 1520, __pyx_L1_error)
__Pyx_GOTREF(item);
*(temps[i]) = item;
}
} else {
Py_ssize_t index = -1;
PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_3,&__pyx_t_4,&__pyx_t_5};
- __pyx_t_6 = PyObject_GetIter(__pyx_v_element_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1521, __pyx_L1_error)
+ __pyx_t_6 = PyObject_GetIter(__pyx_v_element_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1520, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
for (index=0; index < 4; index++) {
__Pyx_GOTREF(item);
*(temps[index]) = item;
}
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 4) < 0) __PYX_ERR(9, 1521, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 4) < 0) __PYX_ERR(9, 1520, __pyx_L1_error)
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L5_unpacking_done;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1521, __pyx_L1_error)
+ __PYX_ERR(9, 1520, __pyx_L1_error)
__pyx_L5_unpacking_done:;
}
__pyx_v_ns = __pyx_t_2;
__pyx_v_nsmap = __pyx_t_5;
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1522
+ /* "src/lxml/serializer.pxi":1521
* raise LxmlSyntaxError("cannot append trailing element to complete XML document")
* ns, name, attributes, nsmap = element_config
* flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap) # <<<<<<<<<<<<<<
* prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces)
* tree.xmlOutputBufferWrite(self._c_out, 1, '<')
*/
- if (!(likely(PyDict_CheckExact(__pyx_v_nsmap))||((__pyx_v_nsmap) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_nsmap)->tp_name), 0))) __PYX_ERR(9, 1522, __pyx_L1_error)
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespaces(__pyx_v_self, ((PyObject*)__pyx_v_nsmap)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1522, __pyx_L1_error)
+ if (!(likely(PyDict_CheckExact(__pyx_v_nsmap))||((__pyx_v_nsmap) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_nsmap)->tp_name), 0))) __PYX_ERR(9, 1521, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespaces(__pyx_v_self, ((PyObject*)__pyx_v_nsmap)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1521, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
PyObject* sequence = __pyx_t_5;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1522, __pyx_L1_error)
+ __PYX_ERR(9, 1521, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1522, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1521, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1522, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1521, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1522, __pyx_L1_error)
+ __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1521, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_2); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_2), 2) < 0) __PYX_ERR(9, 1522, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_2), 2) < 0) __PYX_ERR(9, 1521, __pyx_L1_error)
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L7_unpacking_done;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1522, __pyx_L1_error)
+ __PYX_ERR(9, 1521, __pyx_L1_error)
__pyx_L7_unpacking_done:;
}
__pyx_v_flat_namespace_map = __pyx_t_4;
__pyx_v_new_namespaces = __pyx_t_3;
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1523
+ /* "src/lxml/serializer.pxi":1522
* ns, name, attributes, nsmap = element_config
* flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
* prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces) # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWrite(self._c_out, 1, '<')
* self._write_qname(name, prefix)
*/
- if (!(likely(PyBytes_CheckExact(__pyx_v_ns))||((__pyx_v_ns) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_ns)->tp_name), 0))) __PYX_ERR(9, 1523, __pyx_L1_error)
- if (!(likely(PyDict_CheckExact(__pyx_v_flat_namespace_map))||((__pyx_v_flat_namespace_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_flat_namespace_map)->tp_name), 0))) __PYX_ERR(9, 1523, __pyx_L1_error)
- if (!(likely(PyList_CheckExact(__pyx_v_new_namespaces))||((__pyx_v_new_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_new_namespaces)->tp_name), 0))) __PYX_ERR(9, 1523, __pyx_L1_error)
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(__pyx_v_self, ((PyObject*)__pyx_v_ns), ((PyObject*)__pyx_v_flat_namespace_map), ((PyObject*)__pyx_v_new_namespaces)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1523, __pyx_L1_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_v_ns))||((__pyx_v_ns) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_ns)->tp_name), 0))) __PYX_ERR(9, 1522, __pyx_L1_error)
+ if (!(likely(PyDict_CheckExact(__pyx_v_flat_namespace_map))||((__pyx_v_flat_namespace_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_flat_namespace_map)->tp_name), 0))) __PYX_ERR(9, 1522, __pyx_L1_error)
+ if (!(likely(PyList_CheckExact(__pyx_v_new_namespaces))||((__pyx_v_new_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_new_namespaces)->tp_name), 0))) __PYX_ERR(9, 1522, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(__pyx_v_self, ((PyObject*)__pyx_v_ns), ((PyObject*)__pyx_v_flat_namespace_map), ((PyObject*)__pyx_v_new_namespaces)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1522, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_v_prefix = __pyx_t_5;
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1524
+ /* "src/lxml/serializer.pxi":1523
* flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
* prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces)
* tree.xmlOutputBufferWrite(self._c_out, 1, '<') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)"<")));
- /* "src/lxml/serializer.pxi":1525
+ /* "src/lxml/serializer.pxi":1524
* prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces)
* tree.xmlOutputBufferWrite(self._c_out, 1, '<')
* self._write_qname(name, prefix) # <<<<<<<<<<<<<<
*
* self._write_attributes_and_namespaces(
*/
- if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(9, 1525, __pyx_L1_error)
- if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) __PYX_ERR(9, 1525, __pyx_L1_error)
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1525, __pyx_L1_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(9, 1524, __pyx_L1_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) __PYX_ERR(9, 1524, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1524, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1528
+ /* "src/lxml/serializer.pxi":1527
*
* self._write_attributes_and_namespaces(
* attributes, flat_namespace_map, new_namespaces) # <<<<<<<<<<<<<<
*
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
*/
- if (!(likely(PyList_CheckExact(__pyx_v_attributes))||((__pyx_v_attributes) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_attributes)->tp_name), 0))) __PYX_ERR(9, 1528, __pyx_L1_error)
- if (!(likely(PyDict_CheckExact(__pyx_v_flat_namespace_map))||((__pyx_v_flat_namespace_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_flat_namespace_map)->tp_name), 0))) __PYX_ERR(9, 1528, __pyx_L1_error)
- if (!(likely(PyList_CheckExact(__pyx_v_new_namespaces))||((__pyx_v_new_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_new_namespaces)->tp_name), 0))) __PYX_ERR(9, 1528, __pyx_L1_error)
+ if (!(likely(PyList_CheckExact(__pyx_v_attributes))||((__pyx_v_attributes) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_attributes)->tp_name), 0))) __PYX_ERR(9, 1527, __pyx_L1_error)
+ if (!(likely(PyDict_CheckExact(__pyx_v_flat_namespace_map))||((__pyx_v_flat_namespace_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_flat_namespace_map)->tp_name), 0))) __PYX_ERR(9, 1527, __pyx_L1_error)
+ if (!(likely(PyList_CheckExact(__pyx_v_new_namespaces))||((__pyx_v_new_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_new_namespaces)->tp_name), 0))) __PYX_ERR(9, 1527, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1527
+ /* "src/lxml/serializer.pxi":1526
* self._write_qname(name, prefix)
*
* self._write_attributes_and_namespaces( # <<<<<<<<<<<<<<
* attributes, flat_namespace_map, new_namespaces)
*
*/
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_and_namespaces(__pyx_v_self, ((PyObject*)__pyx_v_attributes), ((PyObject*)__pyx_v_flat_namespace_map), ((PyObject*)__pyx_v_new_namespaces)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1527, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_and_namespaces(__pyx_v_self, ((PyObject*)__pyx_v_attributes), ((PyObject*)__pyx_v_flat_namespace_map), ((PyObject*)__pyx_v_new_namespaces)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1526, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1530
+ /* "src/lxml/serializer.pxi":1529
* attributes, flat_namespace_map, new_namespaces)
*
* tree.xmlOutputBufferWrite(self._c_out, 1, '>') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)">")));
- /* "src/lxml/serializer.pxi":1531
+ /* "src/lxml/serializer.pxi":1530
*
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
* if not self._buffered: # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_v_self->_buffered != 0)) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1532
+ /* "src/lxml/serializer.pxi":1531
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
- /* "src/lxml/serializer.pxi":1531
+ /* "src/lxml/serializer.pxi":1530
*
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
* if not self._buffered: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1533
+ /* "src/lxml/serializer.pxi":1532
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out)
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* self._element_stack.append((ns, name, prefix, flat_namespace_map))
*/
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1533, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1532, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1535
+ /* "src/lxml/serializer.pxi":1534
* self._handle_error(self._c_out.error)
*
* self._element_stack.append((ns, name, prefix, flat_namespace_map)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(9, 1535, __pyx_L1_error)
+ __PYX_ERR(9, 1534, __pyx_L1_error)
}
- __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1535, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1534, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_ns);
__Pyx_GIVEREF(__pyx_v_ns);
__Pyx_INCREF(__pyx_v_flat_namespace_map);
__Pyx_GIVEREF(__pyx_v_flat_namespace_map);
PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_flat_namespace_map);
- __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_element_stack, __pyx_t_5); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(9, 1535, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_element_stack, __pyx_t_5); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(9, 1534, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1536
+ /* "src/lxml/serializer.pxi":1535
*
* self._element_stack.append((ns, name, prefix, flat_namespace_map))
* self._status = WRITER_IN_ELEMENT # <<<<<<<<<<<<<<
*/
__pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT;
- /* "src/lxml/serializer.pxi":1518
+ /* "src/lxml/serializer.pxi":1517
* tree.xmlOutputBufferWrite(self._c_out, len(name), _cstr(name))
*
* cdef _write_start_element(self, element_config): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1538
+/* "src/lxml/serializer.pxi":1537
* self._status = WRITER_IN_ELEMENT
*
* cdef _write_attributes_and_namespaces(self, list attributes, # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("_write_attributes_and_namespaces", 0);
__Pyx_INCREF(__pyx_v_attributes);
- /* "src/lxml/serializer.pxi":1541
+ /* "src/lxml/serializer.pxi":1540
* dict flat_namespace_map,
* list new_namespaces):
* if attributes: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_attributes != Py_None)&&(PyList_GET_SIZE(__pyx_v_attributes) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1543
+ /* "src/lxml/serializer.pxi":1542
* if attributes:
* # _find_prefix() may append to new_namespaces => build them first
* attributes = [ # <<<<<<<<<<<<<<
* (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value)
* for ns, name, value in attributes ]
*/
- __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1543, __pyx_L1_error)
+ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1542, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- /* "src/lxml/serializer.pxi":1545
+ /* "src/lxml/serializer.pxi":1544
* attributes = [
* (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value)
* for ns, name, value in attributes ] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_attributes == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1545, __pyx_L1_error)
+ __PYX_ERR(9, 1544, __pyx_L1_error)
}
__pyx_t_3 = __pyx_v_attributes; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
for (;;) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(9, 1545, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(9, 1544, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1545, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1544, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
if (unlikely(size != 3)) {
if (size > 3) __Pyx_RaiseTooManyValuesError(3);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1545, __pyx_L1_error)
+ __PYX_ERR(9, 1544, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_8);
#else
- __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1545, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1544, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1545, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1544, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1545, __pyx_L1_error)
+ __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1544, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_9 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1545, __pyx_L1_error)
+ __pyx_t_9 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1544, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
__Pyx_GOTREF(__pyx_t_7);
index = 2; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_8);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) __PYX_ERR(9, 1545, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) __PYX_ERR(9, 1544, __pyx_L1_error)
__pyx_t_10 = NULL;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L7_unpacking_done;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_10 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1545, __pyx_L1_error)
+ __PYX_ERR(9, 1544, __pyx_L1_error)
__pyx_L7_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_8);
__pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":1544
+ /* "src/lxml/serializer.pxi":1543
* # _find_prefix() may append to new_namespaces => build them first
* attributes = [
* (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value) # <<<<<<<<<<<<<<
* for ns, name, value in attributes ]
* if new_namespaces:
*/
- if (!(likely(PyBytes_CheckExact(__pyx_v_ns))||((__pyx_v_ns) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_ns)->tp_name), 0))) __PYX_ERR(9, 1544, __pyx_L1_error)
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(__pyx_v_self, ((PyObject*)__pyx_v_ns), __pyx_v_flat_namespace_map, __pyx_v_new_namespaces); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1544, __pyx_L1_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_v_ns))||((__pyx_v_ns) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_ns)->tp_name), 0))) __PYX_ERR(9, 1543, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(__pyx_v_self, ((PyObject*)__pyx_v_ns), __pyx_v_flat_namespace_map, __pyx_v_new_namespaces); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1543, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1544, __pyx_L1_error)
+ __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1543, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
__Pyx_GIVEREF(__pyx_v_value);
PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_value);
__pyx_t_5 = 0;
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_8))) __PYX_ERR(9, 1543, __pyx_L1_error)
+ if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_8))) __PYX_ERR(9, 1542, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "src/lxml/serializer.pxi":1545
+ /* "src/lxml/serializer.pxi":1544
* attributes = [
* (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value)
* for ns, name, value in attributes ] # <<<<<<<<<<<<<<
__Pyx_DECREF_SET(__pyx_v_attributes, ((PyObject*)__pyx_t_2));
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1541
+ /* "src/lxml/serializer.pxi":1540
* dict flat_namespace_map,
* list new_namespaces):
* if attributes: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1546
+ /* "src/lxml/serializer.pxi":1545
* (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value)
* for ns, name, value in attributes ]
* if new_namespaces: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_new_namespaces != Py_None)&&(PyList_GET_SIZE(__pyx_v_new_namespaces) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1547
+ /* "src/lxml/serializer.pxi":1546
* for ns, name, value in attributes ]
* if new_namespaces:
* new_namespaces.sort() # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_new_namespaces == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "sort");
- __PYX_ERR(9, 1547, __pyx_L1_error)
+ __PYX_ERR(9, 1546, __pyx_L1_error)
}
- __pyx_t_11 = PyList_Sort(__pyx_v_new_namespaces); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(9, 1547, __pyx_L1_error)
+ __pyx_t_11 = PyList_Sort(__pyx_v_new_namespaces); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(9, 1546, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1548
+ /* "src/lxml/serializer.pxi":1547
* if new_namespaces:
* new_namespaces.sort()
* self._write_attributes_list(new_namespaces) # <<<<<<<<<<<<<<
* if attributes:
* self._write_attributes_list(attributes)
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_list(__pyx_v_self, __pyx_v_new_namespaces); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1548, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_list(__pyx_v_self, __pyx_v_new_namespaces); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1547, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1546
+ /* "src/lxml/serializer.pxi":1545
* (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value)
* for ns, name, value in attributes ]
* if new_namespaces: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1549
+ /* "src/lxml/serializer.pxi":1548
* new_namespaces.sort()
* self._write_attributes_list(new_namespaces)
* if attributes: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_attributes != Py_None)&&(PyList_GET_SIZE(__pyx_v_attributes) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1550
+ /* "src/lxml/serializer.pxi":1549
* self._write_attributes_list(new_namespaces)
* if attributes:
* self._write_attributes_list(attributes) # <<<<<<<<<<<<<<
*
* cdef _write_attributes_list(self, list attributes):
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_list(__pyx_v_self, __pyx_v_attributes); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1550, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_list(__pyx_v_self, __pyx_v_attributes); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1549, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1549
+ /* "src/lxml/serializer.pxi":1548
* new_namespaces.sort()
* self._write_attributes_list(new_namespaces)
* if attributes: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1538
+ /* "src/lxml/serializer.pxi":1537
* self._status = WRITER_IN_ELEMENT
*
* cdef _write_attributes_and_namespaces(self, list attributes, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1552
+/* "src/lxml/serializer.pxi":1551
* self._write_attributes_list(attributes)
*
* cdef _write_attributes_list(self, list attributes): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_write_attributes_list", 0);
- /* "src/lxml/serializer.pxi":1553
+ /* "src/lxml/serializer.pxi":1552
*
* cdef _write_attributes_list(self, list attributes):
* for prefix, name, value in attributes: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_attributes == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1553, __pyx_L1_error)
+ __PYX_ERR(9, 1552, __pyx_L1_error)
}
__pyx_t_1 = __pyx_v_attributes; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
for (;;) {
if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(9, 1553, __pyx_L1_error)
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(9, 1552, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1553, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1552, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
if (unlikely(size != 3)) {
if (size > 3) __Pyx_RaiseTooManyValuesError(3);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1553, __pyx_L1_error)
+ __PYX_ERR(9, 1552, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_6);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1553, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1552, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1553, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1552, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1553, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1552, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1553, __pyx_L1_error)
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1552, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
__Pyx_GOTREF(__pyx_t_5);
index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) __PYX_ERR(9, 1553, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) __PYX_ERR(9, 1552, __pyx_L1_error)
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L6_unpacking_done;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1553, __pyx_L1_error)
+ __PYX_ERR(9, 1552, __pyx_L1_error)
__pyx_L6_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1554
+ /* "src/lxml/serializer.pxi":1553
* cdef _write_attributes_list(self, list attributes):
* for prefix, name, value in attributes:
* tree.xmlOutputBufferWrite(self._c_out, 1, ' ') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)" ")));
- /* "src/lxml/serializer.pxi":1555
+ /* "src/lxml/serializer.pxi":1554
* for prefix, name, value in attributes:
* tree.xmlOutputBufferWrite(self._c_out, 1, ' ')
* self._write_qname(name, prefix) # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWrite(self._c_out, 2, '="')
* _write_attr_string(self._c_out, _cstr(value))
*/
- if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(9, 1555, __pyx_L1_error)
- if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) __PYX_ERR(9, 1555, __pyx_L1_error)
- __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1555, __pyx_L1_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(9, 1554, __pyx_L1_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) __PYX_ERR(9, 1554, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1554, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1556
+ /* "src/lxml/serializer.pxi":1555
* tree.xmlOutputBufferWrite(self._c_out, 1, ' ')
* self._write_qname(name, prefix)
* tree.xmlOutputBufferWrite(self._c_out, 2, '="') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 2, ((const char *)"=\"")));
- /* "src/lxml/serializer.pxi":1557
+ /* "src/lxml/serializer.pxi":1556
* self._write_qname(name, prefix)
* tree.xmlOutputBufferWrite(self._c_out, 2, '="')
* _write_attr_string(self._c_out, _cstr(value)) # <<<<<<<<<<<<<<
*
* tree.xmlOutputBufferWrite(self._c_out, 1, '"')
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__write_attr_string(__pyx_v_self->_c_out, PyBytes_AS_STRING(__pyx_v_value)); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1557, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__write_attr_string(__pyx_v_self->_c_out, PyBytes_AS_STRING(__pyx_v_value)); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1556, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1559
+ /* "src/lxml/serializer.pxi":1558
* _write_attr_string(self._c_out, _cstr(value))
*
* tree.xmlOutputBufferWrite(self._c_out, 1, '"') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)"\"")));
- /* "src/lxml/serializer.pxi":1553
+ /* "src/lxml/serializer.pxi":1552
*
* cdef _write_attributes_list(self, list attributes):
* for prefix, name, value in attributes: # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1552
+ /* "src/lxml/serializer.pxi":1551
* self._write_attributes_list(attributes)
*
* cdef _write_attributes_list(self, list attributes): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1561
+/* "src/lxml/serializer.pxi":1560
* tree.xmlOutputBufferWrite(self._c_out, 1, '"')
*
* cdef _write_end_element(self, element_config): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_write_end_element", 0);
- /* "src/lxml/serializer.pxi":1562
+ /* "src/lxml/serializer.pxi":1561
*
* cdef _write_end_element(self, element_config):
* if self._status != WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_self->_status != __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1563
+ /* "src/lxml/serializer.pxi":1562
* cdef _write_end_element(self, element_config):
* if self._status != WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("not in an element") # <<<<<<<<<<<<<<
* if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]:
* raise LxmlSyntaxError("inconsistent exit action in context manager")
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1563, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1562, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_not_in_an_element) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_not_in_an_element);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1563, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1562, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1563, __pyx_L1_error)
+ __PYX_ERR(9, 1562, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1562
+ /* "src/lxml/serializer.pxi":1561
*
* cdef _write_end_element(self, element_config):
* if self._status != WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1564
+ /* "src/lxml/serializer.pxi":1563
* if self._status != WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("not in an element")
* if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]: # <<<<<<<<<<<<<<
}
if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1564, __pyx_L1_error)
+ __PYX_ERR(9, 1563, __pyx_L1_error)
}
- __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1564, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1563, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 2, NULL, NULL, &__pyx_slice__82, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1564, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 2, NULL, NULL, &__pyx_slice__82, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1563, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_element_config, 0, 2, NULL, NULL, &__pyx_slice__82, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1564, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_element_config, 0, 2, NULL, NULL, &__pyx_slice__82, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1563, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1564, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1563, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1564, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1563, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_1 = __pyx_t_6;
__pyx_L5_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1565
+ /* "src/lxml/serializer.pxi":1564
* raise LxmlSyntaxError("not in an element")
* if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]:
* raise LxmlSyntaxError("inconsistent exit action in context manager") # <<<<<<<<<<<<<<
*
* # If previous write operations failed, the context manager exit might still call us.
*/
- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1565, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1564, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_inconsistent_exit_action_in_cont) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_inconsistent_exit_action_in_cont);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1565, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1564, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(9, 1565, __pyx_L1_error)
+ __PYX_ERR(9, 1564, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1564
+ /* "src/lxml/serializer.pxi":1563
* if self._status != WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("not in an element")
* if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1570
+ /* "src/lxml/serializer.pxi":1569
* # That is ok, but we stop writing closing tags and handling errors in that case.
* # For all non-I/O errors, we continue writing closing tags if we can.
* ok_to_write = self._c_out.error == xmlerror.XML_ERR_OK # <<<<<<<<<<<<<<
*
* name, prefix = self._element_stack.pop()[1:3]
*/
- __pyx_t_4 = __Pyx_PyBool_FromLong((__pyx_v_self->_c_out->error == XML_ERR_OK)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1570, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyBool_FromLong((__pyx_v_self->_c_out->error == XML_ERR_OK)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1569, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_ok_to_write = __pyx_t_4;
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1572
+ /* "src/lxml/serializer.pxi":1571
* ok_to_write = self._c_out.error == xmlerror.XML_ERR_OK
*
* name, prefix = self._element_stack.pop()[1:3] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
- __PYX_ERR(9, 1572, __pyx_L1_error)
+ __PYX_ERR(9, 1571, __pyx_L1_error)
}
- __pyx_t_4 = __Pyx_PyList_Pop(__pyx_v_self->_element_stack); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1572, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyList_Pop(__pyx_v_self->_element_stack); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1571, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 3, NULL, NULL, &__pyx_slice__83, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1572, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 3, NULL, NULL, &__pyx_slice__83, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1571, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1572, __pyx_L1_error)
+ __PYX_ERR(9, 1571, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1572, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1571, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1572, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1571, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1572, __pyx_L1_error)
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1571, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_3 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed;
__Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(9, 1572, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(9, 1571, __pyx_L1_error)
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L8_unpacking_done;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1572, __pyx_L1_error)
+ __PYX_ERR(9, 1571, __pyx_L1_error)
__pyx_L8_unpacking_done:;
}
__pyx_v_name = __pyx_t_4;
__pyx_v_prefix = __pyx_t_3;
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1573
+ /* "src/lxml/serializer.pxi":1572
*
* name, prefix = self._element_stack.pop()[1:3]
* if ok_to_write: # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWrite(self._c_out, 2, '</')
* self._write_qname(name, prefix)
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ok_to_write); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1573, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ok_to_write); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1572, __pyx_L1_error)
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1574
+ /* "src/lxml/serializer.pxi":1573
* name, prefix = self._element_stack.pop()[1:3]
* if ok_to_write:
* tree.xmlOutputBufferWrite(self._c_out, 2, '</') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 2, ((const char *)"</")));
- /* "src/lxml/serializer.pxi":1575
+ /* "src/lxml/serializer.pxi":1574
* if ok_to_write:
* tree.xmlOutputBufferWrite(self._c_out, 2, '</')
* self._write_qname(name, prefix) # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
*
*/
- if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(9, 1575, __pyx_L1_error)
- if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) __PYX_ERR(9, 1575, __pyx_L1_error)
- __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1575, __pyx_L1_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(9, 1574, __pyx_L1_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) __PYX_ERR(9, 1574, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1574, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1576
+ /* "src/lxml/serializer.pxi":1575
* tree.xmlOutputBufferWrite(self._c_out, 2, '</')
* self._write_qname(name, prefix)
* tree.xmlOutputBufferWrite(self._c_out, 1, '>') # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)">")));
- /* "src/lxml/serializer.pxi":1573
+ /* "src/lxml/serializer.pxi":1572
*
* name, prefix = self._element_stack.pop()[1:3]
* if ok_to_write: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1578
+ /* "src/lxml/serializer.pxi":1577
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
*
* if not self._element_stack: # <<<<<<<<<<<<<<
__pyx_t_6 = ((!__pyx_t_1) != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":1579
+ /* "src/lxml/serializer.pxi":1578
*
* if not self._element_stack:
* self._status = WRITER_FINISHED # <<<<<<<<<<<<<<
*/
__pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_FINISHED;
- /* "src/lxml/serializer.pxi":1578
+ /* "src/lxml/serializer.pxi":1577
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
*
* if not self._element_stack: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1580
+ /* "src/lxml/serializer.pxi":1579
* if not self._element_stack:
* self._status = WRITER_FINISHED
* if ok_to_write: # <<<<<<<<<<<<<<
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out)
*/
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_ok_to_write); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1580, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_ok_to_write); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 1579, __pyx_L1_error)
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":1581
+ /* "src/lxml/serializer.pxi":1580
* self._status = WRITER_FINISHED
* if ok_to_write:
* if not self._buffered: # <<<<<<<<<<<<<<
__pyx_t_6 = ((!(__pyx_v_self->_buffered != 0)) != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":1582
+ /* "src/lxml/serializer.pxi":1581
* if ok_to_write:
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
- /* "src/lxml/serializer.pxi":1581
+ /* "src/lxml/serializer.pxi":1580
* self._status = WRITER_FINISHED
* if ok_to_write:
* if not self._buffered: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1583
+ /* "src/lxml/serializer.pxi":1582
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out)
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces):
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1583, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1582, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1580
+ /* "src/lxml/serializer.pxi":1579
* if not self._element_stack:
* self._status = WRITER_FINISHED
* if ok_to_write: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1561
+ /* "src/lxml/serializer.pxi":1560
* tree.xmlOutputBufferWrite(self._c_out, 1, '"')
*
* cdef _write_end_element(self, element_config): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1585
+/* "src/lxml/serializer.pxi":1584
* self._handle_error(self._c_out.error)
*
* cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_find_prefix", 0);
- /* "src/lxml/serializer.pxi":1586
+ /* "src/lxml/serializer.pxi":1585
*
* cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces):
* if href is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1587
+ /* "src/lxml/serializer.pxi":1586
* cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces):
* if href is None:
* return None # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1586
+ /* "src/lxml/serializer.pxi":1585
*
* cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces):
* if href is None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1588
+ /* "src/lxml/serializer.pxi":1587
* if href is None:
* return None
* if href in flat_namespaces_map: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_flat_namespaces_map == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(9, 1588, __pyx_L1_error)
+ __PYX_ERR(9, 1587, __pyx_L1_error)
}
- __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_href, __pyx_v_flat_namespaces_map, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1588, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_href, __pyx_v_flat_namespaces_map, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1587, __pyx_L1_error)
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1589
+ /* "src/lxml/serializer.pxi":1588
* return None
* if href in flat_namespaces_map:
* return flat_namespaces_map[href] # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_r);
if (unlikely(__pyx_v_flat_namespaces_map == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1589, __pyx_L1_error)
+ __PYX_ERR(9, 1588, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_flat_namespaces_map, __pyx_v_href); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1589, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_flat_namespaces_map, __pyx_v_href); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1588, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1588
+ /* "src/lxml/serializer.pxi":1587
* if href is None:
* return None
* if href in flat_namespaces_map: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1591
+ /* "src/lxml/serializer.pxi":1590
* return flat_namespaces_map[href]
* # need to create a new prefix
* prefixes = flat_namespaces_map.values() # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_flat_namespaces_map == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
- __PYX_ERR(9, 1591, __pyx_L1_error)
+ __PYX_ERR(9, 1590, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_PyDict_Values(__pyx_v_flat_namespaces_map); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1591, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_Values(__pyx_v_flat_namespaces_map); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1590, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_prefixes = __pyx_t_3;
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1592
+ /* "src/lxml/serializer.pxi":1591
* # need to create a new prefix
* prefixes = flat_namespaces_map.values()
* i = 0 # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_int_0);
__pyx_v_i = __pyx_int_0;
- /* "src/lxml/serializer.pxi":1593
+ /* "src/lxml/serializer.pxi":1592
* prefixes = flat_namespaces_map.values()
* i = 0
* while True: # <<<<<<<<<<<<<<
*/
while (1) {
- /* "src/lxml/serializer.pxi":1594
+ /* "src/lxml/serializer.pxi":1593
* i = 0
* while True:
* prefix = _utf8('ns%d' % i) # <<<<<<<<<<<<<<
* if prefix not in prefixes:
* new_namespaces.append((b'xmlns', prefix, href))
*/
- __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_ns_d, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1594, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_ns_d, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1593, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1594, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1593, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF_SET(__pyx_v_prefix, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1595
+ /* "src/lxml/serializer.pxi":1594
* while True:
* prefix = _utf8('ns%d' % i)
* if prefix not in prefixes: # <<<<<<<<<<<<<<
* new_namespaces.append((b'xmlns', prefix, href))
* flat_namespaces_map[href] = prefix
*/
- __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_prefix, __pyx_v_prefixes, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1595, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_prefix, __pyx_v_prefixes, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 1594, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1596
+ /* "src/lxml/serializer.pxi":1595
* prefix = _utf8('ns%d' % i)
* if prefix not in prefixes:
* new_namespaces.append((b'xmlns', prefix, href)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_new_namespaces == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(9, 1596, __pyx_L1_error)
+ __PYX_ERR(9, 1595, __pyx_L1_error)
}
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1596, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1595, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_n_b_xmlns_2);
__Pyx_GIVEREF(__pyx_n_b_xmlns_2);
__Pyx_INCREF(__pyx_v_href);
__Pyx_GIVEREF(__pyx_v_href);
PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_href);
- __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_new_namespaces, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 1596, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_new_namespaces, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 1595, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1597
+ /* "src/lxml/serializer.pxi":1596
* if prefix not in prefixes:
* new_namespaces.append((b'xmlns', prefix, href))
* flat_namespaces_map[href] = prefix # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_flat_namespaces_map == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1597, __pyx_L1_error)
+ __PYX_ERR(9, 1596, __pyx_L1_error)
}
- if (unlikely(PyDict_SetItem(__pyx_v_flat_namespaces_map, __pyx_v_href, __pyx_v_prefix) < 0)) __PYX_ERR(9, 1597, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_flat_namespaces_map, __pyx_v_href, __pyx_v_prefix) < 0)) __PYX_ERR(9, 1596, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1598
+ /* "src/lxml/serializer.pxi":1597
* new_namespaces.append((b'xmlns', prefix, href))
* flat_namespaces_map[href] = prefix
* return prefix # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_prefix;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1595
+ /* "src/lxml/serializer.pxi":1594
* while True:
* prefix = _utf8('ns%d' % i)
* if prefix not in prefixes: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1599
+ /* "src/lxml/serializer.pxi":1598
* flat_namespaces_map[href] = prefix
* return prefix
* i += 1 # <<<<<<<<<<<<<<
*
* cdef _collect_namespaces(self, dict nsmap):
*/
- __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1599, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1598, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_i, __pyx_t_4);
__pyx_t_4 = 0;
}
- /* "src/lxml/serializer.pxi":1585
+ /* "src/lxml/serializer.pxi":1584
* self._handle_error(self._c_out.error)
*
* cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1601
+/* "src/lxml/serializer.pxi":1600
* i += 1
*
* cdef _collect_namespaces(self, dict nsmap): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_collect_namespaces", 0);
- /* "src/lxml/serializer.pxi":1602
+ /* "src/lxml/serializer.pxi":1601
*
* cdef _collect_namespaces(self, dict nsmap):
* new_namespaces = [] # <<<<<<<<<<<<<<
* flat_namespaces_map = {}
* for ns, prefix in nsmap.iteritems():
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1602, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1601, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_new_namespaces = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1603
+ /* "src/lxml/serializer.pxi":1602
* cdef _collect_namespaces(self, dict nsmap):
* new_namespaces = []
* flat_namespaces_map = {} # <<<<<<<<<<<<<<
* for ns, prefix in nsmap.iteritems():
* flat_namespaces_map[ns] = prefix
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1603, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1602, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_flat_namespaces_map = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1604
+ /* "src/lxml/serializer.pxi":1603
* new_namespaces = []
* flat_namespaces_map = {}
* for ns, prefix in nsmap.iteritems(): # <<<<<<<<<<<<<<
__pyx_t_2 = 0;
if (unlikely(__pyx_v_nsmap == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
- __PYX_ERR(9, 1604, __pyx_L1_error)
+ __PYX_ERR(9, 1603, __pyx_L1_error)
}
- __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_nsmap, 1, __pyx_n_s_iteritems, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1604, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_nsmap, 1, __pyx_n_s_iteritems, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1603, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_1);
__pyx_t_1 = __pyx_t_5;
while (1) {
__pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4);
if (unlikely(__pyx_t_7 == 0)) break;
- if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(9, 1604, __pyx_L1_error)
+ if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(9, 1603, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_5);
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1605
+ /* "src/lxml/serializer.pxi":1604
* flat_namespaces_map = {}
* for ns, prefix in nsmap.iteritems():
* flat_namespaces_map[ns] = prefix # <<<<<<<<<<<<<<
* if prefix is None:
* # use empty bytes rather than None to allow sorting
*/
- if (unlikely(PyDict_SetItem(__pyx_v_flat_namespaces_map, __pyx_v_ns, __pyx_v_prefix) < 0)) __PYX_ERR(9, 1605, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_flat_namespaces_map, __pyx_v_ns, __pyx_v_prefix) < 0)) __PYX_ERR(9, 1604, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1606
+ /* "src/lxml/serializer.pxi":1605
* for ns, prefix in nsmap.iteritems():
* flat_namespaces_map[ns] = prefix
* if prefix is None: # <<<<<<<<<<<<<<
__pyx_t_9 = (__pyx_t_8 != 0);
if (__pyx_t_9) {
- /* "src/lxml/serializer.pxi":1608
+ /* "src/lxml/serializer.pxi":1607
* if prefix is None:
* # use empty bytes rather than None to allow sorting
* new_namespaces.append((b'', b'xmlns', ns)) # <<<<<<<<<<<<<<
* else:
* new_namespaces.append((b'xmlns', prefix, ns))
*/
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1608, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1607, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_kp_b__12);
__Pyx_GIVEREF(__pyx_kp_b__12);
__Pyx_INCREF(__pyx_v_ns);
__Pyx_GIVEREF(__pyx_v_ns);
PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_ns);
- __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_namespaces, __pyx_t_6); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(9, 1608, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_namespaces, __pyx_t_6); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(9, 1607, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1606
+ /* "src/lxml/serializer.pxi":1605
* for ns, prefix in nsmap.iteritems():
* flat_namespaces_map[ns] = prefix
* if prefix is None: # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "src/lxml/serializer.pxi":1610
+ /* "src/lxml/serializer.pxi":1609
* new_namespaces.append((b'', b'xmlns', ns))
* else:
* new_namespaces.append((b'xmlns', prefix, ns)) # <<<<<<<<<<<<<<
* if self._element_stack:
*/
/*else*/ {
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1610, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1609, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_n_b_xmlns_2);
__Pyx_GIVEREF(__pyx_n_b_xmlns_2);
__Pyx_INCREF(__pyx_v_ns);
__Pyx_GIVEREF(__pyx_v_ns);
PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_ns);
- __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_namespaces, __pyx_t_6); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(9, 1610, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_namespaces, __pyx_t_6); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(9, 1609, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__pyx_L5:;
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1612
+ /* "src/lxml/serializer.pxi":1611
* new_namespaces.append((b'xmlns', prefix, ns))
* # merge in flat namespace map of parent
* if self._element_stack: # <<<<<<<<<<<<<<
__pyx_t_9 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
if (__pyx_t_9) {
- /* "src/lxml/serializer.pxi":1613
+ /* "src/lxml/serializer.pxi":1612
* # merge in flat namespace map of parent
* if self._element_stack:
* for ns, prefix in (<dict>self._element_stack[-1][-1]).iteritems(): # <<<<<<<<<<<<<<
__pyx_t_3 = 0;
if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1613, __pyx_L1_error)
+ __PYX_ERR(9, 1612, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1613, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1612, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1613, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1612, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(__pyx_t_5 == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
- __PYX_ERR(9, 1613, __pyx_L1_error)
+ __PYX_ERR(9, 1612, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_dict_iterator(((PyObject*)__pyx_t_5), 1, __pyx_n_s_iteritems, (&__pyx_t_2), (&__pyx_t_4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1613, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_dict_iterator(((PyObject*)__pyx_t_5), 1, __pyx_n_s_iteritems, (&__pyx_t_2), (&__pyx_t_4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1612, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_1);
while (1) {
__pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_2, &__pyx_t_3, &__pyx_t_6, &__pyx_t_5, NULL, __pyx_t_4);
if (unlikely(__pyx_t_7 == 0)) break;
- if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(9, 1613, __pyx_L1_error)
+ if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(9, 1612, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_5);
__pyx_t_5 = 0;
- /* "src/lxml/serializer.pxi":1614
+ /* "src/lxml/serializer.pxi":1613
* if self._element_stack:
* for ns, prefix in (<dict>self._element_stack[-1][-1]).iteritems():
* if flat_namespaces_map.get(ns) is None: # <<<<<<<<<<<<<<
* # unknown or empty prefix => prefer a 'real' prefix
* flat_namespaces_map[ns] = prefix
*/
- __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_flat_namespaces_map, __pyx_v_ns, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1614, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_flat_namespaces_map, __pyx_v_ns, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1613, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_9 = (__pyx_t_5 == Py_None);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_8 = (__pyx_t_9 != 0);
if (__pyx_t_8) {
- /* "src/lxml/serializer.pxi":1616
+ /* "src/lxml/serializer.pxi":1615
* if flat_namespaces_map.get(ns) is None:
* # unknown or empty prefix => prefer a 'real' prefix
* flat_namespaces_map[ns] = prefix # <<<<<<<<<<<<<<
* return flat_namespaces_map, new_namespaces
*
*/
- if (unlikely(PyDict_SetItem(__pyx_v_flat_namespaces_map, __pyx_v_ns, __pyx_v_prefix) < 0)) __PYX_ERR(9, 1616, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_flat_namespaces_map, __pyx_v_ns, __pyx_v_prefix) < 0)) __PYX_ERR(9, 1615, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1614
+ /* "src/lxml/serializer.pxi":1613
* if self._element_stack:
* for ns, prefix in (<dict>self._element_stack[-1][-1]).iteritems():
* if flat_namespaces_map.get(ns) is None: # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1612
+ /* "src/lxml/serializer.pxi":1611
* new_namespaces.append((b'xmlns', prefix, ns))
* # merge in flat namespace map of parent
* if self._element_stack: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1617
+ /* "src/lxml/serializer.pxi":1616
* # unknown or empty prefix => prefer a 'real' prefix
* flat_namespaces_map[ns] = prefix
* return flat_namespaces_map, new_namespaces # <<<<<<<<<<<<<<
* def write(self, *args, bint with_tail=True, bint pretty_print=False, method=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1617, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1616, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_flat_namespaces_map);
__Pyx_GIVEREF(__pyx_v_flat_namespaces_map);
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1601
+ /* "src/lxml/serializer.pxi":1600
* i += 1
*
* cdef _collect_namespaces(self, dict nsmap): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1619
+/* "src/lxml/serializer.pxi":1618
* return flat_namespaces_map, new_namespaces
*
* def write(self, *args, bint with_tail=True, bint pretty_print=False, method=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "write") < 0)) __PYX_ERR(9, 1619, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "write") < 0)) __PYX_ERR(9, 1618, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) < 0) {
goto __pyx_L5_argtuple_error;
} else {
}
if (values[0]) {
- __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1619, __pyx_L3_error)
+ __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1618, __pyx_L3_error)
} else {
__pyx_v_with_tail = ((int)1);
}
if (values[1]) {
- __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1619, __pyx_L3_error)
+ __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1618, __pyx_L3_error)
} else {
__pyx_v_pretty_print = ((int)0);
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("write", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1619, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("write", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1618, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
__Pyx_AddTraceback("lxml.etree._IncrementalFileWriter.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("write", 0);
- /* "src/lxml/serializer.pxi":1627
+ /* "src/lxml/serializer.pxi":1626
* to temporarily override the output method.
* """
* assert self._c_out is not NULL # <<<<<<<<<<<<<<
if (unlikely(!Py_OptimizeFlag)) {
if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
PyErr_SetNone(PyExc_AssertionError);
- __PYX_ERR(9, 1627, __pyx_L1_error)
+ __PYX_ERR(9, 1626, __pyx_L1_error)
}
}
#endif
- /* "src/lxml/serializer.pxi":1628
+ /* "src/lxml/serializer.pxi":1627
* """
* assert self._c_out is not NULL
* c_method = self._method if method is None else _findOutputMethod(method) # <<<<<<<<<<<<<<
if ((__pyx_t_2 != 0)) {
__pyx_t_1 = __pyx_v_self->_method;
} else {
- __pyx_t_3 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 1628, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 1627, __pyx_L1_error)
__pyx_t_1 = __pyx_t_3;
}
__pyx_v_c_method = __pyx_t_1;
- /* "src/lxml/serializer.pxi":1630
+ /* "src/lxml/serializer.pxi":1629
* c_method = self._method if method is None else _findOutputMethod(method)
*
* for content in args: # <<<<<<<<<<<<<<
for (;;) {
if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(9, 1630, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(9, 1629, __pyx_L1_error)
#else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1630, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1629, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_XDECREF_SET(__pyx_v_content, __pyx_t_6);
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1631
+ /* "src/lxml/serializer.pxi":1630
*
* for content in args:
* if _isString(content): # <<<<<<<<<<<<<<
__pyx_t_2 = (_isString(__pyx_v_content) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1632
+ /* "src/lxml/serializer.pxi":1631
* for content in args:
* if _isString(content):
* if self._status != WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_self->_status != __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1633
+ /* "src/lxml/serializer.pxi":1632
* if _isString(content):
* if self._status != WRITER_IN_ELEMENT:
* if self._status > WRITER_IN_ELEMENT or content.strip(): # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_t_7;
goto __pyx_L8_bool_binop_done;
}
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_content, __pyx_n_s_strip); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1633, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_content, __pyx_n_s_strip); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1632, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_9 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
}
__pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1633, __pyx_L1_error)
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1632, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(9, 1633, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(9, 1632, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_2 = __pyx_t_7;
__pyx_L8_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
- /* "src/lxml/serializer.pxi":1634
+ /* "src/lxml/serializer.pxi":1633
* if self._status != WRITER_IN_ELEMENT:
* if self._status > WRITER_IN_ELEMENT or content.strip():
* raise LxmlSyntaxError("not in an element") # <<<<<<<<<<<<<<
* bstring = _utf8(content)
* if not bstring:
*/
- __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1634, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1633, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_9 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
}
__pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_kp_s_not_in_an_element) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_s_not_in_an_element);
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1634, __pyx_L1_error)
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1633, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __PYX_ERR(9, 1634, __pyx_L1_error)
+ __PYX_ERR(9, 1633, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1633
+ /* "src/lxml/serializer.pxi":1632
* if _isString(content):
* if self._status != WRITER_IN_ELEMENT:
* if self._status > WRITER_IN_ELEMENT or content.strip(): # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1632
+ /* "src/lxml/serializer.pxi":1631
* for content in args:
* if _isString(content):
* if self._status != WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1635
+ /* "src/lxml/serializer.pxi":1634
* if self._status > WRITER_IN_ELEMENT or content.strip():
* raise LxmlSyntaxError("not in an element")
* bstring = _utf8(content) # <<<<<<<<<<<<<<
* if not bstring:
* continue
*/
- __pyx_t_6 = __pyx_f_4lxml_5etree__utf8(__pyx_v_content); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1635, __pyx_L1_error)
+ __pyx_t_6 = __pyx_f_4lxml_5etree__utf8(__pyx_v_content); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1634, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_bstring, ((PyObject*)__pyx_t_6));
__pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1636
+ /* "src/lxml/serializer.pxi":1635
* raise LxmlSyntaxError("not in an element")
* bstring = _utf8(content)
* if not bstring: # <<<<<<<<<<<<<<
__pyx_t_7 = ((!__pyx_t_2) != 0);
if (__pyx_t_7) {
- /* "src/lxml/serializer.pxi":1637
+ /* "src/lxml/serializer.pxi":1636
* bstring = _utf8(content)
* if not bstring:
* continue # <<<<<<<<<<<<<<
*/
goto __pyx_L3_continue;
- /* "src/lxml/serializer.pxi":1636
+ /* "src/lxml/serializer.pxi":1635
* raise LxmlSyntaxError("not in an element")
* bstring = _utf8(content)
* if not bstring: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1639
+ /* "src/lxml/serializer.pxi":1638
* continue
*
* ns, name, _, _ = self._element_stack[-1] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1639, __pyx_L1_error)
+ __PYX_ERR(9, 1638, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1639, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1638, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
PyObject* sequence = __pyx_t_6;
if (unlikely(size != 4)) {
if (size > 4) __Pyx_RaiseTooManyValuesError(4);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(9, 1639, __pyx_L1_error)
+ __PYX_ERR(9, 1638, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
Py_ssize_t i;
PyObject** temps[4] = {&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11};
for (i=0; i < 4; i++) {
- PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(9, 1639, __pyx_L1_error)
+ PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(9, 1638, __pyx_L1_error)
__Pyx_GOTREF(item);
*(temps[i]) = item;
}
} else {
Py_ssize_t index = -1;
PyObject** temps[4] = {&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11};
- __pyx_t_12 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 1639, __pyx_L1_error)
+ __pyx_t_12 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 1638, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext;
__Pyx_GOTREF(item);
*(temps[index]) = item;
}
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 4) < 0) __PYX_ERR(9, 1639, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 4) < 0) __PYX_ERR(9, 1638, __pyx_L1_error)
__pyx_t_13 = NULL;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L12_unpacking_done;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_13 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(9, 1639, __pyx_L1_error)
+ __PYX_ERR(9, 1638, __pyx_L1_error)
__pyx_L12_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_8);
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_11);
__pyx_t_11 = 0;
- /* "src/lxml/serializer.pxi":1640
+ /* "src/lxml/serializer.pxi":1639
*
* ns, name, _, _ = self._element_stack[-1]
* if (c_method == OUTPUT_METHOD_HTML and # <<<<<<<<<<<<<<
goto __pyx_L14_bool_binop_done;
}
- /* "src/lxml/serializer.pxi":1641
+ /* "src/lxml/serializer.pxi":1640
* ns, name, _, _ = self._element_stack[-1]
* if (c_method == OUTPUT_METHOD_HTML and
* ns in (None, b'http://www.w3.org/1999/xhtml') and # <<<<<<<<<<<<<<
*/
__Pyx_INCREF(__pyx_v_ns);
__pyx_t_6 = __pyx_v_ns;
- __pyx_t_11 = PyObject_RichCompare(__pyx_t_6, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1641, __pyx_L1_error)
- __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(9, 1641, __pyx_L1_error)
+ __pyx_t_11 = PyObject_RichCompare(__pyx_t_6, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1640, __pyx_L1_error)
+ __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(9, 1640, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (!__pyx_t_14) {
} else {
__pyx_t_2 = __pyx_t_14;
goto __pyx_L17_bool_binop_done;
}
- __pyx_t_14 = (__Pyx_PyBytes_Equals(__pyx_t_6, __pyx_kp_b_http_www_w3_org_1999_xhtml, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(9, 1641, __pyx_L1_error)
+ __pyx_t_14 = (__Pyx_PyBytes_Equals(__pyx_t_6, __pyx_kp_b_http_www_w3_org_1999_xhtml, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(9, 1640, __pyx_L1_error)
__pyx_t_2 = __pyx_t_14;
__pyx_L17_bool_binop_done:;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L14_bool_binop_done;
}
- /* "src/lxml/serializer.pxi":1642
+ /* "src/lxml/serializer.pxi":1641
* if (c_method == OUTPUT_METHOD_HTML and
* ns in (None, b'http://www.w3.org/1999/xhtml') and
* name in (b'script', b'style')): # <<<<<<<<<<<<<<
*/
__Pyx_INCREF(__pyx_v_name);
__pyx_t_6 = __pyx_v_name;
- __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_t_6, __pyx_n_b_script, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1642, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_t_6, __pyx_n_b_script, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1641, __pyx_L1_error)
if (!__pyx_t_2) {
} else {
__pyx_t_14 = __pyx_t_2;
goto __pyx_L19_bool_binop_done;
}
- __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_t_6, __pyx_n_b_style, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1642, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_t_6, __pyx_n_b_style, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 1641, __pyx_L1_error)
__pyx_t_14 = __pyx_t_2;
__pyx_L19_bool_binop_done:;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = __pyx_t_2;
__pyx_L14_bool_binop_done:;
- /* "src/lxml/serializer.pxi":1640
+ /* "src/lxml/serializer.pxi":1639
*
* ns, name, _, _ = self._element_stack[-1]
* if (c_method == OUTPUT_METHOD_HTML and # <<<<<<<<<<<<<<
*/
if (__pyx_t_7) {
- /* "src/lxml/serializer.pxi":1643
+ /* "src/lxml/serializer.pxi":1642
* ns in (None, b'http://www.w3.org/1999/xhtml') and
* name in (b'script', b'style')):
* tree.xmlOutputBufferWrite(self._c_out, len(bstring), _cstr(bstring)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_bstring == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(9, 1643, __pyx_L1_error)
+ __PYX_ERR(9, 1642, __pyx_L1_error)
}
- __pyx_t_15 = PyBytes_GET_SIZE(__pyx_v_bstring); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1643, __pyx_L1_error)
+ __pyx_t_15 = PyBytes_GET_SIZE(__pyx_v_bstring); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1642, __pyx_L1_error)
(void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, __pyx_t_15, PyBytes_AS_STRING(__pyx_v_bstring)));
- /* "src/lxml/serializer.pxi":1640
+ /* "src/lxml/serializer.pxi":1639
*
* ns, name, _, _ = self._element_stack[-1]
* if (c_method == OUTPUT_METHOD_HTML and # <<<<<<<<<<<<<<
goto __pyx_L13;
}
- /* "src/lxml/serializer.pxi":1646
+ /* "src/lxml/serializer.pxi":1645
*
* else:
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(bstring), NULL) # <<<<<<<<<<<<<<
}
__pyx_L13:;
- /* "src/lxml/serializer.pxi":1631
+ /* "src/lxml/serializer.pxi":1630
*
* for content in args:
* if _isString(content): # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "src/lxml/serializer.pxi":1648
+ /* "src/lxml/serializer.pxi":1647
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(bstring), NULL)
*
* elif iselement(content): # <<<<<<<<<<<<<<
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document")
*/
- __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_iselement); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1648, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_iselement); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1647, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_10 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
}
__pyx_t_6 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_v_content) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_content);
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1648, __pyx_L1_error)
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1647, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(9, 1648, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(9, 1647, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (__pyx_t_7) {
- /* "src/lxml/serializer.pxi":1649
+ /* "src/lxml/serializer.pxi":1648
*
* elif iselement(content):
* if self._status > WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
__pyx_t_7 = ((__pyx_v_self->_status > __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
if (unlikely(__pyx_t_7)) {
- /* "src/lxml/serializer.pxi":1650
+ /* "src/lxml/serializer.pxi":1649
* elif iselement(content):
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document") # <<<<<<<<<<<<<<
* _writeNodeToBuffer(self._c_out, (<_Element>content)._c_node,
* self._c_encoding, NULL, c_method,
*/
- __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1650, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1649, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_10 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
}
__pyx_t_6 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_kp_s_cannot_append_trailing_element_t) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_kp_s_cannot_append_trailing_element_t);
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1650, __pyx_L1_error)
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1649, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __PYX_ERR(9, 1650, __pyx_L1_error)
+ __PYX_ERR(9, 1649, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1649
+ /* "src/lxml/serializer.pxi":1648
*
* elif iselement(content):
* if self._status > WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1651
+ /* "src/lxml/serializer.pxi":1650
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document")
* _writeNodeToBuffer(self._c_out, (<_Element>content)._c_node, # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeNodeToBuffer(__pyx_v_self->_c_out, ((struct LxmlElement *)__pyx_v_content)->_c_node, __pyx_v_self->_c_encoding, NULL, __pyx_v_c_method, 0, 0, __pyx_v_pretty_print, __pyx_v_with_tail, 0);
- /* "src/lxml/serializer.pxi":1654
+ /* "src/lxml/serializer.pxi":1653
* self._c_encoding, NULL, c_method,
* False, False, pretty_print, with_tail, False)
* if (<_Element>content)._c_node.type == tree.XML_ELEMENT_NODE: # <<<<<<<<<<<<<<
__pyx_t_7 = ((((struct LxmlElement *)__pyx_v_content)->_c_node->type == XML_ELEMENT_NODE) != 0);
if (__pyx_t_7) {
- /* "src/lxml/serializer.pxi":1655
+ /* "src/lxml/serializer.pxi":1654
* False, False, pretty_print, with_tail, False)
* if (<_Element>content)._c_node.type == tree.XML_ELEMENT_NODE:
* if not self._element_stack: # <<<<<<<<<<<<<<
__pyx_t_2 = ((!__pyx_t_7) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1656
+ /* "src/lxml/serializer.pxi":1655
* if (<_Element>content)._c_node.type == tree.XML_ELEMENT_NODE:
* if not self._element_stack:
* self._status = WRITER_FINISHED # <<<<<<<<<<<<<<
*/
__pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_FINISHED;
- /* "src/lxml/serializer.pxi":1655
+ /* "src/lxml/serializer.pxi":1654
* False, False, pretty_print, with_tail, False)
* if (<_Element>content)._c_node.type == tree.XML_ELEMENT_NODE:
* if not self._element_stack: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1654
+ /* "src/lxml/serializer.pxi":1653
* self._c_encoding, NULL, c_method,
* False, False, pretty_print, with_tail, False)
* if (<_Element>content)._c_node.type == tree.XML_ELEMENT_NODE: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1648
+ /* "src/lxml/serializer.pxi":1647
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(bstring), NULL)
*
* elif iselement(content): # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "src/lxml/serializer.pxi":1658
+ /* "src/lxml/serializer.pxi":1657
* self._status = WRITER_FINISHED
*
* elif content is not None: # <<<<<<<<<<<<<<
__pyx_t_7 = (__pyx_t_2 != 0);
if (unlikely(__pyx_t_7)) {
- /* "src/lxml/serializer.pxi":1660
+ /* "src/lxml/serializer.pxi":1659
* elif content is not None:
* raise TypeError(
* f"got invalid input value of type {type(content)}, expected string or Element") # <<<<<<<<<<<<<<
* self._handle_error(self._c_out.error)
* if not self._buffered:
*/
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1660, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1659, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_15 = 0;
__pyx_t_16 = 127;
__pyx_t_15 += 32;
__Pyx_GIVEREF(__pyx_kp_u_got_invalid_input_value_of_type);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_got_invalid_input_value_of_type);
- __pyx_t_11 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_content)), __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1660, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_content)), __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1659, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_16;
__pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
__pyx_t_15 += 28;
__Pyx_GIVEREF(__pyx_kp_u_expected_string_or_Element);
PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u_expected_string_or_Element);
- __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1660, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1659, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1659
+ /* "src/lxml/serializer.pxi":1658
*
* elif content is not None:
* raise TypeError( # <<<<<<<<<<<<<<
* f"got invalid input value of type {type(content)}, expected string or Element")
* self._handle_error(self._c_out.error)
*/
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1659, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1658, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __PYX_ERR(9, 1659, __pyx_L1_error)
+ __PYX_ERR(9, 1658, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1658
+ /* "src/lxml/serializer.pxi":1657
* self._status = WRITER_FINISHED
*
* elif content is not None: # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "src/lxml/serializer.pxi":1661
+ /* "src/lxml/serializer.pxi":1660
* raise TypeError(
* f"got invalid input value of type {type(content)}, expected string or Element")
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out)
*/
- __pyx_t_6 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1661, __pyx_L1_error)
+ __pyx_t_6 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1660, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "src/lxml/serializer.pxi":1630
+ /* "src/lxml/serializer.pxi":1629
* c_method = self._method if method is None else _findOutputMethod(method)
*
* for content in args: # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1662
+ /* "src/lxml/serializer.pxi":1661
* f"got invalid input value of type {type(content)}, expected string or Element")
* self._handle_error(self._c_out.error)
* if not self._buffered: # <<<<<<<<<<<<<<
__pyx_t_7 = ((!(__pyx_v_self->_buffered != 0)) != 0);
if (__pyx_t_7) {
- /* "src/lxml/serializer.pxi":1663
+ /* "src/lxml/serializer.pxi":1662
* self._handle_error(self._c_out.error)
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
- /* "src/lxml/serializer.pxi":1664
+ /* "src/lxml/serializer.pxi":1663
* if not self._buffered:
* tree.xmlOutputBufferFlush(self._c_out)
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* def flush(self):
*/
- __pyx_t_4 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1664, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1663, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1662
+ /* "src/lxml/serializer.pxi":1661
* f"got invalid input value of type {type(content)}, expected string or Element")
* self._handle_error(self._c_out.error)
* if not self._buffered: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1619
+ /* "src/lxml/serializer.pxi":1618
* return flat_namespaces_map, new_namespaces
*
* def write(self, *args, bint with_tail=True, bint pretty_print=False, method=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1666
+/* "src/lxml/serializer.pxi":1665
* self._handle_error(self._c_out.error)
*
* def flush(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("flush", 0);
- /* "src/lxml/serializer.pxi":1671
+ /* "src/lxml/serializer.pxi":1670
* Write any pending content of the current output buffer to the stream.
* """
* assert self._c_out is not NULL # <<<<<<<<<<<<<<
if (unlikely(!Py_OptimizeFlag)) {
if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
PyErr_SetNone(PyExc_AssertionError);
- __PYX_ERR(9, 1671, __pyx_L1_error)
+ __PYX_ERR(9, 1670, __pyx_L1_error)
}
}
#endif
- /* "src/lxml/serializer.pxi":1672
+ /* "src/lxml/serializer.pxi":1671
* """
* assert self._c_out is not NULL
* tree.xmlOutputBufferFlush(self._c_out) # <<<<<<<<<<<<<<
*/
(void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
- /* "src/lxml/serializer.pxi":1673
+ /* "src/lxml/serializer.pxi":1672
* assert self._c_out is not NULL
* tree.xmlOutputBufferFlush(self._c_out)
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* cdef _close(self, bint raise_on_error):
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1673, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1672, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1666
+ /* "src/lxml/serializer.pxi":1665
* self._handle_error(self._c_out.error)
*
* def flush(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1675
+/* "src/lxml/serializer.pxi":1674
* self._handle_error(self._c_out.error)
*
* cdef _close(self, bint raise_on_error): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_close", 0);
- /* "src/lxml/serializer.pxi":1676
+ /* "src/lxml/serializer.pxi":1675
*
* cdef _close(self, bint raise_on_error):
* if raise_on_error: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_raise_on_error != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1677
+ /* "src/lxml/serializer.pxi":1676
* cdef _close(self, bint raise_on_error):
* if raise_on_error:
* if self._status < WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_self->_status < __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1678
+ /* "src/lxml/serializer.pxi":1677
* if raise_on_error:
* if self._status < WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("no content written") # <<<<<<<<<<<<<<
* if self._element_stack:
* raise LxmlSyntaxError("pending open tags on close")
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1678, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1677, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_no_content_written) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_no_content_written);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1678, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1677, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1678, __pyx_L1_error)
+ __PYX_ERR(9, 1677, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1677
+ /* "src/lxml/serializer.pxi":1676
* cdef _close(self, bint raise_on_error):
* if raise_on_error:
* if self._status < WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1679
+ /* "src/lxml/serializer.pxi":1678
* if self._status < WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("no content written")
* if self._element_stack: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1680
+ /* "src/lxml/serializer.pxi":1679
* raise LxmlSyntaxError("no content written")
* if self._element_stack:
* raise LxmlSyntaxError("pending open tags on close") # <<<<<<<<<<<<<<
* error_result = self._c_out.error
* if error_result == xmlerror.XML_ERR_OK:
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1680, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1679, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_pending_open_tags_on_close) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_pending_open_tags_on_close);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1680, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1679, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1680, __pyx_L1_error)
+ __PYX_ERR(9, 1679, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1679
+ /* "src/lxml/serializer.pxi":1678
* if self._status < WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("no content written")
* if self._element_stack: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1676
+ /* "src/lxml/serializer.pxi":1675
*
* cdef _close(self, bint raise_on_error):
* if raise_on_error: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1681
+ /* "src/lxml/serializer.pxi":1680
* if self._element_stack:
* raise LxmlSyntaxError("pending open tags on close")
* error_result = self._c_out.error # <<<<<<<<<<<<<<
__pyx_t_5 = __pyx_v_self->_c_out->error;
__pyx_v_error_result = __pyx_t_5;
- /* "src/lxml/serializer.pxi":1682
+ /* "src/lxml/serializer.pxi":1681
* raise LxmlSyntaxError("pending open tags on close")
* error_result = self._c_out.error
* if error_result == xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_error_result == XML_ERR_OK) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1683
+ /* "src/lxml/serializer.pxi":1682
* error_result = self._c_out.error
* if error_result == xmlerror.XML_ERR_OK:
* error_result = tree.xmlOutputBufferClose(self._c_out) # <<<<<<<<<<<<<<
*/
__pyx_v_error_result = xmlOutputBufferClose(__pyx_v_self->_c_out);
- /* "src/lxml/serializer.pxi":1684
+ /* "src/lxml/serializer.pxi":1683
* if error_result == xmlerror.XML_ERR_OK:
* error_result = tree.xmlOutputBufferClose(self._c_out)
* if error_result != -1: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_error_result != -1L) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1685
+ /* "src/lxml/serializer.pxi":1684
* error_result = tree.xmlOutputBufferClose(self._c_out)
* if error_result != -1:
* error_result = xmlerror.XML_ERR_OK # <<<<<<<<<<<<<<
*/
__pyx_v_error_result = XML_ERR_OK;
- /* "src/lxml/serializer.pxi":1684
+ /* "src/lxml/serializer.pxi":1683
* if error_result == xmlerror.XML_ERR_OK:
* error_result = tree.xmlOutputBufferClose(self._c_out)
* if error_result != -1: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1682
+ /* "src/lxml/serializer.pxi":1681
* raise LxmlSyntaxError("pending open tags on close")
* error_result = self._c_out.error
* if error_result == xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "src/lxml/serializer.pxi":1687
+ /* "src/lxml/serializer.pxi":1686
* error_result = xmlerror.XML_ERR_OK
* else:
* tree.xmlOutputBufferClose(self._c_out) # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "src/lxml/serializer.pxi":1688
+ /* "src/lxml/serializer.pxi":1687
* else:
* tree.xmlOutputBufferClose(self._c_out)
* self._status = WRITER_FINISHED # <<<<<<<<<<<<<<
*/
__pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_FINISHED;
- /* "src/lxml/serializer.pxi":1689
+ /* "src/lxml/serializer.pxi":1688
* tree.xmlOutputBufferClose(self._c_out)
* self._status = WRITER_FINISHED
* self._c_out = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_self->_c_out = NULL;
- /* "src/lxml/serializer.pxi":1690
+ /* "src/lxml/serializer.pxi":1689
* self._status = WRITER_FINISHED
* self._c_out = NULL
* del self._element_stack[:] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1690, __pyx_L1_error)
+ __PYX_ERR(9, 1689, __pyx_L1_error)
}
- if (__Pyx_PyObject_DelSlice(__pyx_v_self->_element_stack, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(9, 1690, __pyx_L1_error)
+ if (__Pyx_PyObject_DelSlice(__pyx_v_self->_element_stack, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(9, 1689, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1691
+ /* "src/lxml/serializer.pxi":1690
* self._c_out = NULL
* del self._element_stack[:]
* if raise_on_error: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_raise_on_error != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1692
+ /* "src/lxml/serializer.pxi":1691
* del self._element_stack[:]
* if raise_on_error:
* self._handle_error(error_result) # <<<<<<<<<<<<<<
*
* cdef _handle_error(self, int error_result):
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_error_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1692, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_error_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1691, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1691
+ /* "src/lxml/serializer.pxi":1690
* self._c_out = NULL
* del self._element_stack[:]
* if raise_on_error: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1675
+ /* "src/lxml/serializer.pxi":1674
* self._handle_error(self._c_out.error)
*
* cdef _close(self, bint raise_on_error): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1694
+/* "src/lxml/serializer.pxi":1693
* self._handle_error(error_result)
*
* cdef _handle_error(self, int error_result): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_handle_error", 0);
- /* "src/lxml/serializer.pxi":1695
+ /* "src/lxml/serializer.pxi":1694
*
* cdef _handle_error(self, int error_result):
* if error_result != xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_error_result != XML_ERR_OK) != 0);
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1696
+ /* "src/lxml/serializer.pxi":1695
* cdef _handle_error(self, int error_result):
* if error_result != xmlerror.XML_ERR_OK:
* if self._target is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1697
+ /* "src/lxml/serializer.pxi":1696
* if error_result != xmlerror.XML_ERR_OK:
* if self._target is not None:
* self._target._exc_context._raise_if_stored() # <<<<<<<<<<<<<<
* _raiseSerialisationError(error_result)
*
*/
- __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_target->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_self->_target->_exc_context); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 1697, __pyx_L1_error)
+ __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_target->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_self->_target->_exc_context); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(9, 1696, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1696
+ /* "src/lxml/serializer.pxi":1695
* cdef _handle_error(self, int error_result):
* if error_result != xmlerror.XML_ERR_OK:
* if self._target is not None: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1698
+ /* "src/lxml/serializer.pxi":1697
* if self._target is not None:
* self._target._exc_context._raise_if_stored()
* _raiseSerialisationError(error_result) # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_4 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1698, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1697, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1695
+ /* "src/lxml/serializer.pxi":1694
*
* cdef _handle_error(self, int error_result):
* if error_result != xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1694
+ /* "src/lxml/serializer.pxi":1693
* self._handle_error(error_result)
*
* cdef _handle_error(self, int error_result): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1705
+/* "src/lxml/serializer.pxi":1704
* cdef class _AsyncDataWriter:
* cdef list _data
* def __cinit__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__cinit__", 0);
- /* "src/lxml/serializer.pxi":1706
+ /* "src/lxml/serializer.pxi":1705
* cdef list _data
* def __cinit__(self):
* self._data = [] # <<<<<<<<<<<<<<
*
* cdef bytes collect(self):
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1706, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1705, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_data);
__pyx_v_self->_data = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1705
+ /* "src/lxml/serializer.pxi":1704
* cdef class _AsyncDataWriter:
* cdef list _data
* def __cinit__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1708
+/* "src/lxml/serializer.pxi":1707
* self._data = []
*
* cdef bytes collect(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("collect", 0);
- /* "src/lxml/serializer.pxi":1709
+ /* "src/lxml/serializer.pxi":1708
*
* cdef bytes collect(self):
* data = b''.join(self._data) # <<<<<<<<<<<<<<
*/
__pyx_t_1 = __pyx_v_self->_data;
__Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyBytes_Join(__pyx_kp_b__12, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1709, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyBytes_Join(__pyx_kp_b__12, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1708, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_data = __pyx_t_2;
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1710
+ /* "src/lxml/serializer.pxi":1709
* cdef bytes collect(self):
* data = b''.join(self._data)
* del self._data[:] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_data == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(9, 1710, __pyx_L1_error)
+ __PYX_ERR(9, 1709, __pyx_L1_error)
}
- if (__Pyx_PyObject_DelSlice(__pyx_v_self->_data, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(9, 1710, __pyx_L1_error)
+ if (__Pyx_PyObject_DelSlice(__pyx_v_self->_data, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(9, 1709, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1711
+ /* "src/lxml/serializer.pxi":1710
* data = b''.join(self._data)
* del self._data[:]
* return data # <<<<<<<<<<<<<<
* def write(self, data):
*/
__Pyx_XDECREF(__pyx_r);
- if (!(likely(PyBytes_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(9, 1711, __pyx_L1_error)
+ if (!(likely(PyBytes_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(9, 1710, __pyx_L1_error)
__Pyx_INCREF(__pyx_v_data);
__pyx_r = ((PyObject*)__pyx_v_data);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1708
+ /* "src/lxml/serializer.pxi":1707
* self._data = []
*
* cdef bytes collect(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1713
+/* "src/lxml/serializer.pxi":1712
* return data
*
* def write(self, data): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("write", 0);
- /* "src/lxml/serializer.pxi":1714
+ /* "src/lxml/serializer.pxi":1713
*
* def write(self, data):
* self._data.append(data) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_data == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(9, 1714, __pyx_L1_error)
+ __PYX_ERR(9, 1713, __pyx_L1_error)
}
- __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_self->_data, __pyx_v_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 1714, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_self->_data, __pyx_v_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 1713, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1713
+ /* "src/lxml/serializer.pxi":1712
* return data
*
* def write(self, data): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1716
+/* "src/lxml/serializer.pxi":1715
* self._data.append(data)
*
* def close(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1730
+/* "src/lxml/serializer.pxi":1729
* cdef bint _buffered
*
* def __cinit__(self, async_outfile, bytes encoding, int compresslevel, bint close, # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_encoding)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 1); __PYX_ERR(9, 1730, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 1); __PYX_ERR(9, 1729, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_compresslevel)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 2); __PYX_ERR(9, 1730, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 2); __PYX_ERR(9, 1729, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_close)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 3); __PYX_ERR(9, 1730, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 3); __PYX_ERR(9, 1729, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_buffered)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 4); __PYX_ERR(9, 1730, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 4); __PYX_ERR(9, 1729, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 5); __PYX_ERR(9, 1730, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 5); __PYX_ERR(9, 1729, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 1730, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 1729, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
}
__pyx_v_async_outfile = values[0];
__pyx_v_encoding = ((PyObject*)values[1]);
- __pyx_v_compresslevel = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_compresslevel == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1730, __pyx_L3_error)
- __pyx_v_close = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_close == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1730, __pyx_L3_error)
- __pyx_v_buffered = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_buffered == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1731, __pyx_L3_error)
- __pyx_v_method = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_method == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1731, __pyx_L3_error)
+ __pyx_v_compresslevel = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_compresslevel == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1729, __pyx_L3_error)
+ __pyx_v_close = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_close == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1729, __pyx_L3_error)
+ __pyx_v_buffered = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_buffered == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1730, __pyx_L3_error)
+ __pyx_v_method = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_method == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1730, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1730, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1729, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._AsyncIncrementalFileWriter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_encoding), (&PyBytes_Type), 1, "encoding", 1))) __PYX_ERR(9, 1730, __pyx_L1_error)
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_encoding), (&PyBytes_Type), 1, "encoding", 1))) __PYX_ERR(9, 1729, __pyx_L1_error)
__pyx_r = __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(((struct __pyx_obj_4lxml_5etree__AsyncIncrementalFileWriter *)__pyx_v_self), __pyx_v_async_outfile, __pyx_v_encoding, __pyx_v_compresslevel, __pyx_v_close, __pyx_v_buffered, __pyx_v_method);
/* function exit code */
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__cinit__", 0);
- /* "src/lxml/serializer.pxi":1732
+ /* "src/lxml/serializer.pxi":1731
* def __cinit__(self, async_outfile, bytes encoding, int compresslevel, bint close,
* bint buffered, int method):
* self._flush_after_writes = 20 # <<<<<<<<<<<<<<
*/
__pyx_v_self->_flush_after_writes = 20;
- /* "src/lxml/serializer.pxi":1733
+ /* "src/lxml/serializer.pxi":1732
* bint buffered, int method):
* self._flush_after_writes = 20
* self._async_outfile = async_outfile # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_async_outfile);
__pyx_v_self->_async_outfile = __pyx_v_async_outfile;
- /* "src/lxml/serializer.pxi":1734
+ /* "src/lxml/serializer.pxi":1733
* self._flush_after_writes = 20
* self._async_outfile = async_outfile
* self._should_close = close # <<<<<<<<<<<<<<
*/
__pyx_v_self->_should_close = __pyx_v_close;
- /* "src/lxml/serializer.pxi":1735
+ /* "src/lxml/serializer.pxi":1734
* self._async_outfile = async_outfile
* self._should_close = close
* self._buffered = buffered # <<<<<<<<<<<<<<
*/
__pyx_v_self->_buffered = __pyx_v_buffered;
- /* "src/lxml/serializer.pxi":1736
+ /* "src/lxml/serializer.pxi":1735
* self._should_close = close
* self._buffered = buffered
* self._buffer = _AsyncDataWriter() # <<<<<<<<<<<<<<
* self._writer = _IncrementalFileWriter(
* self._buffer, encoding, compresslevel, close=True, buffered=False, method=method)
*/
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__AsyncDataWriter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1736, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__AsyncDataWriter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1735, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_buffer);
__pyx_v_self->_buffer = ((struct __pyx_obj_4lxml_5etree__AsyncDataWriter *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1738
+ /* "src/lxml/serializer.pxi":1737
* self._buffer = _AsyncDataWriter()
* self._writer = _IncrementalFileWriter(
* self._buffer, encoding, compresslevel, close=True, buffered=False, method=method) # <<<<<<<<<<<<<<
*
* cdef bytes _flush(self):
*/
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_compresslevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1738, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_compresslevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1737, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- /* "src/lxml/serializer.pxi":1737
+ /* "src/lxml/serializer.pxi":1736
* self._buffered = buffered
* self._buffer = _AsyncDataWriter()
* self._writer = _IncrementalFileWriter( # <<<<<<<<<<<<<<
* self._buffer, encoding, compresslevel, close=True, buffered=False, method=method)
*
*/
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1737, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1736, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(((PyObject *)__pyx_v_self->_buffer));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self->_buffer));
PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1738
+ /* "src/lxml/serializer.pxi":1737
* self._buffer = _AsyncDataWriter()
* self._writer = _IncrementalFileWriter(
* self._buffer, encoding, compresslevel, close=True, buffered=False, method=method) # <<<<<<<<<<<<<<
*
* cdef bytes _flush(self):
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1738, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1737, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_close, Py_True) < 0) __PYX_ERR(9, 1738, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_buffered, Py_False) < 0) __PYX_ERR(9, 1738, __pyx_L1_error)
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_method); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1738, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_close, Py_True) < 0) __PYX_ERR(9, 1737, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_buffered, Py_False) < 0) __PYX_ERR(9, 1737, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_method); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1737, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_method, __pyx_t_3) < 0) __PYX_ERR(9, 1738, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_method, __pyx_t_3) < 0) __PYX_ERR(9, 1737, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1737
+ /* "src/lxml/serializer.pxi":1736
* self._buffered = buffered
* self._buffer = _AsyncDataWriter()
* self._writer = _IncrementalFileWriter( # <<<<<<<<<<<<<<
* self._buffer, encoding, compresslevel, close=True, buffered=False, method=method)
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter), __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1737, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter), __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1736, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_self->_writer = ((struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1730
+ /* "src/lxml/serializer.pxi":1729
* cdef bint _buffered
*
* def __cinit__(self, async_outfile, bytes encoding, int compresslevel, bint close, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1740
+/* "src/lxml/serializer.pxi":1739
* self._buffer, encoding, compresslevel, close=True, buffered=False, method=method)
*
* cdef bytes _flush(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_flush", 0);
- /* "src/lxml/serializer.pxi":1741
+ /* "src/lxml/serializer.pxi":1740
*
* cdef bytes _flush(self):
* if not self._buffered or len(self._buffer._data) > self._flush_after_writes: # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_t_3);
if (unlikely(__pyx_t_3 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(9, 1741, __pyx_L1_error)
+ __PYX_ERR(9, 1740, __pyx_L1_error)
}
- __pyx_t_4 = PyList_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1741, __pyx_L1_error)
+ __pyx_t_4 = PyList_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(9, 1740, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_2 = ((__pyx_t_4 > __pyx_v_self->_flush_after_writes) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
- /* "src/lxml/serializer.pxi":1742
+ /* "src/lxml/serializer.pxi":1741
* cdef bytes _flush(self):
* if not self._buffered or len(self._buffer._data) > self._flush_after_writes:
* return self._buffer.collect() # <<<<<<<<<<<<<<
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(__pyx_v_self->_buffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1742, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(__pyx_v_self->_buffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1741, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_r = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1741
+ /* "src/lxml/serializer.pxi":1740
*
* cdef bytes _flush(self):
* if not self._buffered or len(self._buffer._data) > self._flush_after_writes: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1743
+ /* "src/lxml/serializer.pxi":1742
* if not self._buffered or len(self._buffer._data) > self._flush_after_writes:
* return self._buffer.collect()
* return None # <<<<<<<<<<<<<<
__pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1740
+ /* "src/lxml/serializer.pxi":1739
* self._buffer, encoding, compresslevel, close=True, buffered=False, method=method)
*
* cdef bytes _flush(self): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1745
+/* "src/lxml/serializer.pxi":1744
* return None
*
* async def flush(self): # <<<<<<<<<<<<<<
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_4_flush *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1745, __pyx_L1_error)
+ __PYX_ERR(9, 1744, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator4, __pyx_codeobj__84, (PyObject *) __pyx_cur_scope, __pyx_n_s_flush, __pyx_n_s_AsyncIncrementalFileWriter_flus, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1745, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator4, __pyx_codeobj__84, (PyObject *) __pyx_cur_scope, __pyx_n_s_flush, __pyx_n_s_AsyncIncrementalFileWriter_flus, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1744, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1745, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1744, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1746
+ /* "src/lxml/serializer.pxi":1745
*
* async def flush(self):
* self._writer.flush() # <<<<<<<<<<<<<<
* data = self._buffer.collect()
* if data:
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_flush); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1746, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_flush); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1745, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1746, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1745, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1747
+ /* "src/lxml/serializer.pxi":1746
* async def flush(self):
* self._writer.flush()
* data = self._buffer.collect() # <<<<<<<<<<<<<<
* if data:
* await self._async_outfile.write(data)
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(__pyx_cur_scope->__pyx_v_self->_buffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1747, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(__pyx_cur_scope->__pyx_v_self->_buffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1746, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_cur_scope->__pyx_v_data = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1748
+ /* "src/lxml/serializer.pxi":1747
* self._writer.flush()
* data = self._buffer.collect()
* if data: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
if (__pyx_t_4) {
- /* "src/lxml/serializer.pxi":1749
+ /* "src/lxml/serializer.pxi":1748
* data = self._buffer.collect()
* if data:
* await self._async_outfile.write(data) # <<<<<<<<<<<<<<
*
* async def write_declaration(self, version=None, standalone=None, doctype=None):
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1749, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1748, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_cur_scope->__pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_data);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1749, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1748, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L5_resume_from_await:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1749, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1748, __pyx_L1_error)
} else {
PyObject* exc_type = __Pyx_PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
- else __PYX_ERR(9, 1749, __pyx_L1_error)
+ else __PYX_ERR(9, 1748, __pyx_L1_error)
}
}
- /* "src/lxml/serializer.pxi":1748
+ /* "src/lxml/serializer.pxi":1747
* self._writer.flush()
* data = self._buffer.collect()
* if data: # <<<<<<<<<<<<<<
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1745
+ /* "src/lxml/serializer.pxi":1744
* return None
*
* async def flush(self): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1751
+/* "src/lxml/serializer.pxi":1750
* await self._async_outfile.write(data)
*
* async def write_declaration(self, version=None, standalone=None, doctype=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_declaration") < 0)) __PYX_ERR(9, 1751, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_declaration") < 0)) __PYX_ERR(9, 1750, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("write_declaration", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1751, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("write_declaration", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1750, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._AsyncIncrementalFileWriter.write_declaration", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_5_write_declaration *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1751, __pyx_L1_error)
+ __PYX_ERR(9, 1750, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_doctype);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_doctype);
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator5, __pyx_codeobj__85, (PyObject *) __pyx_cur_scope, __pyx_n_s_write_declaration, __pyx_n_s_AsyncIncrementalFileWriter_writ, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1751, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator5, __pyx_codeobj__85, (PyObject *) __pyx_cur_scope, __pyx_n_s_write_declaration, __pyx_n_s_AsyncIncrementalFileWriter_writ, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1750, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1751, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1750, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1752
+ /* "src/lxml/serializer.pxi":1751
*
* async def write_declaration(self, version=None, standalone=None, doctype=None):
* self._writer.write_declaration(version, standalone, doctype) # <<<<<<<<<<<<<<
* data = self._flush()
* if data:
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_write_declaration); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1752, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_write_declaration); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_version, __pyx_cur_scope->__pyx_v_standalone, __pyx_cur_scope->__pyx_v_doctype};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1752, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1751, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_version, __pyx_cur_scope->__pyx_v_standalone, __pyx_cur_scope->__pyx_v_doctype};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1752, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1751, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
- __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1752, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_doctype);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_doctype);
PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_doctype);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1752, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1753
+ /* "src/lxml/serializer.pxi":1752
* async def write_declaration(self, version=None, standalone=None, doctype=None):
* self._writer.write_declaration(version, standalone, doctype)
* data = self._flush() # <<<<<<<<<<<<<<
* if data:
* await self._async_outfile.write(data)
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1753, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1752, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_cur_scope->__pyx_v_data = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1754
+ /* "src/lxml/serializer.pxi":1753
* self._writer.write_declaration(version, standalone, doctype)
* data = self._flush()
* if data: # <<<<<<<<<<<<<<
__pyx_t_6 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
if (__pyx_t_6) {
- /* "src/lxml/serializer.pxi":1755
+ /* "src/lxml/serializer.pxi":1754
* data = self._flush()
* if data:
* await self._async_outfile.write(data) # <<<<<<<<<<<<<<
*
* async def write_doctype(self, doctype):
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1755, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1754, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_cur_scope->__pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_data);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1755, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1754, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L5_resume_from_await:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1755, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1754, __pyx_L1_error)
} else {
PyObject* exc_type = __Pyx_PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
- else __PYX_ERR(9, 1755, __pyx_L1_error)
+ else __PYX_ERR(9, 1754, __pyx_L1_error)
}
}
- /* "src/lxml/serializer.pxi":1754
+ /* "src/lxml/serializer.pxi":1753
* self._writer.write_declaration(version, standalone, doctype)
* data = self._flush()
* if data: # <<<<<<<<<<<<<<
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1751
+ /* "src/lxml/serializer.pxi":1750
* await self._async_outfile.write(data)
*
* async def write_declaration(self, version=None, standalone=None, doctype=None): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1757
+/* "src/lxml/serializer.pxi":1756
* await self._async_outfile.write(data)
*
* async def write_doctype(self, doctype): # <<<<<<<<<<<<<<
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_6_write_doctype *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1757, __pyx_L1_error)
+ __PYX_ERR(9, 1756, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_doctype);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_doctype);
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator6, __pyx_codeobj__86, (PyObject *) __pyx_cur_scope, __pyx_n_s_write_doctype, __pyx_n_s_AsyncIncrementalFileWriter_writ_2, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1757, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator6, __pyx_codeobj__86, (PyObject *) __pyx_cur_scope, __pyx_n_s_write_doctype, __pyx_n_s_AsyncIncrementalFileWriter_writ_2, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1756, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1757, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1756, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1758
+ /* "src/lxml/serializer.pxi":1757
*
* async def write_doctype(self, doctype):
* self._writer.write_doctype(doctype) # <<<<<<<<<<<<<<
* data = self._flush()
* if data:
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_write_doctype); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1758, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_write_doctype); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1757, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_cur_scope->__pyx_v_doctype) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_doctype);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1758, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1757, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1759
+ /* "src/lxml/serializer.pxi":1758
* async def write_doctype(self, doctype):
* self._writer.write_doctype(doctype)
* data = self._flush() # <<<<<<<<<<<<<<
* if data:
* await self._async_outfile.write(data)
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1759, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1758, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_cur_scope->__pyx_v_data = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1760
+ /* "src/lxml/serializer.pxi":1759
* self._writer.write_doctype(doctype)
* data = self._flush()
* if data: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
if (__pyx_t_4) {
- /* "src/lxml/serializer.pxi":1761
+ /* "src/lxml/serializer.pxi":1760
* data = self._flush()
* if data:
* await self._async_outfile.write(data) # <<<<<<<<<<<<<<
*
* async def write(self, *args, with_tail=True, pretty_print=False, method=None):
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1761, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1760, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_cur_scope->__pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_data);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1761, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1760, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L5_resume_from_await:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1761, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1760, __pyx_L1_error)
} else {
PyObject* exc_type = __Pyx_PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
- else __PYX_ERR(9, 1761, __pyx_L1_error)
+ else __PYX_ERR(9, 1760, __pyx_L1_error)
}
}
- /* "src/lxml/serializer.pxi":1760
+ /* "src/lxml/serializer.pxi":1759
* self._writer.write_doctype(doctype)
* data = self._flush()
* if data: # <<<<<<<<<<<<<<
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1757
+ /* "src/lxml/serializer.pxi":1756
* await self._async_outfile.write(data)
*
* async def write_doctype(self, doctype): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1763
+/* "src/lxml/serializer.pxi":1762
* await self._async_outfile.write(data)
*
* async def write(self, *args, with_tail=True, pretty_print=False, method=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "write") < 0)) __PYX_ERR(9, 1763, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "write") < 0)) __PYX_ERR(9, 1762, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) < 0) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("write", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1763, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("write", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1762, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_CLEAR(__pyx_v_args);
__Pyx_AddTraceback("lxml.etree._AsyncIncrementalFileWriter.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_7_write *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1763, __pyx_L1_error)
+ __PYX_ERR(9, 1762, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_args);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_args);
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator7, __pyx_codeobj__87, (PyObject *) __pyx_cur_scope, __pyx_n_s_write, __pyx_n_s_AsyncIncrementalFileWriter_writ_3, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1763, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator7, __pyx_codeobj__87, (PyObject *) __pyx_cur_scope, __pyx_n_s_write, __pyx_n_s_AsyncIncrementalFileWriter_writ_3, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1762, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1763, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1762, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1764
+ /* "src/lxml/serializer.pxi":1763
*
* async def write(self, *args, with_tail=True, pretty_print=False, method=None):
* self._writer.write(*args, with_tail=with_tail, pretty_print=pretty_print, method=method) # <<<<<<<<<<<<<<
* data = self._flush()
* if data:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1764, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1763, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1764, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1763, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_with_tail, __pyx_cur_scope->__pyx_v_with_tail) < 0) __PYX_ERR(9, 1764, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pretty_print, __pyx_cur_scope->__pyx_v_pretty_print) < 0) __PYX_ERR(9, 1764, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_method, __pyx_cur_scope->__pyx_v_method) < 0) __PYX_ERR(9, 1764, __pyx_L1_error)
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_cur_scope->__pyx_v_args, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1764, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_with_tail, __pyx_cur_scope->__pyx_v_with_tail) < 0) __PYX_ERR(9, 1763, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pretty_print, __pyx_cur_scope->__pyx_v_pretty_print) < 0) __PYX_ERR(9, 1763, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_method, __pyx_cur_scope->__pyx_v_method) < 0) __PYX_ERR(9, 1763, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_cur_scope->__pyx_v_args, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1763, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1765
+ /* "src/lxml/serializer.pxi":1764
* async def write(self, *args, with_tail=True, pretty_print=False, method=None):
* self._writer.write(*args, with_tail=with_tail, pretty_print=pretty_print, method=method)
* data = self._flush() # <<<<<<<<<<<<<<
* if data:
* await self._async_outfile.write(data)
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1765, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1764, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
__pyx_cur_scope->__pyx_v_data = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1766
+ /* "src/lxml/serializer.pxi":1765
* self._writer.write(*args, with_tail=with_tail, pretty_print=pretty_print, method=method)
* data = self._flush()
* if data: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
if (__pyx_t_4) {
- /* "src/lxml/serializer.pxi":1767
+ /* "src/lxml/serializer.pxi":1766
* data = self._flush()
* if data:
* await self._async_outfile.write(data) # <<<<<<<<<<<<<<
*
* def method(self, method):
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1767, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1766, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_cur_scope->__pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_data);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1767, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1766, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3);
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L5_resume_from_await:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1767, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1766, __pyx_L1_error)
} else {
PyObject* exc_type = __Pyx_PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
- else __PYX_ERR(9, 1767, __pyx_L1_error)
+ else __PYX_ERR(9, 1766, __pyx_L1_error)
}
}
- /* "src/lxml/serializer.pxi":1766
+ /* "src/lxml/serializer.pxi":1765
* self._writer.write(*args, with_tail=with_tail, pretty_print=pretty_print, method=method)
* data = self._flush()
* if data: # <<<<<<<<<<<<<<
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1763
+ /* "src/lxml/serializer.pxi":1762
* await self._async_outfile.write(data)
*
* async def write(self, *args, with_tail=True, pretty_print=False, method=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1769
+/* "src/lxml/serializer.pxi":1768
* await self._async_outfile.write(data)
*
* def method(self, method): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("method", 0);
- /* "src/lxml/serializer.pxi":1770
+ /* "src/lxml/serializer.pxi":1769
*
* def method(self, method):
* return self._writer.method(method) # <<<<<<<<<<<<<<
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_writer), __pyx_n_s_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1770, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_writer), __pyx_n_s_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1769, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_method) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_method);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1770, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1769, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1769
+ /* "src/lxml/serializer.pxi":1768
* await self._async_outfile.write(data)
*
* def method(self, method): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1772
+/* "src/lxml/serializer.pxi":1771
* return self._writer.method(method)
*
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "element") < 0)) __PYX_ERR(9, 1772, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "element") < 0)) __PYX_ERR(9, 1771, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("element", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1772, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("element", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1771, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v__extra); __pyx_v__extra = 0;
__Pyx_AddTraceback("lxml.etree._AsyncIncrementalFileWriter.element", __pyx_clineno, __pyx_lineno, __pyx_filename);
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("element", 0);
- /* "src/lxml/serializer.pxi":1773
+ /* "src/lxml/serializer.pxi":1772
*
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra):
* element_writer = self._writer.element(tag, attrib, nsmap, method, **_extra) # <<<<<<<<<<<<<<
* return _AsyncFileWriterElement(element_writer, self)
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_writer), __pyx_n_s_element); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1773, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_writer), __pyx_n_s_element); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1773, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_tag);
__Pyx_GIVEREF(__pyx_v_tag);
__Pyx_INCREF(__pyx_v_method);
__Pyx_GIVEREF(__pyx_v_method);
PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_method);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v__extra); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1773, __pyx_L1_error)
+ __pyx_t_3 = PyDict_Copy(__pyx_v__extra); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1772, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_element_writer = __pyx_t_3;
- __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_v_element_writer = __pyx_t_4;
+ __pyx_t_4 = 0;
- /* "src/lxml/serializer.pxi":1774
+ /* "src/lxml/serializer.pxi":1773
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra):
* element_writer = self._writer.element(tag, attrib, nsmap, method, **_extra)
* return _AsyncFileWriterElement(element_writer, self) # <<<<<<<<<<<<<<
* async def _close(self, bint raise_on_error):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1774, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1773, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_element_writer);
__Pyx_GIVEREF(__pyx_v_element_writer);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_element_writer);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_element_writer);
__Pyx_INCREF(((PyObject *)__pyx_v_self));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self));
- PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self));
- __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__AsyncFileWriterElement), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1774, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
+ PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self));
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__AsyncFileWriterElement), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1773, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
goto __pyx_L0;
- /* "src/lxml/serializer.pxi":1772
+ /* "src/lxml/serializer.pxi":1771
* return self._writer.method(method)
*
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra): # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("lxml.etree._AsyncIncrementalFileWriter.element", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
}
static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1776
+/* "src/lxml/serializer.pxi":1775
* return _AsyncFileWriterElement(element_writer, self)
*
* async def _close(self, bint raise_on_error): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_close (wrapper)", 0);
assert(__pyx_arg_raise_on_error); {
- __pyx_v_raise_on_error = __Pyx_PyObject_IsTrue(__pyx_arg_raise_on_error); if (unlikely((__pyx_v_raise_on_error == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1776, __pyx_L3_error)
+ __pyx_v_raise_on_error = __Pyx_PyObject_IsTrue(__pyx_arg_raise_on_error); if (unlikely((__pyx_v_raise_on_error == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1775, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_8__close *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1776, __pyx_L1_error)
+ __PYX_ERR(9, 1775, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_raise_on_error = __pyx_v_raise_on_error;
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator8, __pyx_codeobj__88, (PyObject *) __pyx_cur_scope, __pyx_n_s_close_2, __pyx_n_s_AsyncIncrementalFileWriter__clo, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1776, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator8, __pyx_codeobj__88, (PyObject *) __pyx_cur_scope, __pyx_n_s_close_2, __pyx_n_s_AsyncIncrementalFileWriter__clo, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1775, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1776, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1775, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1777
+ /* "src/lxml/serializer.pxi":1776
*
* async def _close(self, bint raise_on_error):
* self._writer._close(raise_on_error) # <<<<<<<<<<<<<<
* data = self._buffer.collect()
* if data:
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(__pyx_cur_scope->__pyx_v_self->_writer, __pyx_cur_scope->__pyx_v_raise_on_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1777, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(__pyx_cur_scope->__pyx_v_self->_writer, __pyx_cur_scope->__pyx_v_raise_on_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1776, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1778
+ /* "src/lxml/serializer.pxi":1777
* async def _close(self, bint raise_on_error):
* self._writer._close(raise_on_error)
* data = self._buffer.collect() # <<<<<<<<<<<<<<
* if data:
* await self._async_outfile.write(data)
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(__pyx_cur_scope->__pyx_v_self->_buffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1778, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(__pyx_cur_scope->__pyx_v_self->_buffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1777, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_cur_scope->__pyx_v_data = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1779
+ /* "src/lxml/serializer.pxi":1778
* self._writer._close(raise_on_error)
* data = self._buffer.collect()
* if data: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1780
+ /* "src/lxml/serializer.pxi":1779
* data = self._buffer.collect()
* if data:
* await self._async_outfile.write(data) # <<<<<<<<<<<<<<
* if self._should_close:
* await self._async_outfile.close()
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1780, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_cur_scope->__pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_data);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1780, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L5_resume_from_await:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1780, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1779, __pyx_L1_error)
} else {
PyObject* exc_type = __Pyx_PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
- else __PYX_ERR(9, 1780, __pyx_L1_error)
+ else __PYX_ERR(9, 1779, __pyx_L1_error)
}
}
- /* "src/lxml/serializer.pxi":1779
+ /* "src/lxml/serializer.pxi":1778
* self._writer._close(raise_on_error)
* data = self._buffer.collect()
* if data: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1781
+ /* "src/lxml/serializer.pxi":1780
* if data:
* await self._async_outfile.write(data)
* if self._should_close: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_self->_should_close != 0);
if (__pyx_t_2) {
- /* "src/lxml/serializer.pxi":1782
+ /* "src/lxml/serializer.pxi":1781
* await self._async_outfile.write(data)
* if self._should_close:
* await self._async_outfile.close() # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_close); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1782, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_close); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1781, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1782, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1781, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
__pyx_generator->resume_label = 2;
return __pyx_r;
__pyx_L7_resume_from_await:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1782, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1781, __pyx_L1_error)
} else {
PyObject* exc_type = __Pyx_PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
- else __PYX_ERR(9, 1782, __pyx_L1_error)
+ else __PYX_ERR(9, 1781, __pyx_L1_error)
}
}
- /* "src/lxml/serializer.pxi":1781
+ /* "src/lxml/serializer.pxi":1780
* if data:
* await self._async_outfile.write(data)
* if self._should_close: # <<<<<<<<<<<<<<
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1776
+ /* "src/lxml/serializer.pxi":1775
* return _AsyncFileWriterElement(element_writer, self)
*
* async def _close(self, bint raise_on_error): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1791
+/* "src/lxml/serializer.pxi":1790
* cdef _AsyncIncrementalFileWriter _writer
*
* def __cinit__(self, _FileWriterElement element_writer not None, # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_writer)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(9, 1791, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(9, 1790, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 1791, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 1790, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1791, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1790, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._AsyncFileWriterElement.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element_writer), __pyx_ptype_4lxml_5etree__FileWriterElement, 0, "element_writer", 0))) __PYX_ERR(9, 1791, __pyx_L1_error)
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_writer), __pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter, 0, "writer", 0))) __PYX_ERR(9, 1792, __pyx_L1_error)
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element_writer), __pyx_ptype_4lxml_5etree__FileWriterElement, 0, "element_writer", 0))) __PYX_ERR(9, 1790, __pyx_L1_error)
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_writer), __pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter, 0, "writer", 0))) __PYX_ERR(9, 1791, __pyx_L1_error)
__pyx_r = __pyx_pf_4lxml_5etree_23_AsyncFileWriterElement___cinit__(((struct __pyx_obj_4lxml_5etree__AsyncFileWriterElement *)__pyx_v_self), __pyx_v_element_writer, __pyx_v_writer);
/* function exit code */
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__", 0);
- /* "src/lxml/serializer.pxi":1793
+ /* "src/lxml/serializer.pxi":1792
* def __cinit__(self, _FileWriterElement element_writer not None,
* _AsyncIncrementalFileWriter writer not None):
* self._element_writer = element_writer # <<<<<<<<<<<<<<
__Pyx_DECREF(((PyObject *)__pyx_v_self->_element_writer));
__pyx_v_self->_element_writer = __pyx_v_element_writer;
- /* "src/lxml/serializer.pxi":1794
+ /* "src/lxml/serializer.pxi":1793
* _AsyncIncrementalFileWriter writer not None):
* self._element_writer = element_writer
* self._writer = writer # <<<<<<<<<<<<<<
__Pyx_DECREF(((PyObject *)__pyx_v_self->_writer));
__pyx_v_self->_writer = __pyx_v_writer;
- /* "src/lxml/serializer.pxi":1791
+ /* "src/lxml/serializer.pxi":1790
* cdef _AsyncIncrementalFileWriter _writer
*
* def __cinit__(self, _FileWriterElement element_writer not None, # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1796
+/* "src/lxml/serializer.pxi":1795
* self._writer = writer
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_9___aenter__ *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1796, __pyx_L1_error)
+ __PYX_ERR(9, 1795, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator9, __pyx_codeobj__89, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_AsyncFileWriterElement___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1796, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator9, __pyx_codeobj__89, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_AsyncFileWriterElement___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1795, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1796, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1795, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1797
+ /* "src/lxml/serializer.pxi":1796
*
* async def __aenter__(self):
* self._element_writer.__enter__() # <<<<<<<<<<<<<<
* data = self._writer._flush()
* if data:
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_element_writer), __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1797, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_element_writer), __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1796, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1797, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1796, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1798
+ /* "src/lxml/serializer.pxi":1797
* async def __aenter__(self):
* self._element_writer.__enter__()
* data = self._writer._flush() # <<<<<<<<<<<<<<
* if data:
* await self._writer._async_outfile.write(data)
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self->_writer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1798, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self->_writer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1797, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_cur_scope->__pyx_v_data = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1799
+ /* "src/lxml/serializer.pxi":1798
* self._element_writer.__enter__()
* data = self._writer._flush()
* if data: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
if (__pyx_t_4) {
- /* "src/lxml/serializer.pxi":1800
+ /* "src/lxml/serializer.pxi":1799
* data = self._writer._flush()
* if data:
* await self._writer._async_outfile.write(data) # <<<<<<<<<<<<<<
*
* async def __aexit__(self, *args):
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_writer->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1800, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_writer->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1799, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_cur_scope->__pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_data);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1800, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1799, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L5_resume_from_await:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1800, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1799, __pyx_L1_error)
} else {
PyObject* exc_type = __Pyx_PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
- else __PYX_ERR(9, 1800, __pyx_L1_error)
+ else __PYX_ERR(9, 1799, __pyx_L1_error)
}
}
- /* "src/lxml/serializer.pxi":1799
+ /* "src/lxml/serializer.pxi":1798
* self._element_writer.__enter__()
* data = self._writer._flush()
* if data: # <<<<<<<<<<<<<<
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1796
+ /* "src/lxml/serializer.pxi":1795
* self._writer = writer
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1802
+/* "src/lxml/serializer.pxi":1801
* await self._writer._async_outfile.write(data)
*
* async def __aexit__(self, *args): # <<<<<<<<<<<<<<
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_10___aexit__ *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1802, __pyx_L1_error)
+ __PYX_ERR(9, 1801, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_args);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_args);
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator10, __pyx_codeobj__90, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_AsyncFileWriterElement___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1802, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator10, __pyx_codeobj__90, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_AsyncFileWriterElement___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1801, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1802, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1801, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1803
+ /* "src/lxml/serializer.pxi":1802
*
* async def __aexit__(self, *args):
* self._element_writer.__exit__(*args) # <<<<<<<<<<<<<<
* data = self._writer._flush()
* if data:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_element_writer), __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1803, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_element_writer), __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1802, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_cur_scope->__pyx_v_args, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1803, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_cur_scope->__pyx_v_args, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1802, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1804
+ /* "src/lxml/serializer.pxi":1803
* async def __aexit__(self, *args):
* self._element_writer.__exit__(*args)
* data = self._writer._flush() # <<<<<<<<<<<<<<
* if data:
* await self._writer._async_outfile.write(data)
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self->_writer); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1804, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self->_writer); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1803, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_cur_scope->__pyx_v_data = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1805
+ /* "src/lxml/serializer.pxi":1804
* self._element_writer.__exit__(*args)
* data = self._writer._flush()
* if data: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
if (__pyx_t_3) {
- /* "src/lxml/serializer.pxi":1806
+ /* "src/lxml/serializer.pxi":1805
* data = self._writer._flush()
* if data:
* await self._writer._async_outfile.write(data) # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_writer->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1806, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_writer->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1805, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_cur_scope->__pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_cur_scope->__pyx_v_data);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1806, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1805, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L5_resume_from_await:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1806, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1805, __pyx_L1_error)
} else {
PyObject* exc_type = __Pyx_PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
- else __PYX_ERR(9, 1806, __pyx_L1_error)
+ else __PYX_ERR(9, 1805, __pyx_L1_error)
}
}
- /* "src/lxml/serializer.pxi":1805
+ /* "src/lxml/serializer.pxi":1804
* self._element_writer.__exit__(*args)
* data = self._writer._flush()
* if data: # <<<<<<<<<<<<<<
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1802
+ /* "src/lxml/serializer.pxi":1801
* await self._writer._async_outfile.write(data)
*
* async def __aexit__(self, *args): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1818
+/* "src/lxml/serializer.pxi":1817
* cdef int _old_method
*
* def __cinit__(self, _IncrementalFileWriter writer not None, element_config, int method): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_element_config)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(9, 1818, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(9, 1817, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(9, 1818, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(9, 1817, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 1818, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 1817, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
}
__pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *)values[0]);
__pyx_v_element_config = values[1];
- __pyx_v_method = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_method == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1818, __pyx_L3_error)
+ __pyx_v_method = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_method == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1817, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1818, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1817, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._FileWriterElement.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_writer), __pyx_ptype_4lxml_5etree__IncrementalFileWriter, 0, "writer", 0))) __PYX_ERR(9, 1818, __pyx_L1_error)
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_writer), __pyx_ptype_4lxml_5etree__IncrementalFileWriter, 0, "writer", 0))) __PYX_ERR(9, 1817, __pyx_L1_error)
__pyx_r = __pyx_pf_4lxml_5etree_18_FileWriterElement___cinit__(((struct __pyx_obj_4lxml_5etree__FileWriterElement *)__pyx_v_self), __pyx_v_writer, __pyx_v_element_config, __pyx_v_method);
/* function exit code */
int __pyx_t_1;
__Pyx_RefNannySetupContext("__cinit__", 0);
- /* "src/lxml/serializer.pxi":1819
+ /* "src/lxml/serializer.pxi":1818
*
* def __cinit__(self, _IncrementalFileWriter writer not None, element_config, int method):
* self._writer = writer # <<<<<<<<<<<<<<
__Pyx_DECREF(((PyObject *)__pyx_v_self->_writer));
__pyx_v_self->_writer = __pyx_v_writer;
- /* "src/lxml/serializer.pxi":1820
+ /* "src/lxml/serializer.pxi":1819
* def __cinit__(self, _IncrementalFileWriter writer not None, element_config, int method):
* self._writer = writer
* self._element = element_config # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_element);
__pyx_v_self->_element = __pyx_v_element_config;
- /* "src/lxml/serializer.pxi":1821
+ /* "src/lxml/serializer.pxi":1820
* self._writer = writer
* self._element = element_config
* self._new_method = method # <<<<<<<<<<<<<<
*/
__pyx_v_self->_new_method = __pyx_v_method;
- /* "src/lxml/serializer.pxi":1822
+ /* "src/lxml/serializer.pxi":1821
* self._element = element_config
* self._new_method = method
* self._old_method = writer._method # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_writer->_method;
__pyx_v_self->_old_method = __pyx_t_1;
- /* "src/lxml/serializer.pxi":1818
+ /* "src/lxml/serializer.pxi":1817
* cdef int _old_method
*
* def __cinit__(self, _IncrementalFileWriter writer not None, element_config, int method): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1824
+/* "src/lxml/serializer.pxi":1823
* self._old_method = writer._method
*
* def __enter__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__enter__", 0);
- /* "src/lxml/serializer.pxi":1825
+ /* "src/lxml/serializer.pxi":1824
*
* def __enter__(self):
* self._writer._method = self._new_method # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_self->_new_method;
__pyx_v_self->_writer->_method = __pyx_t_1;
- /* "src/lxml/serializer.pxi":1826
+ /* "src/lxml/serializer.pxi":1825
* def __enter__(self):
* self._writer._method = self._new_method
* self._writer._write_start_element(self._element) # <<<<<<<<<<<<<<
*/
__pyx_t_2 = __pyx_v_self->_element;
__Pyx_INCREF(__pyx_t_2);
- __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_element(__pyx_v_self->_writer, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1826, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_element(__pyx_v_self->_writer, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1825, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/lxml/serializer.pxi":1824
+ /* "src/lxml/serializer.pxi":1823
* self._old_method = writer._method
*
* def __enter__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1828
+/* "src/lxml/serializer.pxi":1827
* self._writer._write_start_element(self._element)
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_val)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(9, 1828, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(9, 1827, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_tb)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(9, 1828, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(9, 1827, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(9, 1828, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(9, 1827, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1828, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1827, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._FileWriterElement.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__exit__", 0);
- /* "src/lxml/serializer.pxi":1829
+ /* "src/lxml/serializer.pxi":1828
*
* def __exit__(self, exc_type, exc_val, exc_tb):
* self._writer._write_end_element(self._element) # <<<<<<<<<<<<<<
*/
__pyx_t_1 = __pyx_v_self->_element;
__Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_element(__pyx_v_self->_writer, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1829, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_element(__pyx_v_self->_writer, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1828, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":1830
+ /* "src/lxml/serializer.pxi":1829
* def __exit__(self, exc_type, exc_val, exc_tb):
* self._writer._write_end_element(self._element)
* self._writer._method = self._old_method # <<<<<<<<<<<<<<
__pyx_t_3 = __pyx_v_self->_old_method;
__pyx_v_self->_writer->_method = __pyx_t_3;
- /* "src/lxml/serializer.pxi":1828
+ /* "src/lxml/serializer.pxi":1827
* self._writer._write_start_element(self._element)
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1843
+/* "src/lxml/serializer.pxi":1842
* cdef bint _exited
*
* def __cinit__(self, _IncrementalFileWriter writer not None, int method): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(9, 1843, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(9, 1842, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 1843, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 1842, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *)values[0]);
- __pyx_v_method = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_method == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1843, __pyx_L3_error)
+ __pyx_v_method = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_method == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 1842, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1843, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1842, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._MethodChanger.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_writer), __pyx_ptype_4lxml_5etree__IncrementalFileWriter, 0, "writer", 0))) __PYX_ERR(9, 1843, __pyx_L1_error)
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_writer), __pyx_ptype_4lxml_5etree__IncrementalFileWriter, 0, "writer", 0))) __PYX_ERR(9, 1842, __pyx_L1_error)
__pyx_r = __pyx_pf_4lxml_5etree_14_MethodChanger___cinit__(((struct __pyx_obj_4lxml_5etree__MethodChanger *)__pyx_v_self), __pyx_v_writer, __pyx_v_method);
/* function exit code */
int __pyx_t_1;
__Pyx_RefNannySetupContext("__cinit__", 0);
- /* "src/lxml/serializer.pxi":1844
+ /* "src/lxml/serializer.pxi":1843
*
* def __cinit__(self, _IncrementalFileWriter writer not None, int method):
* self._writer = writer # <<<<<<<<<<<<<<
__Pyx_DECREF(((PyObject *)__pyx_v_self->_writer));
__pyx_v_self->_writer = __pyx_v_writer;
- /* "src/lxml/serializer.pxi":1845
+ /* "src/lxml/serializer.pxi":1844
* def __cinit__(self, _IncrementalFileWriter writer not None, int method):
* self._writer = writer
* self._new_method = method # <<<<<<<<<<<<<<
*/
__pyx_v_self->_new_method = __pyx_v_method;
- /* "src/lxml/serializer.pxi":1846
+ /* "src/lxml/serializer.pxi":1845
* self._writer = writer
* self._new_method = method
* self._old_method = writer._method # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_writer->_method;
__pyx_v_self->_old_method = __pyx_t_1;
- /* "src/lxml/serializer.pxi":1847
+ /* "src/lxml/serializer.pxi":1846
* self._new_method = method
* self._old_method = writer._method
* self._entered = False # <<<<<<<<<<<<<<
*/
__pyx_v_self->_entered = 0;
- /* "src/lxml/serializer.pxi":1848
+ /* "src/lxml/serializer.pxi":1847
* self._old_method = writer._method
* self._entered = False
* self._exited = False # <<<<<<<<<<<<<<
*/
__pyx_v_self->_exited = 0;
- /* "src/lxml/serializer.pxi":1843
+ /* "src/lxml/serializer.pxi":1842
* cdef bint _exited
*
* def __cinit__(self, _IncrementalFileWriter writer not None, int method): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1850
+/* "src/lxml/serializer.pxi":1849
* self._exited = False
*
* def __enter__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__enter__", 0);
- /* "src/lxml/serializer.pxi":1851
+ /* "src/lxml/serializer.pxi":1850
*
* def __enter__(self):
* if self._entered: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_entered != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1852
+ /* "src/lxml/serializer.pxi":1851
* def __enter__(self):
* if self._entered:
* raise LxmlSyntaxError("Inconsistent enter action in context manager") # <<<<<<<<<<<<<<
* self._writer._method = self._new_method
* self._entered = True
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1852, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1851, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_Inconsistent_enter_action_in_con) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Inconsistent_enter_action_in_con);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1852, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1851, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1852, __pyx_L1_error)
+ __PYX_ERR(9, 1851, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1851
+ /* "src/lxml/serializer.pxi":1850
*
* def __enter__(self):
* if self._entered: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1853
+ /* "src/lxml/serializer.pxi":1852
* if self._entered:
* raise LxmlSyntaxError("Inconsistent enter action in context manager")
* self._writer._method = self._new_method # <<<<<<<<<<<<<<
__pyx_t_5 = __pyx_v_self->_new_method;
__pyx_v_self->_writer->_method = __pyx_t_5;
- /* "src/lxml/serializer.pxi":1854
+ /* "src/lxml/serializer.pxi":1853
* raise LxmlSyntaxError("Inconsistent enter action in context manager")
* self._writer._method = self._new_method
* self._entered = True # <<<<<<<<<<<<<<
*/
__pyx_v_self->_entered = 1;
- /* "src/lxml/serializer.pxi":1850
+ /* "src/lxml/serializer.pxi":1849
* self._exited = False
*
* def __enter__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/serializer.pxi":1856
+/* "src/lxml/serializer.pxi":1855
* self._entered = True
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_val)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(9, 1856, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(9, 1855, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_tb)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(9, 1856, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(9, 1855, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(9, 1856, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(9, 1855, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1856, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 1855, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._MethodChanger.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__exit__", 0);
- /* "src/lxml/serializer.pxi":1857
+ /* "src/lxml/serializer.pxi":1856
*
* def __exit__(self, exc_type, exc_val, exc_tb):
* if self._exited: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_exited != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1858
+ /* "src/lxml/serializer.pxi":1857
* def __exit__(self, exc_type, exc_val, exc_tb):
* if self._exited:
* raise LxmlSyntaxError("Inconsistent exit action in context manager") # <<<<<<<<<<<<<<
* if self._writer._method != self._new_method:
* raise LxmlSyntaxError("Method changed outside of context manager")
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1858, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1857, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_Inconsistent_exit_action_in_cont) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Inconsistent_exit_action_in_cont);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1858, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1857, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1858, __pyx_L1_error)
+ __PYX_ERR(9, 1857, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1857
+ /* "src/lxml/serializer.pxi":1856
*
* def __exit__(self, exc_type, exc_val, exc_tb):
* if self._exited: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1859
+ /* "src/lxml/serializer.pxi":1858
* if self._exited:
* raise LxmlSyntaxError("Inconsistent exit action in context manager")
* if self._writer._method != self._new_method: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_self->_writer->_method != __pyx_v_self->_new_method) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/serializer.pxi":1860
+ /* "src/lxml/serializer.pxi":1859
* raise LxmlSyntaxError("Inconsistent exit action in context manager")
* if self._writer._method != self._new_method:
* raise LxmlSyntaxError("Method changed outside of context manager") # <<<<<<<<<<<<<<
* self._writer._method = self._old_method
* self._exited = True
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1860, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1859, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_Method_changed_outside_of_contex) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Method_changed_outside_of_contex);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1860, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1859, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(9, 1860, __pyx_L1_error)
+ __PYX_ERR(9, 1859, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1859
+ /* "src/lxml/serializer.pxi":1858
* if self._exited:
* raise LxmlSyntaxError("Inconsistent exit action in context manager")
* if self._writer._method != self._new_method: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/serializer.pxi":1861
+ /* "src/lxml/serializer.pxi":1860
* if self._writer._method != self._new_method:
* raise LxmlSyntaxError("Method changed outside of context manager")
* self._writer._method = self._old_method # <<<<<<<<<<<<<<
__pyx_t_5 = __pyx_v_self->_old_method;
__pyx_v_self->_writer->_method = __pyx_t_5;
- /* "src/lxml/serializer.pxi":1862
+ /* "src/lxml/serializer.pxi":1861
* raise LxmlSyntaxError("Method changed outside of context manager")
* self._writer._method = self._old_method
* self._exited = True # <<<<<<<<<<<<<<
*/
__pyx_v_self->_exited = 1;
- /* "src/lxml/serializer.pxi":1856
+ /* "src/lxml/serializer.pxi":1855
* self._entered = True
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_14_MethodChanger_8generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1864
+/* "src/lxml/serializer.pxi":1863
* self._exited = True
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_11___aenter__ *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1864, __pyx_L1_error)
+ __PYX_ERR(9, 1863, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_14_MethodChanger_8generator11, __pyx_codeobj__91, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_MethodChanger___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1864, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_14_MethodChanger_8generator11, __pyx_codeobj__91, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_MethodChanger___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1863, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1864, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1863, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1866
+ /* "src/lxml/serializer.pxi":1865
* async def __aenter__(self):
* # for your async convenience
* return self.__enter__() # <<<<<<<<<<<<<<
* async def __aexit__(self, *args):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1866, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1865, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1866, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1865, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
goto __pyx_L0;
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1864
+ /* "src/lxml/serializer.pxi":1863
* self._exited = True
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_14_MethodChanger_11generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/serializer.pxi":1868
+/* "src/lxml/serializer.pxi":1867
* return self.__enter__()
*
* async def __aexit__(self, *args): # <<<<<<<<<<<<<<
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_12___aexit__ *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(9, 1868, __pyx_L1_error)
+ __PYX_ERR(9, 1867, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_args);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_args);
{
- __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_14_MethodChanger_11generator12, __pyx_codeobj__92, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_MethodChanger___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1868, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_14_MethodChanger_11generator12, __pyx_codeobj__92, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_MethodChanger___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(9, 1867, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1868, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1867, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1870
+ /* "src/lxml/serializer.pxi":1869
* async def __aexit__(self, *args):
* # for your async convenience
* return self.__exit__(*args) # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1870, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1869, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_cur_scope->__pyx_v_args, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1870, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_cur_scope->__pyx_v_args, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1869, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
goto __pyx_L0;
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/serializer.pxi":1868
+ /* "src/lxml/serializer.pxi":1867
* return self.__enter__()
*
* async def __aexit__(self, *args): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
__Pyx_INCREF(__pyx_v__eval_arg);
__Pyx_GIVEREF(__pyx_v__eval_arg);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__eval_arg);
- __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_self), __pyx_t_1, __pyx_v__variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 163, __pyx_L1_error)
+ __pyx_t_2 = PyDict_Copy(__pyx_v__variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_self), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
goto __pyx_L0;
/* "src/lxml/xpath.pxi":150
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase.evaluate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
* _assertValidDTDNode(self, self._c_node)
* return funicodeOrNone(self._c_node.content) # <<<<<<<<<<<<<<
*
- *
+ * @property
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_node->content); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 259, __pyx_L1_error)
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":274
+/* "src/lxml/dtd.pxi":262
+ *
+ * @property
+ * def system_url(self): # <<<<<<<<<<<<<<
+ * _assertValidDTDNode(self, self._c_node)
+ * return funicodeOrNone(self._c_node.SystemID)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_5etree_14_DTDEntityDecl_10system_url_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_5etree_14_DTDEntityDecl_10system_url_1__get__(PyObject *__pyx_v_self) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_5etree_14_DTDEntityDecl_10system_url___get__(((struct __pyx_obj_4lxml_5etree__DTDEntityDecl *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_10system_url___get__(struct __pyx_obj_4lxml_5etree__DTDEntityDecl *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ int __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__get__", 0);
+
+ /* "src/lxml/dtd.pxi":263
+ * @property
+ * def system_url(self):
+ * _assertValidDTDNode(self, self._c_node) # <<<<<<<<<<<<<<
+ * return funicodeOrNone(self._c_node.SystemID)
+ *
+ */
+ __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 263, __pyx_L1_error)
+
+ /* "src/lxml/dtd.pxi":264
+ * def system_url(self):
+ * _assertValidDTDNode(self, self._c_node)
+ * return funicodeOrNone(self._c_node.SystemID) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_node->SystemID); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 264, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
+ goto __pyx_L0;
+
+ /* "src/lxml/dtd.pxi":262
+ *
+ * @property
+ * def system_url(self): # <<<<<<<<<<<<<<
+ * _assertValidDTDNode(self, self._c_node)
+ * return funicodeOrNone(self._c_node.SystemID)
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_AddTraceback("lxml.etree._DTDEntityDecl.system_url.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "src/lxml/dtd.pxi":279
* """
* cdef tree.xmlDtd* _c_dtd
* def __init__(self, file=None, *, external_id=None): # <<<<<<<<<<<<<<
if (value) { values[index] = value; kw_args--; }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(20, 274, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(20, 279, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(20, 274, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(20, 279, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.DTD.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_RefNannySetupContext("__init__", 0);
__Pyx_INCREF(__pyx_v_file);
- /* "src/lxml/dtd.pxi":275
+ /* "src/lxml/dtd.pxi":280
* cdef tree.xmlDtd* _c_dtd
* def __init__(self, file=None, *, external_id=None):
* _Validator.__init__(self) # <<<<<<<<<<<<<<
* if file is not None:
* if _isString(file):
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__Validator), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 275, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__Validator), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 280, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, ((PyObject *)__pyx_v_self)) : __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 275, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 280, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "src/lxml/dtd.pxi":276
+ /* "src/lxml/dtd.pxi":281
* def __init__(self, file=None, *, external_id=None):
* _Validator.__init__(self)
* if file is not None: # <<<<<<<<<<<<<<
__pyx_t_5 = (__pyx_t_4 != 0);
if (__pyx_t_5) {
- /* "src/lxml/dtd.pxi":277
+ /* "src/lxml/dtd.pxi":282
* _Validator.__init__(self)
* if file is not None:
* if _isString(file): # <<<<<<<<<<<<<<
__pyx_t_5 = (_isString(__pyx_v_file) != 0);
if (__pyx_t_5) {
- /* "src/lxml/dtd.pxi":278
+ /* "src/lxml/dtd.pxi":283
* if file is not None:
* if _isString(file):
* file = _encodeFilename(file) # <<<<<<<<<<<<<<
* with self._error_log:
* orig_loader = _register_document_loader()
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 278, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 283, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF_SET(__pyx_v_file, __pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/dtd.pxi":279
+ /* "src/lxml/dtd.pxi":284
* if _isString(file):
* file = _encodeFilename(file)
* with self._error_log: # <<<<<<<<<<<<<<
* self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file))
*/
/*with:*/ {
- __pyx_t_6 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 279, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 284, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(20, 279, __pyx_L5_error)
+ __pyx_t_7 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(20, 284, __pyx_L5_error)
/*try:*/ {
{
(void)__pyx_t_8; (void)__pyx_t_9; (void)__pyx_t_10; /* mark used */
/*try:*/ {
- /* "src/lxml/dtd.pxi":280
+ /* "src/lxml/dtd.pxi":285
* file = _encodeFilename(file)
* with self._error_log:
* orig_loader = _register_document_loader() # <<<<<<<<<<<<<<
*/
__pyx_v_orig_loader = __pyx_f_4lxml_5etree__register_document_loader();
- /* "src/lxml/dtd.pxi":281
+ /* "src/lxml/dtd.pxi":286
* with self._error_log:
* orig_loader = _register_document_loader()
* self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file)) # <<<<<<<<<<<<<<
*/
__pyx_v_self->_c_dtd = xmlParseDTD(NULL, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_file));
- /* "src/lxml/dtd.pxi":282
+ /* "src/lxml/dtd.pxi":287
* orig_loader = _register_document_loader()
* self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file))
* _reset_document_loader(orig_loader) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__reset_document_loader(__pyx_v_orig_loader);
- /* "src/lxml/dtd.pxi":279
+ /* "src/lxml/dtd.pxi":284
* if _isString(file):
* file = _encodeFilename(file)
* with self._error_log: # <<<<<<<<<<<<<<
if (__pyx_t_6) {
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 279, __pyx_L1_error)
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 284, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__pyx_L15:;
}
- /* "src/lxml/dtd.pxi":277
+ /* "src/lxml/dtd.pxi":282
* _Validator.__init__(self)
* if file is not None:
* if _isString(file): # <<<<<<<<<<<<<<
goto __pyx_L4;
}
- /* "src/lxml/dtd.pxi":283
+ /* "src/lxml/dtd.pxi":288
* self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file))
* _reset_document_loader(orig_loader)
* elif hasattr(file, 'read'): # <<<<<<<<<<<<<<
* orig_loader = _register_document_loader()
* self._c_dtd = _parseDtdFromFilelike(file)
*/
- __pyx_t_5 = __Pyx_HasAttr(__pyx_v_file, __pyx_n_s_read); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(20, 283, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_HasAttr(__pyx_v_file, __pyx_n_s_read); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(20, 288, __pyx_L1_error)
__pyx_t_4 = (__pyx_t_5 != 0);
if (likely(__pyx_t_4)) {
- /* "src/lxml/dtd.pxi":284
+ /* "src/lxml/dtd.pxi":289
* _reset_document_loader(orig_loader)
* elif hasattr(file, 'read'):
* orig_loader = _register_document_loader() # <<<<<<<<<<<<<<
*/
__pyx_v_orig_loader = __pyx_f_4lxml_5etree__register_document_loader();
- /* "src/lxml/dtd.pxi":285
+ /* "src/lxml/dtd.pxi":290
* elif hasattr(file, 'read'):
* orig_loader = _register_document_loader()
* self._c_dtd = _parseDtdFromFilelike(file) # <<<<<<<<<<<<<<
* _reset_document_loader(orig_loader)
* else:
*/
- __pyx_t_11 = __pyx_f_4lxml_5etree__parseDtdFromFilelike(__pyx_v_file); if (unlikely(__pyx_t_11 == ((xmlDtd *)NULL))) __PYX_ERR(20, 285, __pyx_L1_error)
+ __pyx_t_11 = __pyx_f_4lxml_5etree__parseDtdFromFilelike(__pyx_v_file); if (unlikely(__pyx_t_11 == ((xmlDtd *)NULL))) __PYX_ERR(20, 290, __pyx_L1_error)
__pyx_v_self->_c_dtd = __pyx_t_11;
- /* "src/lxml/dtd.pxi":286
+ /* "src/lxml/dtd.pxi":291
* orig_loader = _register_document_loader()
* self._c_dtd = _parseDtdFromFilelike(file)
* _reset_document_loader(orig_loader) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__reset_document_loader(__pyx_v_orig_loader);
- /* "src/lxml/dtd.pxi":283
+ /* "src/lxml/dtd.pxi":288
* self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file))
* _reset_document_loader(orig_loader)
* elif hasattr(file, 'read'): # <<<<<<<<<<<<<<
goto __pyx_L4;
}
- /* "src/lxml/dtd.pxi":288
+ /* "src/lxml/dtd.pxi":293
* _reset_document_loader(orig_loader)
* else:
* raise DTDParseError, u"file must be a filename or file-like object" # <<<<<<<<<<<<<<
*/
/*else*/ {
__Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_kp_u_file_must_be_a_filename_or_file, 0, 0);
- __PYX_ERR(20, 288, __pyx_L1_error)
+ __PYX_ERR(20, 293, __pyx_L1_error)
}
__pyx_L4:;
- /* "src/lxml/dtd.pxi":276
+ /* "src/lxml/dtd.pxi":281
* def __init__(self, file=None, *, external_id=None):
* _Validator.__init__(self)
* if file is not None: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/dtd.pxi":289
+ /* "src/lxml/dtd.pxi":294
* else:
* raise DTDParseError, u"file must be a filename or file-like object"
* elif external_id is not None: # <<<<<<<<<<<<<<
__pyx_t_5 = (__pyx_t_4 != 0);
if (likely(__pyx_t_5)) {
- /* "src/lxml/dtd.pxi":290
+ /* "src/lxml/dtd.pxi":295
* raise DTDParseError, u"file must be a filename or file-like object"
* elif external_id is not None:
* with self._error_log: # <<<<<<<<<<<<<<
* self._c_dtd = xmlparser.xmlParseDTD(<const_xmlChar*>external_id, NULL)
*/
/*with:*/ {
- __pyx_t_6 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 290, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(20, 290, __pyx_L16_error)
+ __pyx_t_7 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(20, 295, __pyx_L16_error)
/*try:*/ {
{
__Pyx_PyThreadState_declare
__Pyx_XGOTREF(__pyx_t_8);
/*try:*/ {
- /* "src/lxml/dtd.pxi":291
+ /* "src/lxml/dtd.pxi":296
* elif external_id is not None:
* with self._error_log:
* orig_loader = _register_document_loader() # <<<<<<<<<<<<<<
*/
__pyx_v_orig_loader = __pyx_f_4lxml_5etree__register_document_loader();
- /* "src/lxml/dtd.pxi":292
+ /* "src/lxml/dtd.pxi":297
* with self._error_log:
* orig_loader = _register_document_loader()
* self._c_dtd = xmlparser.xmlParseDTD(<const_xmlChar*>external_id, NULL) # <<<<<<<<<<<<<<
* _reset_document_loader(orig_loader)
* else:
*/
- __pyx_t_12 = __Pyx_PyObject_AsUString(__pyx_v_external_id); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(20, 292, __pyx_L20_error)
+ __pyx_t_12 = __Pyx_PyObject_AsUString(__pyx_v_external_id); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(20, 297, __pyx_L20_error)
__pyx_v_self->_c_dtd = xmlParseDTD(((const xmlChar *)__pyx_t_12), NULL);
- /* "src/lxml/dtd.pxi":293
+ /* "src/lxml/dtd.pxi":298
* orig_loader = _register_document_loader()
* self._c_dtd = xmlparser.xmlParseDTD(<const_xmlChar*>external_id, NULL)
* _reset_document_loader(orig_loader) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__reset_document_loader(__pyx_v_orig_loader);
- /* "src/lxml/dtd.pxi":290
+ /* "src/lxml/dtd.pxi":295
* raise DTDParseError, u"file must be a filename or file-like object"
* elif external_id is not None:
* with self._error_log: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
/*except:*/ {
__Pyx_AddTraceback("lxml.etree.DTD.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(20, 290, __pyx_L22_except_error)
+ if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(20, 295, __pyx_L22_except_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 290, __pyx_L22_except_error)
+ __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 295, __pyx_L22_except_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_13, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- if (unlikely(!__pyx_t_14)) __PYX_ERR(20, 290, __pyx_L22_except_error)
+ if (unlikely(!__pyx_t_14)) __PYX_ERR(20, 295, __pyx_L22_except_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_14);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- if (__pyx_t_5 < 0) __PYX_ERR(20, 290, __pyx_L22_except_error)
+ if (__pyx_t_5 < 0) __PYX_ERR(20, 295, __pyx_L22_except_error)
__pyx_t_4 = ((!(__pyx_t_5 != 0)) != 0);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_3);
__pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
- __PYX_ERR(20, 290, __pyx_L22_except_error)
+ __PYX_ERR(20, 295, __pyx_L22_except_error)
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_6) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 290, __pyx_L1_error)
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_L29:;
}
- /* "src/lxml/dtd.pxi":289
+ /* "src/lxml/dtd.pxi":294
* else:
* raise DTDParseError, u"file must be a filename or file-like object"
* elif external_id is not None: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "src/lxml/dtd.pxi":295
+ /* "src/lxml/dtd.pxi":300
* _reset_document_loader(orig_loader)
* else:
* raise DTDParseError, u"either filename or external ID required" # <<<<<<<<<<<<<<
*/
/*else*/ {
__Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_kp_u_either_filename_or_external_ID_r, 0, 0);
- __PYX_ERR(20, 295, __pyx_L1_error)
+ __PYX_ERR(20, 300, __pyx_L1_error)
}
__pyx_L3:;
- /* "src/lxml/dtd.pxi":297
+ /* "src/lxml/dtd.pxi":302
* raise DTDParseError, u"either filename or external ID required"
*
* if self._c_dtd is NULL: # <<<<<<<<<<<<<<
__pyx_t_4 = ((__pyx_v_self->_c_dtd == NULL) != 0);
if (unlikely(__pyx_t_4)) {
- /* "src/lxml/dtd.pxi":299
+ /* "src/lxml/dtd.pxi":304
* if self._c_dtd is NULL:
* raise DTDParseError(
* self._error_log._buildExceptionMessage(u"error parsing DTD"), # <<<<<<<<<<<<<<
* self._error_log)
*
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_base._error_log), __pyx_kp_u_error_parsing_DTD); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 299, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_base._error_log), __pyx_kp_u_error_parsing_DTD); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 304, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- /* "src/lxml/dtd.pxi":298
+ /* "src/lxml/dtd.pxi":303
*
* if self._c_dtd is NULL:
* raise DTDParseError( # <<<<<<<<<<<<<<
* self._error_log._buildExceptionMessage(u"error parsing DTD"),
* self._error_log)
*/
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 298, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 303, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
__Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base._error_log));
PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->__pyx_base._error_log));
__pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 298, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 303, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(20, 298, __pyx_L1_error)
+ __PYX_ERR(20, 303, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":297
+ /* "src/lxml/dtd.pxi":302
* raise DTDParseError, u"either filename or external ID required"
*
* if self._c_dtd is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":274
+ /* "src/lxml/dtd.pxi":279
* """
* cdef tree.xmlDtd* _c_dtd
* def __init__(self, file=None, *, external_id=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":303
+/* "src/lxml/dtd.pxi":308
*
* @property
* def name(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__get__", 0);
- /* "src/lxml/dtd.pxi":304
+ /* "src/lxml/dtd.pxi":309
* @property
* def name(self):
* if self._c_dtd is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_self->_c_dtd == NULL) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":305
+ /* "src/lxml/dtd.pxi":310
* def name(self):
* if self._c_dtd is NULL:
* return None # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":304
+ /* "src/lxml/dtd.pxi":309
* @property
* def name(self):
* if self._c_dtd is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":306
+ /* "src/lxml/dtd.pxi":311
* if self._c_dtd is NULL:
* return None
* return funicodeOrNone(self._c_dtd.name) # <<<<<<<<<<<<<<
* @property
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_dtd->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 306, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_dtd->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 311, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":303
+ /* "src/lxml/dtd.pxi":308
*
* @property
* def name(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":309
+/* "src/lxml/dtd.pxi":314
*
* @property
* def external_id(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__get__", 0);
- /* "src/lxml/dtd.pxi":310
+ /* "src/lxml/dtd.pxi":315
* @property
* def external_id(self):
* if self._c_dtd is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_self->_c_dtd == NULL) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":311
+ /* "src/lxml/dtd.pxi":316
* def external_id(self):
* if self._c_dtd is NULL:
* return None # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":310
+ /* "src/lxml/dtd.pxi":315
* @property
* def external_id(self):
* if self._c_dtd is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":312
+ /* "src/lxml/dtd.pxi":317
* if self._c_dtd is NULL:
* return None
* return funicodeOrNone(self._c_dtd.ExternalID) # <<<<<<<<<<<<<<
* @property
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_dtd->ExternalID); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 312, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_dtd->ExternalID); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 317, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":309
+ /* "src/lxml/dtd.pxi":314
*
* @property
* def external_id(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":315
+/* "src/lxml/dtd.pxi":320
*
* @property
* def system_url(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__get__", 0);
- /* "src/lxml/dtd.pxi":316
+ /* "src/lxml/dtd.pxi":321
* @property
* def system_url(self):
* if self._c_dtd is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_self->_c_dtd == NULL) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":317
+ /* "src/lxml/dtd.pxi":322
* def system_url(self):
* if self._c_dtd is NULL:
* return None # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":316
+ /* "src/lxml/dtd.pxi":321
* @property
* def system_url(self):
* if self._c_dtd is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":318
+ /* "src/lxml/dtd.pxi":323
* if self._c_dtd is NULL:
* return None
* return funicodeOrNone(self._c_dtd.SystemID) # <<<<<<<<<<<<<<
* def iterelements(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_dtd->SystemID); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 318, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_dtd->SystemID); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 323, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":315
+ /* "src/lxml/dtd.pxi":320
*
* @property
* def system_url(self): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/dtd.pxi":320
+/* "src/lxml/dtd.pxi":325
* return funicodeOrNone(self._c_dtd.SystemID)
*
* def iterelements(self): # <<<<<<<<<<<<<<
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_15_iterelements *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(20, 320, __pyx_L1_error)
+ __PYX_ERR(20, 325, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
{
- __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_3DTD_4generator15, __pyx_codeobj__105, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterelements, __pyx_n_s_DTD_iterelements, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 320, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_3DTD_4generator15, __pyx_codeobj__105, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterelements, __pyx_n_s_DTD_iterelements, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 325, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(20, 320, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(20, 325, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":321
+ /* "src/lxml/dtd.pxi":326
*
* def iterelements(self):
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL # <<<<<<<<<<<<<<
}
__pyx_cur_scope->__pyx_v_c_node = __pyx_t_1;
- /* "src/lxml/dtd.pxi":322
+ /* "src/lxml/dtd.pxi":327
* def iterelements(self):
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_cur_scope->__pyx_v_c_node != NULL) != 0);
if (!__pyx_t_2) break;
- /* "src/lxml/dtd.pxi":323
+ /* "src/lxml/dtd.pxi":328
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
* while c_node is not NULL:
* if c_node.type == tree.XML_ELEMENT_DECL: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_cur_scope->__pyx_v_c_node->type == XML_ELEMENT_DECL) != 0);
if (__pyx_t_2) {
- /* "src/lxml/dtd.pxi":324
+ /* "src/lxml/dtd.pxi":329
* while c_node is not NULL:
* if c_node.type == tree.XML_ELEMENT_DECL:
* node = _DTDElementDecl() # <<<<<<<<<<<<<<
* node._dtd = self
* node._c_node = <tree.xmlElement*>c_node
*/
- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__DTDElementDecl)); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 324, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__DTDElementDecl)); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_node));
__Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_node, ((struct __pyx_obj_4lxml_5etree__DTDElementDecl *)__pyx_t_3));
__Pyx_GIVEREF(__pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/dtd.pxi":325
+ /* "src/lxml/dtd.pxi":330
* if c_node.type == tree.XML_ELEMENT_DECL:
* node = _DTDElementDecl()
* node._dtd = self # <<<<<<<<<<<<<<
__Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_node->_dtd));
__pyx_cur_scope->__pyx_v_node->_dtd = __pyx_cur_scope->__pyx_v_self;
- /* "src/lxml/dtd.pxi":326
+ /* "src/lxml/dtd.pxi":331
* node = _DTDElementDecl()
* node._dtd = self
* node._c_node = <tree.xmlElement*>c_node # <<<<<<<<<<<<<<
*/
__pyx_cur_scope->__pyx_v_node->_c_node = ((xmlElement *)__pyx_cur_scope->__pyx_v_c_node);
- /* "src/lxml/dtd.pxi":327
+ /* "src/lxml/dtd.pxi":332
* node._dtd = self
* node._c_node = <tree.xmlElement*>c_node
* yield node # <<<<<<<<<<<<<<
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L7_resume_from_yield:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(20, 327, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(20, 332, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":323
+ /* "src/lxml/dtd.pxi":328
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
* while c_node is not NULL:
* if c_node.type == tree.XML_ELEMENT_DECL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":328
+ /* "src/lxml/dtd.pxi":333
* node._c_node = <tree.xmlElement*>c_node
* yield node
* c_node = c_node.next # <<<<<<<<<<<<<<
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/dtd.pxi":320
+ /* "src/lxml/dtd.pxi":325
* return funicodeOrNone(self._c_dtd.SystemID)
*
* def iterelements(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":330
+/* "src/lxml/dtd.pxi":335
* c_node = c_node.next
*
* def elements(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("elements", 0);
- /* "src/lxml/dtd.pxi":331
+ /* "src/lxml/dtd.pxi":336
*
* def elements(self):
* return list(self.iterelements()) # <<<<<<<<<<<<<<
* def iterentities(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iterelements); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 331, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iterelements); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 336, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 331, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 336, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 331, __pyx_L1_error)
+ __pyx_t_2 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 336, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":330
+ /* "src/lxml/dtd.pxi":335
* c_node = c_node.next
*
* def elements(self): # <<<<<<<<<<<<<<
}
static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
-/* "src/lxml/dtd.pxi":333
+/* "src/lxml/dtd.pxi":338
* return list(self.iterelements())
*
* def iterentities(self): # <<<<<<<<<<<<<<
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_16_iterentities *)Py_None);
__Pyx_INCREF(Py_None);
- __PYX_ERR(20, 333, __pyx_L1_error)
+ __PYX_ERR(20, 338, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
{
- __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_3DTD_9generator16, __pyx_codeobj__106, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterentities, __pyx_n_s_DTD_iterentities, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 333, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_3DTD_9generator16, __pyx_codeobj__106, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterentities, __pyx_n_s_DTD_iterentities, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 338, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
return NULL;
}
__pyx_L3_first_run:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(20, 333, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(20, 338, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":334
+ /* "src/lxml/dtd.pxi":339
*
* def iterentities(self):
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL # <<<<<<<<<<<<<<
}
__pyx_cur_scope->__pyx_v_c_node = __pyx_t_1;
- /* "src/lxml/dtd.pxi":335
+ /* "src/lxml/dtd.pxi":340
* def iterentities(self):
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_cur_scope->__pyx_v_c_node != NULL) != 0);
if (!__pyx_t_2) break;
- /* "src/lxml/dtd.pxi":336
+ /* "src/lxml/dtd.pxi":341
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
* while c_node is not NULL:
* if c_node.type == tree.XML_ENTITY_DECL: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_cur_scope->__pyx_v_c_node->type == XML_ENTITY_DECL) != 0);
if (__pyx_t_2) {
- /* "src/lxml/dtd.pxi":337
+ /* "src/lxml/dtd.pxi":342
* while c_node is not NULL:
* if c_node.type == tree.XML_ENTITY_DECL:
* node = _DTDEntityDecl() # <<<<<<<<<<<<<<
* node._dtd = self
* node._c_node = <tree.xmlEntity*>c_node
*/
- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__DTDEntityDecl)); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 337, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__DTDEntityDecl)); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 342, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_node));
__Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_node, ((struct __pyx_obj_4lxml_5etree__DTDEntityDecl *)__pyx_t_3));
__Pyx_GIVEREF(__pyx_t_3);
__pyx_t_3 = 0;
- /* "src/lxml/dtd.pxi":338
+ /* "src/lxml/dtd.pxi":343
* if c_node.type == tree.XML_ENTITY_DECL:
* node = _DTDEntityDecl()
* node._dtd = self # <<<<<<<<<<<<<<
__Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_node->_dtd));
__pyx_cur_scope->__pyx_v_node->_dtd = __pyx_cur_scope->__pyx_v_self;
- /* "src/lxml/dtd.pxi":339
+ /* "src/lxml/dtd.pxi":344
* node = _DTDEntityDecl()
* node._dtd = self
* node._c_node = <tree.xmlEntity*>c_node # <<<<<<<<<<<<<<
*/
__pyx_cur_scope->__pyx_v_node->_c_node = ((xmlEntity *)__pyx_cur_scope->__pyx_v_c_node);
- /* "src/lxml/dtd.pxi":340
+ /* "src/lxml/dtd.pxi":345
* node._dtd = self
* node._c_node = <tree.xmlEntity*>c_node
* yield node # <<<<<<<<<<<<<<
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L7_resume_from_yield:;
- if (unlikely(!__pyx_sent_value)) __PYX_ERR(20, 340, __pyx_L1_error)
+ if (unlikely(!__pyx_sent_value)) __PYX_ERR(20, 345, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":336
+ /* "src/lxml/dtd.pxi":341
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
* while c_node is not NULL:
* if c_node.type == tree.XML_ENTITY_DECL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":341
+ /* "src/lxml/dtd.pxi":346
* node._c_node = <tree.xmlEntity*>c_node
* yield node
* c_node = c_node.next # <<<<<<<<<<<<<<
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
- /* "src/lxml/dtd.pxi":333
+ /* "src/lxml/dtd.pxi":338
* return list(self.iterelements())
*
* def iterentities(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":343
+/* "src/lxml/dtd.pxi":348
* c_node = c_node.next
*
* def entities(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("entities", 0);
- /* "src/lxml/dtd.pxi":344
+ /* "src/lxml/dtd.pxi":349
*
* def entities(self):
* return list(self.iterentities()) # <<<<<<<<<<<<<<
* def __dealloc__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iterentities); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 344, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iterentities); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 344, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 344, __pyx_L1_error)
+ __pyx_t_2 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":343
+ /* "src/lxml/dtd.pxi":348
* c_node = c_node.next
*
* def entities(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":346
+/* "src/lxml/dtd.pxi":351
* return list(self.iterentities())
*
* def __dealloc__(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__dealloc__", 0);
- /* "src/lxml/dtd.pxi":347
+ /* "src/lxml/dtd.pxi":352
*
* def __dealloc__(self):
* tree.xmlFreeDtd(self._c_dtd) # <<<<<<<<<<<<<<
*/
xmlFreeDtd(__pyx_v_self->_c_dtd);
- /* "src/lxml/dtd.pxi":346
+ /* "src/lxml/dtd.pxi":351
* return list(self.iterentities())
*
* def __dealloc__(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyFinishContext();
}
-/* "src/lxml/dtd.pxi":349
+/* "src/lxml/dtd.pxi":354
* tree.xmlFreeDtd(self._c_dtd)
*
* def __call__(self, etree): # <<<<<<<<<<<<<<
else goto __pyx_L5_argtuple_error;
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(20, 349, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(20, 354, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(20, 349, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(20, 354, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.DTD.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__call__", 0);
- /* "src/lxml/dtd.pxi":360
+ /* "src/lxml/dtd.pxi":365
* cdef xmlDoc* c_doc
* cdef dtdvalid.xmlValidCtxt* valid_ctxt
* cdef int ret = -1 # <<<<<<<<<<<<<<
*/
__pyx_v_ret = -1;
- /* "src/lxml/dtd.pxi":362
+ /* "src/lxml/dtd.pxi":367
* cdef int ret = -1
*
* assert self._c_dtd is not NULL, "DTD not initialised" # <<<<<<<<<<<<<<
if (unlikely(!Py_OptimizeFlag)) {
if (unlikely(!((__pyx_v_self->_c_dtd != NULL) != 0))) {
PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_DTD_not_initialised);
- __PYX_ERR(20, 362, __pyx_L1_error)
+ __PYX_ERR(20, 367, __pyx_L1_error)
}
}
#endif
- /* "src/lxml/dtd.pxi":363
+ /* "src/lxml/dtd.pxi":368
*
* assert self._c_dtd is not NULL, "DTD not initialised"
* doc = _documentOrRaise(etree) # <<<<<<<<<<<<<<
* root_node = _rootNodeOrRaise(etree)
*
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 363, __pyx_L1_error)
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 368, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/dtd.pxi":364
+ /* "src/lxml/dtd.pxi":369
* assert self._c_dtd is not NULL, "DTD not initialised"
* doc = _documentOrRaise(etree)
* root_node = _rootNodeOrRaise(etree) # <<<<<<<<<<<<<<
*
* valid_ctxt = dtdvalid.xmlNewValidCtxt()
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 364, __pyx_L1_error)
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 369, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/dtd.pxi":366
+ /* "src/lxml/dtd.pxi":371
* root_node = _rootNodeOrRaise(etree)
*
* valid_ctxt = dtdvalid.xmlNewValidCtxt() # <<<<<<<<<<<<<<
*/
__pyx_v_valid_ctxt = xmlNewValidCtxt();
- /* "src/lxml/dtd.pxi":367
+ /* "src/lxml/dtd.pxi":372
*
* valid_ctxt = dtdvalid.xmlNewValidCtxt()
* if valid_ctxt is NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_valid_ctxt == NULL) != 0);
if (unlikely(__pyx_t_2)) {
- /* "src/lxml/dtd.pxi":368
+ /* "src/lxml/dtd.pxi":373
* valid_ctxt = dtdvalid.xmlNewValidCtxt()
* if valid_ctxt is NULL:
* raise DTDError(u"Failed to create validation context") # <<<<<<<<<<<<<<
*
* # work around error reporting bug in libxml2 <= 2.9.1 (and later?)
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDError), __pyx_tuple__107, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 368, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDError), __pyx_tuple__107, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 373, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(20, 368, __pyx_L1_error)
+ __PYX_ERR(20, 373, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":367
+ /* "src/lxml/dtd.pxi":372
*
* valid_ctxt = dtdvalid.xmlNewValidCtxt()
* if valid_ctxt is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":372
+ /* "src/lxml/dtd.pxi":377
* # work around error reporting bug in libxml2 <= 2.9.1 (and later?)
* # https://bugzilla.gnome.org/show_bug.cgi?id=724903
* valid_ctxt.error = <dtdvalid.xmlValidityErrorFunc>_nullGenericErrorFunc # <<<<<<<<<<<<<<
*/
__pyx_v_valid_ctxt->error = ((xmlValidityErrorFunc)__pyx_f_4lxml_5etree__nullGenericErrorFunc);
- /* "src/lxml/dtd.pxi":373
+ /* "src/lxml/dtd.pxi":378
* # https://bugzilla.gnome.org/show_bug.cgi?id=724903
* valid_ctxt.error = <dtdvalid.xmlValidityErrorFunc>_nullGenericErrorFunc
* valid_ctxt.userData = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_valid_ctxt->userData = NULL;
- /* "src/lxml/dtd.pxi":375
+ /* "src/lxml/dtd.pxi":380
* valid_ctxt.userData = NULL
*
* try: # <<<<<<<<<<<<<<
*/
/*try:*/ {
- /* "src/lxml/dtd.pxi":376
+ /* "src/lxml/dtd.pxi":381
*
* try:
* with self._error_log: # <<<<<<<<<<<<<<
* ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
*/
/*with:*/ {
- __pyx_t_3 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 376, __pyx_L5_error)
+ __pyx_t_3 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 381, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(20, 376, __pyx_L7_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(20, 381, __pyx_L7_error)
/*try:*/ {
{
__Pyx_PyThreadState_declare
__Pyx_XGOTREF(__pyx_t_7);
/*try:*/ {
- /* "src/lxml/dtd.pxi":377
+ /* "src/lxml/dtd.pxi":382
* try:
* with self._error_log:
* c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node) # <<<<<<<<<<<<<<
* ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
* _destroyFakeDoc(doc._c_doc, c_doc)
*/
- __pyx_t_8 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_8 == ((xmlDoc *)NULL))) __PYX_ERR(20, 377, __pyx_L11_error)
+ __pyx_t_8 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_8 == ((xmlDoc *)NULL))) __PYX_ERR(20, 382, __pyx_L11_error)
__pyx_v_c_doc = __pyx_t_8;
- /* "src/lxml/dtd.pxi":378
+ /* "src/lxml/dtd.pxi":383
* with self._error_log:
* c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
* ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd) # <<<<<<<<<<<<<<
*/
__pyx_v_ret = xmlValidateDtd(__pyx_v_valid_ctxt, __pyx_v_c_doc, __pyx_v_self->_c_dtd);
- /* "src/lxml/dtd.pxi":379
+ /* "src/lxml/dtd.pxi":384
* c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
* ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
* _destroyFakeDoc(doc._c_doc, c_doc) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
- /* "src/lxml/dtd.pxi":376
+ /* "src/lxml/dtd.pxi":381
*
* try:
* with self._error_log: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/*except:*/ {
__Pyx_AddTraceback("lxml.etree.DTD.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(20, 376, __pyx_L13_except_error)
+ if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(20, 381, __pyx_L13_except_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_t_9);
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 376, __pyx_L13_except_error)
+ __pyx_t_11 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 381, __pyx_L13_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- if (unlikely(!__pyx_t_12)) __PYX_ERR(20, 376, __pyx_L13_except_error)
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(20, 381, __pyx_L13_except_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- if (__pyx_t_2 < 0) __PYX_ERR(20, 376, __pyx_L13_except_error)
+ if (__pyx_t_2 < 0) __PYX_ERR(20, 381, __pyx_L13_except_error)
__pyx_t_13 = ((!(__pyx_t_2 != 0)) != 0);
if (__pyx_t_13) {
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_9, __pyx_t_10);
__pyx_t_1 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
- __PYX_ERR(20, 376, __pyx_L13_except_error)
+ __PYX_ERR(20, 381, __pyx_L13_except_error)
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (__pyx_t_3) {
__pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__35, NULL);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 376, __pyx_L5_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 381, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
}
}
- /* "src/lxml/dtd.pxi":381
+ /* "src/lxml/dtd.pxi":386
* _destroyFakeDoc(doc._c_doc, c_doc)
* finally:
* dtdvalid.xmlFreeValidCtxt(valid_ctxt) # <<<<<<<<<<<<<<
__pyx_L6:;
}
- /* "src/lxml/dtd.pxi":383
+ /* "src/lxml/dtd.pxi":388
* dtdvalid.xmlFreeValidCtxt(valid_ctxt)
*
* if ret == -1: # <<<<<<<<<<<<<<
__pyx_t_13 = ((__pyx_v_ret == -1L) != 0);
if (unlikely(__pyx_t_13)) {
- /* "src/lxml/dtd.pxi":384
+ /* "src/lxml/dtd.pxi":389
*
* if ret == -1:
* raise DTDValidateError(u"Internal error in DTD validation", # <<<<<<<<<<<<<<
* self._error_log)
* return ret == 1
*/
- __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 384, __pyx_L1_error)
+ __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 389, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_INCREF(__pyx_kp_u_Internal_error_in_DTD_validation);
__Pyx_GIVEREF(__pyx_kp_u_Internal_error_in_DTD_validation);
__Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base._error_log));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base._error_log));
PyTuple_SET_ITEM(__pyx_t_10, 1, ((PyObject *)__pyx_v_self->__pyx_base._error_log));
- __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDValidateError), __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 384, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDValidateError), __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 389, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_Raise(__pyx_t_9, 0, 0, 0);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __PYX_ERR(20, 384, __pyx_L1_error)
+ __PYX_ERR(20, 389, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":383
+ /* "src/lxml/dtd.pxi":388
* dtdvalid.xmlFreeValidCtxt(valid_ctxt)
*
* if ret == -1: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":386
+ /* "src/lxml/dtd.pxi":391
* raise DTDValidateError(u"Internal error in DTD validation",
* self._error_log)
* return ret == 1 # <<<<<<<<<<<<<<
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = __Pyx_PyBool_FromLong((__pyx_v_ret == 1)); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 386, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyBool_FromLong((__pyx_v_ret == 1)); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 391, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_r = __pyx_t_9;
__pyx_t_9 = 0;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":349
+ /* "src/lxml/dtd.pxi":354
* tree.xmlFreeDtd(self._c_dtd)
*
* def __call__(self, etree): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":389
+/* "src/lxml/dtd.pxi":394
*
*
* cdef tree.xmlDtd* _parseDtdFromFilelike(file) except NULL: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_parseDtdFromFilelike", 0);
- /* "src/lxml/dtd.pxi":393
+ /* "src/lxml/dtd.pxi":398
* cdef _FileReaderContext dtd_parser
* cdef _ErrorLog error_log
* cdef tree.xmlDtd* c_dtd = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_c_dtd = NULL;
- /* "src/lxml/dtd.pxi":394
+ /* "src/lxml/dtd.pxi":399
* cdef _ErrorLog error_log
* cdef tree.xmlDtd* c_dtd = NULL
* exc_context = _ExceptionContext() # <<<<<<<<<<<<<<
* dtd_parser = _FileReaderContext(file, exc_context, None)
* error_log = _ErrorLog()
*/
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ExceptionContext)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 394, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ExceptionContext)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 399, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/dtd.pxi":395
+ /* "src/lxml/dtd.pxi":400
* cdef tree.xmlDtd* c_dtd = NULL
* exc_context = _ExceptionContext()
* dtd_parser = _FileReaderContext(file, exc_context, None) # <<<<<<<<<<<<<<
* error_log = _ErrorLog()
*
*/
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 395, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 400, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_file);
__Pyx_GIVEREF(__pyx_v_file);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
- __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FileReaderContext), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 395, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FileReaderContext), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 400, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_dtd_parser = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "src/lxml/dtd.pxi":396
+ /* "src/lxml/dtd.pxi":401
* exc_context = _ExceptionContext()
* dtd_parser = _FileReaderContext(file, exc_context, None)
* error_log = _ErrorLog() # <<<<<<<<<<<<<<
*
* with error_log:
*/
- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 396, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "src/lxml/dtd.pxi":398
+ /* "src/lxml/dtd.pxi":403
* error_log = _ErrorLog()
*
* with error_log: # <<<<<<<<<<<<<<
*
*/
/*with:*/ {
- __pyx_t_3 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 398, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 403, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_error_log); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(20, 398, __pyx_L3_error)
+ __pyx_t_4 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_error_log); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(20, 403, __pyx_L3_error)
/*try:*/ {
{
(void)__pyx_t_5; (void)__pyx_t_6; (void)__pyx_t_7; /* mark used */
/*try:*/ {
- /* "src/lxml/dtd.pxi":399
+ /* "src/lxml/dtd.pxi":404
*
* with error_log:
* c_dtd = dtd_parser._readDtd() # <<<<<<<<<<<<<<
*/
__pyx_v_c_dtd = __pyx_f_4lxml_5etree_18_FileReaderContext__readDtd(__pyx_v_dtd_parser);
- /* "src/lxml/dtd.pxi":398
+ /* "src/lxml/dtd.pxi":403
* error_log = _ErrorLog()
*
* with error_log: # <<<<<<<<<<<<<<
if (__pyx_t_3) {
__pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__35, NULL);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 398, __pyx_L1_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 403, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_L13:;
}
- /* "src/lxml/dtd.pxi":401
+ /* "src/lxml/dtd.pxi":406
* c_dtd = dtd_parser._readDtd()
*
* exc_context._raise_if_stored() # <<<<<<<<<<<<<<
* if c_dtd is NULL:
* raise DTDParseError(u"error parsing DTD", error_log)
*/
- __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_exc_context); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(20, 401, __pyx_L1_error)
+ __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_exc_context); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(20, 406, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":402
+ /* "src/lxml/dtd.pxi":407
*
* exc_context._raise_if_stored()
* if c_dtd is NULL: # <<<<<<<<<<<<<<
__pyx_t_8 = ((__pyx_v_c_dtd == NULL) != 0);
if (unlikely(__pyx_t_8)) {
- /* "src/lxml/dtd.pxi":403
+ /* "src/lxml/dtd.pxi":408
* exc_context._raise_if_stored()
* if c_dtd is NULL:
* raise DTDParseError(u"error parsing DTD", error_log) # <<<<<<<<<<<<<<
* return c_dtd
*
*/
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 403, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 408, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_kp_u_error_parsing_DTD);
__Pyx_GIVEREF(__pyx_kp_u_error_parsing_DTD);
__Pyx_INCREF(((PyObject *)__pyx_v_error_log));
__Pyx_GIVEREF(((PyObject *)__pyx_v_error_log));
PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_error_log));
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 403, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 408, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(20, 403, __pyx_L1_error)
+ __PYX_ERR(20, 408, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":402
+ /* "src/lxml/dtd.pxi":407
*
* exc_context._raise_if_stored()
* if c_dtd is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":404
+ /* "src/lxml/dtd.pxi":409
* if c_dtd is NULL:
* raise DTDParseError(u"error parsing DTD", error_log)
* return c_dtd # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_c_dtd;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":389
+ /* "src/lxml/dtd.pxi":394
*
*
* cdef tree.xmlDtd* _parseDtdFromFilelike(file) except NULL: # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":406
+/* "src/lxml/dtd.pxi":411
* return c_dtd
*
* cdef DTD _dtdFactory(tree.xmlDtd* c_dtd): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_dtdFactory", 0);
- /* "src/lxml/dtd.pxi":409
+ /* "src/lxml/dtd.pxi":414
* # do not run through DTD.__init__()!
* cdef DTD dtd
* if c_dtd is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_dtd == NULL) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":410
+ /* "src/lxml/dtd.pxi":415
* cdef DTD dtd
* if c_dtd is NULL:
* return None # <<<<<<<<<<<<<<
__pyx_r = ((struct __pyx_obj_4lxml_5etree_DTD *)Py_None); __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":409
+ /* "src/lxml/dtd.pxi":414
* # do not run through DTD.__init__()!
* cdef DTD dtd
* if c_dtd is NULL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":411
+ /* "src/lxml/dtd.pxi":416
* if c_dtd is NULL:
* return None
* dtd = DTD.__new__(DTD) # <<<<<<<<<<<<<<
* dtd._c_dtd = _copyDtd(c_dtd)
* _Validator.__init__(dtd)
*/
- __pyx_t_2 = ((PyObject *)__pyx_tp_new_4lxml_5etree_DTD(((PyTypeObject *)__pyx_ptype_4lxml_5etree_DTD), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 411, __pyx_L1_error)
+ __pyx_t_2 = ((PyObject *)__pyx_tp_new_4lxml_5etree_DTD(((PyTypeObject *)__pyx_ptype_4lxml_5etree_DTD), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 416, __pyx_L1_error)
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__pyx_v_dtd = ((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "src/lxml/dtd.pxi":412
+ /* "src/lxml/dtd.pxi":417
* return None
* dtd = DTD.__new__(DTD)
* dtd._c_dtd = _copyDtd(c_dtd) # <<<<<<<<<<<<<<
* _Validator.__init__(dtd)
* return dtd
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__copyDtd(__pyx_v_c_dtd); if (unlikely(__pyx_t_3 == ((xmlDtd *)NULL))) __PYX_ERR(20, 412, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_5etree__copyDtd(__pyx_v_c_dtd); if (unlikely(__pyx_t_3 == ((xmlDtd *)NULL))) __PYX_ERR(20, 417, __pyx_L1_error)
__pyx_v_dtd->_c_dtd = __pyx_t_3;
- /* "src/lxml/dtd.pxi":413
+ /* "src/lxml/dtd.pxi":418
* dtd = DTD.__new__(DTD)
* dtd._c_dtd = _copyDtd(c_dtd)
* _Validator.__init__(dtd) # <<<<<<<<<<<<<<
* return dtd
*
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__Validator), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 413, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__Validator), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
}
__pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, ((PyObject *)__pyx_v_dtd)) : __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_dtd));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 413, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/dtd.pxi":414
+ /* "src/lxml/dtd.pxi":419
* dtd._c_dtd = _copyDtd(c_dtd)
* _Validator.__init__(dtd)
* return dtd # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_dtd;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":406
+ /* "src/lxml/dtd.pxi":411
* return c_dtd
*
* cdef DTD _dtdFactory(tree.xmlDtd* c_dtd): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":417
+/* "src/lxml/dtd.pxi":422
*
*
* cdef tree.xmlDtd* _copyDtd(tree.xmlDtd* c_orig_dtd) except NULL: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_copyDtd", 0);
- /* "src/lxml/dtd.pxi":422
+ /* "src/lxml/dtd.pxi":427
* links when copying DTDs, so we have to rebuild them here.
* """
* c_dtd = tree.xmlCopyDtd(c_orig_dtd) # <<<<<<<<<<<<<<
*/
__pyx_v_c_dtd = xmlCopyDtd(__pyx_v_c_orig_dtd);
- /* "src/lxml/dtd.pxi":423
+ /* "src/lxml/dtd.pxi":428
* """
* c_dtd = tree.xmlCopyDtd(c_orig_dtd)
* if not c_dtd: # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_v_c_dtd != 0)) != 0);
if (unlikely(__pyx_t_1)) {
- /* "src/lxml/dtd.pxi":424
+ /* "src/lxml/dtd.pxi":429
* c_dtd = tree.xmlCopyDtd(c_orig_dtd)
* if not c_dtd:
* raise MemoryError # <<<<<<<<<<<<<<
* cdef tree.xmlNode* c_node = c_dtd.children
* while c_node:
*/
- PyErr_NoMemory(); __PYX_ERR(20, 424, __pyx_L1_error)
+ PyErr_NoMemory(); __PYX_ERR(20, 429, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":423
+ /* "src/lxml/dtd.pxi":428
* """
* c_dtd = tree.xmlCopyDtd(c_orig_dtd)
* if not c_dtd: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":425
+ /* "src/lxml/dtd.pxi":430
* if not c_dtd:
* raise MemoryError
* cdef tree.xmlNode* c_node = c_dtd.children # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_c_dtd->children;
__pyx_v_c_node = __pyx_t_2;
- /* "src/lxml/dtd.pxi":426
+ /* "src/lxml/dtd.pxi":431
* raise MemoryError
* cdef tree.xmlNode* c_node = c_dtd.children
* while c_node: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node != 0);
if (!__pyx_t_1) break;
- /* "src/lxml/dtd.pxi":427
+ /* "src/lxml/dtd.pxi":432
* cdef tree.xmlNode* c_node = c_dtd.children
* while c_node:
* if c_node.type == tree.XML_ATTRIBUTE_DECL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_node->type == XML_ATTRIBUTE_DECL) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":428
+ /* "src/lxml/dtd.pxi":433
* while c_node:
* if c_node.type == tree.XML_ATTRIBUTE_DECL:
* _linkDtdAttribute(c_dtd, <tree.xmlAttribute*>c_node) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__linkDtdAttribute(__pyx_v_c_dtd, ((xmlAttribute *)__pyx_v_c_node));
- /* "src/lxml/dtd.pxi":427
+ /* "src/lxml/dtd.pxi":432
* cdef tree.xmlNode* c_node = c_dtd.children
* while c_node:
* if c_node.type == tree.XML_ATTRIBUTE_DECL: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":429
+ /* "src/lxml/dtd.pxi":434
* if c_node.type == tree.XML_ATTRIBUTE_DECL:
* _linkDtdAttribute(c_dtd, <tree.xmlAttribute*>c_node)
* c_node = c_node.next # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_t_2;
}
- /* "src/lxml/dtd.pxi":430
+ /* "src/lxml/dtd.pxi":435
* _linkDtdAttribute(c_dtd, <tree.xmlAttribute*>c_node)
* c_node = c_node.next
* return c_dtd # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_c_dtd;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":417
+ /* "src/lxml/dtd.pxi":422
*
*
* cdef tree.xmlDtd* _copyDtd(tree.xmlDtd* c_orig_dtd) except NULL: # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "src/lxml/dtd.pxi":433
+/* "src/lxml/dtd.pxi":438
*
*
* cdef void _linkDtdAttribute(tree.xmlDtd* c_dtd, tree.xmlAttribute* c_attr): # <<<<<<<<<<<<<<
int __pyx_t_3;
__Pyx_RefNannySetupContext("_linkDtdAttribute", 0);
- /* "src/lxml/dtd.pxi":438
+ /* "src/lxml/dtd.pxi":443
* element declaration.
* """
* c_elem = dtdvalid.xmlGetDtdElementDesc(c_dtd, c_attr.elem) # <<<<<<<<<<<<<<
*/
__pyx_v_c_elem = xmlGetDtdElementDesc(__pyx_v_c_dtd, __pyx_v_c_attr->elem);
- /* "src/lxml/dtd.pxi":439
+ /* "src/lxml/dtd.pxi":444
* """
* c_elem = dtdvalid.xmlGetDtdElementDesc(c_dtd, c_attr.elem)
* if not c_elem: # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_v_c_elem != 0)) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":441
+ /* "src/lxml/dtd.pxi":446
* if not c_elem:
* # no such element? something is wrong with the DTD ...
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":439
+ /* "src/lxml/dtd.pxi":444
* """
* c_elem = dtdvalid.xmlGetDtdElementDesc(c_dtd, c_attr.elem)
* if not c_elem: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":442
+ /* "src/lxml/dtd.pxi":447
* # no such element? something is wrong with the DTD ...
* return
* c_pos = c_elem.attributes # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_c_elem->attributes;
__pyx_v_c_pos = __pyx_t_2;
- /* "src/lxml/dtd.pxi":443
+ /* "src/lxml/dtd.pxi":448
* return
* c_pos = c_elem.attributes
* if not c_pos: # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_v_c_pos != 0)) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":444
+ /* "src/lxml/dtd.pxi":449
* c_pos = c_elem.attributes
* if not c_pos:
* c_elem.attributes = c_attr # <<<<<<<<<<<<<<
*/
__pyx_v_c_elem->attributes = __pyx_v_c_attr;
- /* "src/lxml/dtd.pxi":445
+ /* "src/lxml/dtd.pxi":450
* if not c_pos:
* c_elem.attributes = c_attr
* c_attr.nexth = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_c_attr->nexth = NULL;
- /* "src/lxml/dtd.pxi":446
+ /* "src/lxml/dtd.pxi":451
* c_elem.attributes = c_attr
* c_attr.nexth = NULL
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":443
+ /* "src/lxml/dtd.pxi":448
* return
* c_pos = c_elem.attributes
* if not c_pos: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":449
+ /* "src/lxml/dtd.pxi":454
* # libxml2 keeps namespace declarations first, and we need to make
* # sure we don't re-insert attributes that are already there
* if _isDtdNsDecl(c_attr): # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_f_4lxml_5etree__isDtdNsDecl(__pyx_v_c_attr) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":450
+ /* "src/lxml/dtd.pxi":455
* # sure we don't re-insert attributes that are already there
* if _isDtdNsDecl(c_attr):
* if not _isDtdNsDecl(c_pos): # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_f_4lxml_5etree__isDtdNsDecl(__pyx_v_c_pos) != 0)) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":451
+ /* "src/lxml/dtd.pxi":456
* if _isDtdNsDecl(c_attr):
* if not _isDtdNsDecl(c_pos):
* c_elem.attributes = c_attr # <<<<<<<<<<<<<<
*/
__pyx_v_c_elem->attributes = __pyx_v_c_attr;
- /* "src/lxml/dtd.pxi":452
+ /* "src/lxml/dtd.pxi":457
* if not _isDtdNsDecl(c_pos):
* c_elem.attributes = c_attr
* c_attr.nexth = c_pos # <<<<<<<<<<<<<<
*/
__pyx_v_c_attr->nexth = __pyx_v_c_pos;
- /* "src/lxml/dtd.pxi":453
+ /* "src/lxml/dtd.pxi":458
* c_elem.attributes = c_attr
* c_attr.nexth = c_pos
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":450
+ /* "src/lxml/dtd.pxi":455
* # sure we don't re-insert attributes that are already there
* if _isDtdNsDecl(c_attr):
* if not _isDtdNsDecl(c_pos): # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":454
+ /* "src/lxml/dtd.pxi":459
* c_attr.nexth = c_pos
* return
* while c_pos != c_attr and c_pos.nexth and _isDtdNsDecl(c_pos.nexth): # <<<<<<<<<<<<<<
__pyx_L9_bool_binop_done:;
if (!__pyx_t_1) break;
- /* "src/lxml/dtd.pxi":455
+ /* "src/lxml/dtd.pxi":460
* return
* while c_pos != c_attr and c_pos.nexth and _isDtdNsDecl(c_pos.nexth):
* c_pos = c_pos.nexth # <<<<<<<<<<<<<<
__pyx_v_c_pos = __pyx_t_2;
}
- /* "src/lxml/dtd.pxi":449
+ /* "src/lxml/dtd.pxi":454
* # libxml2 keeps namespace declarations first, and we need to make
* # sure we don't re-insert attributes that are already there
* if _isDtdNsDecl(c_attr): # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "src/lxml/dtd.pxi":458
+ /* "src/lxml/dtd.pxi":463
* else:
* # append at end
* while c_pos != c_attr and c_pos.nexth: # <<<<<<<<<<<<<<
__pyx_L14_bool_binop_done:;
if (!__pyx_t_1) break;
- /* "src/lxml/dtd.pxi":459
+ /* "src/lxml/dtd.pxi":464
* # append at end
* while c_pos != c_attr and c_pos.nexth:
* c_pos = c_pos.nexth # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "src/lxml/dtd.pxi":460
+ /* "src/lxml/dtd.pxi":465
* while c_pos != c_attr and c_pos.nexth:
* c_pos = c_pos.nexth
* if c_pos == c_attr: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_pos == __pyx_v_c_attr) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":461
+ /* "src/lxml/dtd.pxi":466
* c_pos = c_pos.nexth
* if c_pos == c_attr:
* return # <<<<<<<<<<<<<<
*/
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":460
+ /* "src/lxml/dtd.pxi":465
* while c_pos != c_attr and c_pos.nexth:
* c_pos = c_pos.nexth
* if c_pos == c_attr: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":462
+ /* "src/lxml/dtd.pxi":467
* if c_pos == c_attr:
* return
* c_attr.nexth = c_pos.nexth # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_c_pos->nexth;
__pyx_v_c_attr->nexth = __pyx_t_2;
- /* "src/lxml/dtd.pxi":463
+ /* "src/lxml/dtd.pxi":468
* return
* c_attr.nexth = c_pos.nexth
* c_pos.nexth = c_attr # <<<<<<<<<<<<<<
*/
__pyx_v_c_pos->nexth = __pyx_v_c_attr;
- /* "src/lxml/dtd.pxi":433
+ /* "src/lxml/dtd.pxi":438
*
*
* cdef void _linkDtdAttribute(tree.xmlDtd* c_dtd, tree.xmlAttribute* c_attr): # <<<<<<<<<<<<<<
__Pyx_RefNannyFinishContext();
}
-/* "src/lxml/dtd.pxi":466
+/* "src/lxml/dtd.pxi":471
*
*
* cdef bint _isDtdNsDecl(tree.xmlAttribute* c_attr): # <<<<<<<<<<<<<<
int __pyx_t_2;
__Pyx_RefNannySetupContext("_isDtdNsDecl", 0);
- /* "src/lxml/dtd.pxi":467
+ /* "src/lxml/dtd.pxi":472
*
* cdef bint _isDtdNsDecl(tree.xmlAttribute* c_attr):
* if cstring_h.strcmp(<const_char*>c_attr.name, "xmlns") == 0: # <<<<<<<<<<<<<<
__pyx_t_1 = ((strcmp(((const char *)__pyx_v_c_attr->name), ((char const *)"xmlns")) == 0) != 0);
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":468
+ /* "src/lxml/dtd.pxi":473
* cdef bint _isDtdNsDecl(tree.xmlAttribute* c_attr):
* if cstring_h.strcmp(<const_char*>c_attr.name, "xmlns") == 0:
* return True # <<<<<<<<<<<<<<
__pyx_r = 1;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":467
+ /* "src/lxml/dtd.pxi":472
*
* cdef bint _isDtdNsDecl(tree.xmlAttribute* c_attr):
* if cstring_h.strcmp(<const_char*>c_attr.name, "xmlns") == 0: # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":469
+ /* "src/lxml/dtd.pxi":474
* if cstring_h.strcmp(<const_char*>c_attr.name, "xmlns") == 0:
* return True
* if (c_attr.prefix is not NULL and # <<<<<<<<<<<<<<
goto __pyx_L5_bool_binop_done;
}
- /* "src/lxml/dtd.pxi":470
+ /* "src/lxml/dtd.pxi":475
* return True
* if (c_attr.prefix is not NULL and
* cstring_h.strcmp(<const_char*>c_attr.prefix, "xmlns") == 0): # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_t_2;
__pyx_L5_bool_binop_done:;
- /* "src/lxml/dtd.pxi":469
+ /* "src/lxml/dtd.pxi":474
* if cstring_h.strcmp(<const_char*>c_attr.name, "xmlns") == 0:
* return True
* if (c_attr.prefix is not NULL and # <<<<<<<<<<<<<<
*/
if (__pyx_t_1) {
- /* "src/lxml/dtd.pxi":471
+ /* "src/lxml/dtd.pxi":476
* if (c_attr.prefix is not NULL and
* cstring_h.strcmp(<const_char*>c_attr.prefix, "xmlns") == 0):
* return True # <<<<<<<<<<<<<<
__pyx_r = 1;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":469
+ /* "src/lxml/dtd.pxi":474
* if cstring_h.strcmp(<const_char*>c_attr.name, "xmlns") == 0:
* return True
* if (c_attr.prefix is not NULL and # <<<<<<<<<<<<<<
*/
}
- /* "src/lxml/dtd.pxi":472
+ /* "src/lxml/dtd.pxi":477
* cstring_h.strcmp(<const_char*>c_attr.prefix, "xmlns") == 0):
* return True
* return False # <<<<<<<<<<<<<<
__pyx_r = 0;
goto __pyx_L0;
- /* "src/lxml/dtd.pxi":466
+ /* "src/lxml/dtd.pxi":471
*
*
* cdef bint _isDtdNsDecl(tree.xmlAttribute* c_attr): # <<<<<<<<<<<<<<
return __pyx_pw_4lxml_5etree_14_DTDEntityDecl_7content_1__get__(o);
}
+static PyObject *__pyx_getprop_4lxml_5etree_14_DTDEntityDecl_system_url(PyObject *o, CYTHON_UNUSED void *x) {
+ return __pyx_pw_4lxml_5etree_14_DTDEntityDecl_10system_url_1__get__(o);
+}
+
static PyMethodDef __pyx_methods_4lxml_5etree__DTDEntityDecl[] = {
{0, 0, 0, 0}
};
{(char *)"name", __pyx_getprop_4lxml_5etree_14_DTDEntityDecl_name, 0, (char *)0, 0},
{(char *)"orig", __pyx_getprop_4lxml_5etree_14_DTDEntityDecl_orig, 0, (char *)0, 0},
{(char *)"content", __pyx_getprop_4lxml_5etree_14_DTDEntityDecl_content, 0, (char *)0, 0},
+ {(char *)"system_url", __pyx_getprop_4lxml_5etree_14_DTDEntityDecl_system_url, 0, (char *)0, 0},
{0, 0, 0, 0, 0}
};
__pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) __PYX_ERR(2, 652, __pyx_L1_error)
__pyx_builtin_LookupError = __Pyx_GetBuiltinName(__pyx_n_s_LookupError); if (!__pyx_builtin_LookupError) __PYX_ERR(2, 837, __pyx_L1_error)
__pyx_builtin_reversed = __Pyx_GetBuiltinName(__pyx_n_s_reversed); if (!__pyx_builtin_reversed) __PYX_ERR(3, 540, __pyx_L1_error)
- __pyx_builtin_sorted = __Pyx_GetBuiltinName(__pyx_n_s_sorted); if (!__pyx_builtin_sorted) __PYX_ERR(9, 1156, __pyx_L1_error)
+ __pyx_builtin_sorted = __Pyx_GetBuiltinName(__pyx_n_s_sorted); if (!__pyx_builtin_sorted) __PYX_ERR(9, 1155, __pyx_L1_error)
__pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(10, 632, __pyx_L1_error)
return 0;
__pyx_L1_error:;
__Pyx_GOTREF(__pyx_tuple__59);
__Pyx_GIVEREF(__pyx_tuple__59);
- /* "src/lxml/serializer.pxi":910
+ /* "src/lxml/serializer.pxi":909
* """
* if xml_data is None and from_file is None:
* raise ValueError("Either 'xml_data' or 'from_file' must be provided as input") # <<<<<<<<<<<<<<
*
* sio = None
*/
- __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_Either_xml_data_or_from_file_mus); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(9, 910, __pyx_L1_error)
+ __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_Either_xml_data_or_from_file_mus); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(9, 909, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__63);
__Pyx_GIVEREF(__pyx_tuple__63);
- /* "src/lxml/serializer.pxi":941
+ /* "src/lxml/serializer.pxi":940
*
* cdef _tree_to_target(element, target):
* for event, elem in iterwalk(element, events=('start', 'end', 'start-ns', 'comment', 'pi')): # <<<<<<<<<<<<<<
* text = None
* if event == 'start':
*/
- __pyx_tuple__64 = PyTuple_Pack(5, __pyx_n_s_start, __pyx_n_s_end, __pyx_kp_s_start_ns, __pyx_n_s_comment, __pyx_n_s_pi); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(9, 941, __pyx_L1_error)
+ __pyx_tuple__64 = PyTuple_Pack(5, __pyx_n_s_start, __pyx_n_s_end, __pyx_kp_s_start_ns, __pyx_n_s_comment, __pyx_n_s_pi); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(9, 940, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__64);
__Pyx_GIVEREF(__pyx_tuple__64);
- /* "src/lxml/serializer.pxi":1025
+ /* "src/lxml/serializer.pxi":1024
* # Stack with globally and newly declared namespaces as (uri, prefix) pairs.
* self._declared_ns_stack = [[
* ("http://www.w3.org/XML/1998/namespace", "xml"), # <<<<<<<<<<<<<<
* ]]
* # Stack with user declared namespace prefixes as (uri, prefix) pairs.
*/
- __pyx_tuple__65 = PyTuple_Pack(2, __pyx_kp_s_http_www_w3_org_XML_1998_namespa, __pyx_n_s_xml); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(9, 1025, __pyx_L1_error)
+ __pyx_tuple__65 = PyTuple_Pack(2, __pyx_kp_s_http_www_w3_org_XML_1998_namespa, __pyx_n_s_xml); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(9, 1024, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__65);
__Pyx_GIVEREF(__pyx_tuple__65);
- /* "src/lxml/serializer.pxi":1045
+ /* "src/lxml/serializer.pxi":1044
*
* cdef _resolve_prefix_name(self, prefixed_name):
* prefix, name = prefixed_name.split(':', 1) # <<<<<<<<<<<<<<
* for uri, p in self._iter_namespaces(self._ns_stack):
* if p == prefix:
*/
- __pyx_tuple__67 = PyTuple_Pack(2, __pyx_kp_s__17, __pyx_int_1); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(9, 1045, __pyx_L1_error)
+ __pyx_tuple__67 = PyTuple_Pack(2, __pyx_kp_s__17, __pyx_int_1); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(9, 1044, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__67);
__Pyx_GIVEREF(__pyx_tuple__67);
- /* "src/lxml/serializer.pxi":1053
+ /* "src/lxml/serializer.pxi":1052
* cdef _qname(self, qname, uri=None):
* if uri is None:
* uri, tag = qname[1:].rsplit('}', 1) if qname[:1] == '{' else ('', qname) # <<<<<<<<<<<<<<
* else:
* tag = qname
*/
- __pyx_slice__68 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__68)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_slice__68 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__68)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_slice__68);
__Pyx_GIVEREF(__pyx_slice__68);
- __pyx_tuple__69 = PyTuple_Pack(2, __pyx_kp_s__32, __pyx_int_1); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(9, 1053, __pyx_L1_error)
+ __pyx_tuple__69 = PyTuple_Pack(2, __pyx_kp_s__32, __pyx_int_1); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(9, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__69);
__Pyx_GIVEREF(__pyx_tuple__69);
- /* "src/lxml/serializer.pxi":1361
+ /* "src/lxml/serializer.pxi":1360
* assert self.output_file is not None
* if isinstance(self.output_file, basestring):
* raise TypeError("Cannot asynchronously write to a plain file") # <<<<<<<<<<<<<<
* if not hasattr(self.output_file, 'write'):
* raise TypeError("Output file needs an async .write() method")
*/
- __pyx_tuple__79 = PyTuple_Pack(1, __pyx_kp_s_Cannot_asynchronously_write_to_a); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(9, 1361, __pyx_L1_error)
+ __pyx_tuple__79 = PyTuple_Pack(1, __pyx_kp_s_Cannot_asynchronously_write_to_a); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(9, 1360, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__79);
__Pyx_GIVEREF(__pyx_tuple__79);
- /* "src/lxml/serializer.pxi":1363
+ /* "src/lxml/serializer.pxi":1362
* raise TypeError("Cannot asynchronously write to a plain file")
* if not hasattr(self.output_file, 'write'):
* raise TypeError("Output file needs an async .write() method") # <<<<<<<<<<<<<<
* self.async_writer = _AsyncIncrementalFileWriter(
* self.output_file, self.encoding, self.compresslevel,
*/
- __pyx_tuple__80 = PyTuple_Pack(1, __pyx_kp_s_Output_file_needs_an_async_write); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(9, 1363, __pyx_L1_error)
+ __pyx_tuple__80 = PyTuple_Pack(1, __pyx_kp_s_Output_file_needs_an_async_write); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(9, 1362, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__80);
__Pyx_GIVEREF(__pyx_tuple__80);
- /* "src/lxml/serializer.pxi":1564
+ /* "src/lxml/serializer.pxi":1563
* if self._status != WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("not in an element")
* if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]: # <<<<<<<<<<<<<<
* raise LxmlSyntaxError("inconsistent exit action in context manager")
*
*/
- __pyx_slice__82 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__82)) __PYX_ERR(9, 1564, __pyx_L1_error)
+ __pyx_slice__82 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__82)) __PYX_ERR(9, 1563, __pyx_L1_error)
__Pyx_GOTREF(__pyx_slice__82);
__Pyx_GIVEREF(__pyx_slice__82);
- /* "src/lxml/serializer.pxi":1572
+ /* "src/lxml/serializer.pxi":1571
* ok_to_write = self._c_out.error == xmlerror.XML_ERR_OK
*
* name, prefix = self._element_stack.pop()[1:3] # <<<<<<<<<<<<<<
* if ok_to_write:
* tree.xmlOutputBufferWrite(self._c_out, 2, '</')
*/
- __pyx_slice__83 = PySlice_New(__pyx_int_1, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__83)) __PYX_ERR(9, 1572, __pyx_L1_error)
+ __pyx_slice__83 = PySlice_New(__pyx_int_1, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__83)) __PYX_ERR(9, 1571, __pyx_L1_error)
__Pyx_GOTREF(__pyx_slice__83);
__Pyx_GIVEREF(__pyx_slice__83);
__Pyx_GOTREF(__pyx_tuple__102);
__Pyx_GIVEREF(__pyx_tuple__102);
- /* "src/lxml/dtd.pxi":368
+ /* "src/lxml/dtd.pxi":373
* valid_ctxt = dtdvalid.xmlNewValidCtxt()
* if valid_ctxt is NULL:
* raise DTDError(u"Failed to create validation context") # <<<<<<<<<<<<<<
*
* # work around error reporting bug in libxml2 <= 2.9.1 (and later?)
*/
- __pyx_tuple__107 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_create_validation_cont); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(20, 368, __pyx_L1_error)
+ __pyx_tuple__107 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_create_validation_cont); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(20, 373, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__107);
__Pyx_GIVEREF(__pyx_tuple__107);
__Pyx_GIVEREF(__pyx_tuple__489);
__pyx_codeobj__490 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__489, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parsertarget_pxi, __pyx_n_s_init, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__490)) __PYX_ERR(13, 14, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":622
+ /* "src/lxml/serializer.pxi":621
* cdef object getwriter
* from codecs import getwriter
* cdef object utf8_writer = getwriter('utf8') # <<<<<<<<<<<<<<
*
* cdef object contextmanager
*/
- __pyx_tuple__491 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__491)) __PYX_ERR(9, 622, __pyx_L1_error)
+ __pyx_tuple__491 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__491)) __PYX_ERR(9, 621, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__491);
__Pyx_GIVEREF(__pyx_tuple__491);
- /* "src/lxml/serializer.pxi":630
+ /* "src/lxml/serializer.pxi":629
*
* @contextmanager
* def _open_utf8_file(file, compression=0): # <<<<<<<<<<<<<<
* if _isString(file):
* if compression:
*/
- __pyx_tuple__492 = PyTuple_Pack(4, __pyx_n_s_file, __pyx_n_s_compression, __pyx_n_s_zf, __pyx_n_s_f); if (unlikely(!__pyx_tuple__492)) __PYX_ERR(9, 630, __pyx_L1_error)
+ __pyx_tuple__492 = PyTuple_Pack(4, __pyx_n_s_file, __pyx_n_s_compression, __pyx_n_s_zf, __pyx_n_s_f); if (unlikely(!__pyx_tuple__492)) __PYX_ERR(9, 629, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__492);
__Pyx_GIVEREF(__pyx_tuple__492);
- __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__492, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_open_utf8_file, 630, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(9, 630, __pyx_L1_error)
- __pyx_tuple__493 = PyTuple_Pack(1, ((PyObject *)__pyx_int_0)); if (unlikely(!__pyx_tuple__493)) __PYX_ERR(9, 630, __pyx_L1_error)
+ __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__492, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_open_utf8_file, 629, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(9, 629, __pyx_L1_error)
+ __pyx_tuple__493 = PyTuple_Pack(1, ((PyObject *)__pyx_int_0)); if (unlikely(!__pyx_tuple__493)) __PYX_ERR(9, 629, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__493);
__Pyx_GIVEREF(__pyx_tuple__493);
- /* "src/lxml/serializer.pxi":896
+ /* "src/lxml/serializer.pxi":895
* # C14N 2.0
*
* def canonicalize(xml_data=None, *, out=None, from_file=None, **options): # <<<<<<<<<<<<<<
* """Convert XML to its C14N 2.0 serialised form.
*
*/
- __pyx_tuple__494 = PyTuple_Pack(7, __pyx_n_s_xml_data, __pyx_n_s_out, __pyx_n_s_from_file, __pyx_n_s_options, __pyx_n_s_sio, __pyx_n_s_target, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__494)) __PYX_ERR(9, 896, __pyx_L1_error)
+ __pyx_tuple__494 = PyTuple_Pack(7, __pyx_n_s_xml_data, __pyx_n_s_out, __pyx_n_s_from_file, __pyx_n_s_options, __pyx_n_s_sio, __pyx_n_s_target, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__494)) __PYX_ERR(9, 895, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__494);
__Pyx_GIVEREF(__pyx_tuple__494);
- __pyx_codeobj__495 = (PyObject*)__Pyx_PyCode_New(1, 2, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__494, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_canonicalize, 896, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__495)) __PYX_ERR(9, 896, __pyx_L1_error)
- __pyx_tuple__496 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__496)) __PYX_ERR(9, 896, __pyx_L1_error)
+ __pyx_codeobj__495 = (PyObject*)__Pyx_PyCode_New(1, 2, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__494, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_canonicalize, 895, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__495)) __PYX_ERR(9, 895, __pyx_L1_error)
+ __pyx_tuple__496 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__496)) __PYX_ERR(9, 895, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__496);
__Pyx_GIVEREF(__pyx_tuple__496);
- /* "src/lxml/serializer.pxi":1039
+ /* "src/lxml/serializer.pxi":1038
* self._root_done = False
*
* def _iter_namespaces(self, ns_stack): # <<<<<<<<<<<<<<
* for namespaces in reversed(ns_stack):
* if namespaces: # almost no element declares new namespaces
*/
- __pyx_tuple__497 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_ns_stack, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__497)) __PYX_ERR(9, 1039, __pyx_L1_error)
+ __pyx_tuple__497 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_ns_stack, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__497)) __PYX_ERR(9, 1038, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__497);
__Pyx_GIVEREF(__pyx_tuple__497);
- __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__497, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_iter_namespaces, 1039, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(9, 1039, __pyx_L1_error)
+ __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__497, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_iter_namespaces, 1038, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(9, 1038, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1088
+ /* "src/lxml/serializer.pxi":1087
* raise ValueError(f'Namespace "{uri}" of name "{tag}" is not declared in scope')
*
* def data(self, data): # <<<<<<<<<<<<<<
* if not self._ignored_depth:
* self._data.append(data)
*/
- __pyx_tuple__498 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__498)) __PYX_ERR(9, 1088, __pyx_L1_error)
+ __pyx_tuple__498 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__498)) __PYX_ERR(9, 1087, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__498);
__Pyx_GIVEREF(__pyx_tuple__498);
- __pyx_codeobj__499 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__498, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_data, 1088, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__499)) __PYX_ERR(9, 1088, __pyx_L1_error)
+ __pyx_codeobj__499 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__498, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_data, 1087, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__499)) __PYX_ERR(9, 1087, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1106
+ /* "src/lxml/serializer.pxi":1105
* self._write(_escape_cdata_c14n(data))
*
* def start_ns(self, prefix, uri): # <<<<<<<<<<<<<<
* if self._ignored_depth:
* return
*/
- __pyx_tuple__500 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_prefix, __pyx_n_s_uri); if (unlikely(!__pyx_tuple__500)) __PYX_ERR(9, 1106, __pyx_L1_error)
+ __pyx_tuple__500 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_prefix, __pyx_n_s_uri); if (unlikely(!__pyx_tuple__500)) __PYX_ERR(9, 1105, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__500);
__Pyx_GIVEREF(__pyx_tuple__500);
- __pyx_codeobj__501 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__500, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_start_ns_2, 1106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__501)) __PYX_ERR(9, 1106, __pyx_L1_error)
+ __pyx_codeobj__501 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__500, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_start_ns_2, 1105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__501)) __PYX_ERR(9, 1105, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1114
+ /* "src/lxml/serializer.pxi":1113
* self._ns_stack[-1].append((uri, prefix))
*
* def start(self, tag, attrs): # <<<<<<<<<<<<<<
* if self._exclude_tags is not None and (
* self._ignored_depth or tag in self._exclude_tags):
*/
- __pyx_tuple__502 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrs, __pyx_n_s_new_namespaces); if (unlikely(!__pyx_tuple__502)) __PYX_ERR(9, 1114, __pyx_L1_error)
+ __pyx_tuple__502 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrs, __pyx_n_s_new_namespaces); if (unlikely(!__pyx_tuple__502)) __PYX_ERR(9, 1113, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__502);
__Pyx_GIVEREF(__pyx_tuple__502);
- __pyx_codeobj__503 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__502, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_start, 1114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__503)) __PYX_ERR(9, 1114, __pyx_L1_error)
+ __pyx_codeobj__503 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__502, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_start, 1113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__503)) __PYX_ERR(9, 1113, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1199
+ /* "src/lxml/serializer.pxi":1198
* self._ns_stack.append([])
*
* def end(self, tag): # <<<<<<<<<<<<<<
* if self._ignored_depth:
* self._ignored_depth -= 1
*/
- __pyx_tuple__504 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_tag); if (unlikely(!__pyx_tuple__504)) __PYX_ERR(9, 1199, __pyx_L1_error)
+ __pyx_tuple__504 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_tag); if (unlikely(!__pyx_tuple__504)) __PYX_ERR(9, 1198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__504);
__Pyx_GIVEREF(__pyx_tuple__504);
- __pyx_codeobj__505 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__504, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_end, 1199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__505)) __PYX_ERR(9, 1199, __pyx_L1_error)
+ __pyx_codeobj__505 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__504, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_end, 1198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__505)) __PYX_ERR(9, 1198, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1211
+ /* "src/lxml/serializer.pxi":1210
* self._ns_stack.pop()
*
* def comment(self, text): # <<<<<<<<<<<<<<
* if not self._with_comments:
* return
*/
- __pyx_tuple__506 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_text); if (unlikely(!__pyx_tuple__506)) __PYX_ERR(9, 1211, __pyx_L1_error)
+ __pyx_tuple__506 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_text); if (unlikely(!__pyx_tuple__506)) __PYX_ERR(9, 1210, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__506);
__Pyx_GIVEREF(__pyx_tuple__506);
- __pyx_codeobj__507 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__506, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_comment, 1211, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__507)) __PYX_ERR(9, 1211, __pyx_L1_error)
+ __pyx_codeobj__507 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__506, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_comment, 1210, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__507)) __PYX_ERR(9, 1210, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1224
+ /* "src/lxml/serializer.pxi":1223
* self._write(u'\n')
*
* def pi(self, target, data): # <<<<<<<<<<<<<<
* if self._ignored_depth:
* return
*/
- __pyx_tuple__508 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_target, __pyx_n_s_data); if (unlikely(!__pyx_tuple__508)) __PYX_ERR(9, 1224, __pyx_L1_error)
+ __pyx_tuple__508 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_target, __pyx_n_s_data); if (unlikely(!__pyx_tuple__508)) __PYX_ERR(9, 1223, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__508);
__Pyx_GIVEREF(__pyx_tuple__508);
- __pyx_codeobj__509 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_pi, 1224, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__509)) __PYX_ERR(9, 1224, __pyx_L1_error)
+ __pyx_codeobj__509 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_pi, 1223, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__509)) __PYX_ERR(9, 1223, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1236
+ /* "src/lxml/serializer.pxi":1235
* self._write(u'\n')
*
* def close(self): # <<<<<<<<<<<<<<
* return None
*
*/
- __pyx_tuple__510 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__510)) __PYX_ERR(9, 1236, __pyx_L1_error)
+ __pyx_tuple__510 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__510)) __PYX_ERR(9, 1235, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__510);
__Pyx_GIVEREF(__pyx_tuple__510);
- __pyx_codeobj__511 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__510, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_close, 1236, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__511)) __PYX_ERR(9, 1236, __pyx_L1_error)
+ __pyx_codeobj__511 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__510, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_close, 1235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__511)) __PYX_ERR(9, 1235, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1343
+ /* "src/lxml/serializer.pxi":1342
* self.method = OUTPUT_METHOD_XML
*
* def __enter__(self): # <<<<<<<<<<<<<<
* assert self.output_file is not None
* self.writer = _IncrementalFileWriter(
*/
- __pyx_tuple__512 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__512)) __PYX_ERR(9, 1343, __pyx_L1_error)
+ __pyx_tuple__512 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__512)) __PYX_ERR(9, 1342, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__512);
__Pyx_GIVEREF(__pyx_tuple__512);
- __pyx_codeobj__513 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__512, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 1343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__513)) __PYX_ERR(9, 1343, __pyx_L1_error)
+ __pyx_codeobj__513 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__512, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 1342, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__513)) __PYX_ERR(9, 1342, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1350
+ /* "src/lxml/serializer.pxi":1349
* return self.writer
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
* if self.writer is not None:
* old_writer, self.writer = self.writer, None
*/
- __pyx_tuple__514 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb, __pyx_n_s_old_writer, __pyx_n_s_raise_on_error); if (unlikely(!__pyx_tuple__514)) __PYX_ERR(9, 1350, __pyx_L1_error)
+ __pyx_tuple__514 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb, __pyx_n_s_old_writer, __pyx_n_s_raise_on_error); if (unlikely(!__pyx_tuple__514)) __PYX_ERR(9, 1349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__514);
__Pyx_GIVEREF(__pyx_tuple__514);
- __pyx_codeobj__515 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__514, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 1350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__515)) __PYX_ERR(9, 1350, __pyx_L1_error)
+ __pyx_codeobj__515 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__514, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 1349, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__515)) __PYX_ERR(9, 1349, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1358
+ /* "src/lxml/serializer.pxi":1357
* self.output_file = None
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
* assert self.output_file is not None
* if isinstance(self.output_file, basestring):
*/
- __pyx_tuple__516 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__516)) __PYX_ERR(9, 1358, __pyx_L1_error)
+ __pyx_tuple__516 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__516)) __PYX_ERR(9, 1357, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__516);
__Pyx_GIVEREF(__pyx_tuple__516);
- __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__516, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 1358, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(9, 1358, __pyx_L1_error)
+ __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__516, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 1357, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(9, 1357, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1369
+ /* "src/lxml/serializer.pxi":1368
* return self.async_writer
*
* async def __aexit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
* if self.async_writer is not None:
* old_writer, self.async_writer = self.async_writer, None
*/
- __pyx_tuple__517 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb, __pyx_n_s_old_writer, __pyx_n_s_raise_on_error); if (unlikely(!__pyx_tuple__517)) __PYX_ERR(9, 1369, __pyx_L1_error)
+ __pyx_tuple__517 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb, __pyx_n_s_old_writer, __pyx_n_s_raise_on_error); if (unlikely(!__pyx_tuple__517)) __PYX_ERR(9, 1368, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__517);
__Pyx_GIVEREF(__pyx_tuple__517);
- __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__517, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(9, 1369, __pyx_L1_error)
+ __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__517, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1368, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(9, 1368, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1426
+ /* "src/lxml/serializer.pxi":1425
* tree.xmlOutputBufferClose(self._c_out)
*
* def write_declaration(self, version=None, standalone=None, doctype=None): # <<<<<<<<<<<<<<
* """write_declaration(self, version=None, standalone=None, doctype=None)
*
*/
- __pyx_tuple__518 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_version, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_c_version, __pyx_n_s_c_standalone); if (unlikely(!__pyx_tuple__518)) __PYX_ERR(9, 1426, __pyx_L1_error)
+ __pyx_tuple__518 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_version, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_c_version, __pyx_n_s_c_standalone); if (unlikely(!__pyx_tuple__518)) __PYX_ERR(9, 1425, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__518);
__Pyx_GIVEREF(__pyx_tuple__518);
- __pyx_codeobj__519 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__518, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_declaration, 1426, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__519)) __PYX_ERR(9, 1426, __pyx_L1_error)
+ __pyx_codeobj__519 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__518, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_declaration, 1425, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__519)) __PYX_ERR(9, 1425, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1455
+ /* "src/lxml/serializer.pxi":1454
* self._handle_error(self._c_out.error)
*
* def write_doctype(self, doctype): # <<<<<<<<<<<<<<
* """write_doctype(self, doctype)
*
*/
- __pyx_tuple__520 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_doctype); if (unlikely(!__pyx_tuple__520)) __PYX_ERR(9, 1455, __pyx_L1_error)
+ __pyx_tuple__520 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_doctype); if (unlikely(!__pyx_tuple__520)) __PYX_ERR(9, 1454, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__520);
__Pyx_GIVEREF(__pyx_tuple__520);
- __pyx_codeobj__521 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__520, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_doctype, 1455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__521)) __PYX_ERR(9, 1455, __pyx_L1_error)
+ __pyx_codeobj__521 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__520, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_doctype, 1454, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__521)) __PYX_ERR(9, 1454, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1472
+ /* "src/lxml/serializer.pxi":1471
* self._handle_error(self._c_out.error)
*
* def method(self, method): # <<<<<<<<<<<<<<
* """method(self, method)
*
*/
- __pyx_tuple__522 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_method, __pyx_n_s_c_method); if (unlikely(!__pyx_tuple__522)) __PYX_ERR(9, 1472, __pyx_L1_error)
+ __pyx_tuple__522 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_method, __pyx_n_s_c_method); if (unlikely(!__pyx_tuple__522)) __PYX_ERR(9, 1471, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__522);
__Pyx_GIVEREF(__pyx_tuple__522);
- __pyx_codeobj__523 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__522, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_method, 1472, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__523)) __PYX_ERR(9, 1472, __pyx_L1_error)
+ __pyx_codeobj__523 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__522, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_method, 1471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__523)) __PYX_ERR(9, 1471, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1482
+ /* "src/lxml/serializer.pxi":1481
* return _MethodChanger(self, c_method)
*
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra): # <<<<<<<<<<<<<<
* """element(self, tag, attrib=None, nsmap=None, method, **_extra)
*
*/
- __pyx_tuple__524 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_method, __pyx_n_s_extra, __pyx_n_s_attributes, __pyx_n_s_name_2, __pyx_n_s_value, __pyx_n_s_ns, __pyx_n_s_reversed_nsmap, __pyx_n_s_prefix, __pyx_n_s_c_method); if (unlikely(!__pyx_tuple__524)) __PYX_ERR(9, 1482, __pyx_L1_error)
+ __pyx_tuple__524 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_method, __pyx_n_s_extra, __pyx_n_s_attributes, __pyx_n_s_name_2, __pyx_n_s_value, __pyx_n_s_ns, __pyx_n_s_reversed_nsmap, __pyx_n_s_prefix, __pyx_n_s_c_method); if (unlikely(!__pyx_tuple__524)) __PYX_ERR(9, 1481, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__524);
__Pyx_GIVEREF(__pyx_tuple__524);
- __pyx_codeobj__525 = (PyObject*)__Pyx_PyCode_New(5, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__524, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_element, 1482, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__525)) __PYX_ERR(9, 1482, __pyx_L1_error)
+ __pyx_codeobj__525 = (PyObject*)__Pyx_PyCode_New(5, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__524, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_element, 1481, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__525)) __PYX_ERR(9, 1481, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1619
+ /* "src/lxml/serializer.pxi":1618
* return flat_namespaces_map, new_namespaces
*
* def write(self, *args, bint with_tail=True, bint pretty_print=False, method=None): # <<<<<<<<<<<<<<
* """write(self, *args, with_tail=True, pretty_print=False, method=None)
*
*/
- __pyx_tuple__526 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_with_tail, __pyx_n_s_pretty_print, __pyx_n_s_method, __pyx_n_s_args, __pyx_n_s_c_method, __pyx_n_s_content, __pyx_n_s_bstring, __pyx_n_s_ns, __pyx_n_s_name_2, __pyx_n_s__55); if (unlikely(!__pyx_tuple__526)) __PYX_ERR(9, 1619, __pyx_L1_error)
+ __pyx_tuple__526 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_with_tail, __pyx_n_s_pretty_print, __pyx_n_s_method, __pyx_n_s_args, __pyx_n_s_c_method, __pyx_n_s_content, __pyx_n_s_bstring, __pyx_n_s_ns, __pyx_n_s_name_2, __pyx_n_s__55); if (unlikely(!__pyx_tuple__526)) __PYX_ERR(9, 1618, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__526);
__Pyx_GIVEREF(__pyx_tuple__526);
- __pyx_codeobj__527 = (PyObject*)__Pyx_PyCode_New(1, 3, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__526, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1619, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__527)) __PYX_ERR(9, 1619, __pyx_L1_error)
+ __pyx_codeobj__527 = (PyObject*)__Pyx_PyCode_New(1, 3, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__526, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1618, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__527)) __PYX_ERR(9, 1618, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1666
+ /* "src/lxml/serializer.pxi":1665
* self._handle_error(self._c_out.error)
*
* def flush(self): # <<<<<<<<<<<<<<
* """flush(self)
*
*/
- __pyx_tuple__528 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__528)) __PYX_ERR(9, 1666, __pyx_L1_error)
+ __pyx_tuple__528 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__528)) __PYX_ERR(9, 1665, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__528);
__Pyx_GIVEREF(__pyx_tuple__528);
- __pyx_codeobj__529 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__528, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_flush, 1666, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__529)) __PYX_ERR(9, 1666, __pyx_L1_error)
+ __pyx_codeobj__529 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__528, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_flush, 1665, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__529)) __PYX_ERR(9, 1665, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1713
+ /* "src/lxml/serializer.pxi":1712
* return data
*
* def write(self, data): # <<<<<<<<<<<<<<
* self._data.append(data)
*
*/
- __pyx_tuple__530 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__530)) __PYX_ERR(9, 1713, __pyx_L1_error)
+ __pyx_tuple__530 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__530)) __PYX_ERR(9, 1712, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__530);
__Pyx_GIVEREF(__pyx_tuple__530);
- __pyx_codeobj__531 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__530, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1713, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__531)) __PYX_ERR(9, 1713, __pyx_L1_error)
+ __pyx_codeobj__531 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__530, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1712, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__531)) __PYX_ERR(9, 1712, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1716
+ /* "src/lxml/serializer.pxi":1715
* self._data.append(data)
*
* def close(self): # <<<<<<<<<<<<<<
* pass
*
*/
- __pyx_tuple__532 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__532)) __PYX_ERR(9, 1716, __pyx_L1_error)
+ __pyx_tuple__532 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__532)) __PYX_ERR(9, 1715, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__532);
__Pyx_GIVEREF(__pyx_tuple__532);
- __pyx_codeobj__533 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__532, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_close, 1716, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__533)) __PYX_ERR(9, 1716, __pyx_L1_error)
+ __pyx_codeobj__533 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__532, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_close, 1715, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__533)) __PYX_ERR(9, 1715, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1745
+ /* "src/lxml/serializer.pxi":1744
* return None
*
* async def flush(self): # <<<<<<<<<<<<<<
* self._writer.flush()
* data = self._buffer.collect()
*/
- __pyx_tuple__534 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__534)) __PYX_ERR(9, 1745, __pyx_L1_error)
+ __pyx_tuple__534 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__534)) __PYX_ERR(9, 1744, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__534);
__Pyx_GIVEREF(__pyx_tuple__534);
- __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__534, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_flush, 1745, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(9, 1745, __pyx_L1_error)
+ __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__534, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_flush, 1744, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(9, 1744, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1751
+ /* "src/lxml/serializer.pxi":1750
* await self._async_outfile.write(data)
*
* async def write_declaration(self, version=None, standalone=None, doctype=None): # <<<<<<<<<<<<<<
* self._writer.write_declaration(version, standalone, doctype)
* data = self._flush()
*/
- __pyx_tuple__535 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_version, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_data); if (unlikely(!__pyx_tuple__535)) __PYX_ERR(9, 1751, __pyx_L1_error)
+ __pyx_tuple__535 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_version, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_data); if (unlikely(!__pyx_tuple__535)) __PYX_ERR(9, 1750, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__535);
__Pyx_GIVEREF(__pyx_tuple__535);
- __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__535, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_declaration, 1751, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(9, 1751, __pyx_L1_error)
+ __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__535, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_declaration, 1750, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(9, 1750, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1757
+ /* "src/lxml/serializer.pxi":1756
* await self._async_outfile.write(data)
*
* async def write_doctype(self, doctype): # <<<<<<<<<<<<<<
* self._writer.write_doctype(doctype)
* data = self._flush()
*/
- __pyx_tuple__536 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_doctype, __pyx_n_s_data); if (unlikely(!__pyx_tuple__536)) __PYX_ERR(9, 1757, __pyx_L1_error)
+ __pyx_tuple__536 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_doctype, __pyx_n_s_data); if (unlikely(!__pyx_tuple__536)) __PYX_ERR(9, 1756, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__536);
__Pyx_GIVEREF(__pyx_tuple__536);
- __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__536, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_doctype, 1757, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(9, 1757, __pyx_L1_error)
+ __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__536, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_doctype, 1756, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(9, 1756, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1763
+ /* "src/lxml/serializer.pxi":1762
* await self._async_outfile.write(data)
*
* async def write(self, *args, with_tail=True, pretty_print=False, method=None): # <<<<<<<<<<<<<<
* self._writer.write(*args, with_tail=with_tail, pretty_print=pretty_print, method=method)
* data = self._flush()
*/
- __pyx_tuple__537 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_with_tail, __pyx_n_s_pretty_print, __pyx_n_s_method, __pyx_n_s_args, __pyx_n_s_data); if (unlikely(!__pyx_tuple__537)) __PYX_ERR(9, 1763, __pyx_L1_error)
+ __pyx_tuple__537 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_with_tail, __pyx_n_s_pretty_print, __pyx_n_s_method, __pyx_n_s_args, __pyx_n_s_data); if (unlikely(!__pyx_tuple__537)) __PYX_ERR(9, 1762, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__537);
__Pyx_GIVEREF(__pyx_tuple__537);
- __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(1, 3, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__537, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1763, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(9, 1763, __pyx_L1_error)
+ __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(1, 3, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__537, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1762, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(9, 1762, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1769
+ /* "src/lxml/serializer.pxi":1768
* await self._async_outfile.write(data)
*
* def method(self, method): # <<<<<<<<<<<<<<
* return self._writer.method(method)
*
*/
- __pyx_tuple__538 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_method); if (unlikely(!__pyx_tuple__538)) __PYX_ERR(9, 1769, __pyx_L1_error)
+ __pyx_tuple__538 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_method); if (unlikely(!__pyx_tuple__538)) __PYX_ERR(9, 1768, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__538);
__Pyx_GIVEREF(__pyx_tuple__538);
- __pyx_codeobj__539 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__538, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_method, 1769, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__539)) __PYX_ERR(9, 1769, __pyx_L1_error)
+ __pyx_codeobj__539 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__538, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_method, 1768, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__539)) __PYX_ERR(9, 1768, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1772
+ /* "src/lxml/serializer.pxi":1771
* return self._writer.method(method)
*
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra): # <<<<<<<<<<<<<<
* element_writer = self._writer.element(tag, attrib, nsmap, method, **_extra)
* return _AsyncFileWriterElement(element_writer, self)
*/
- __pyx_tuple__540 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_method, __pyx_n_s_extra, __pyx_n_s_element_writer); if (unlikely(!__pyx_tuple__540)) __PYX_ERR(9, 1772, __pyx_L1_error)
+ __pyx_tuple__540 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_method, __pyx_n_s_extra, __pyx_n_s_element_writer); if (unlikely(!__pyx_tuple__540)) __PYX_ERR(9, 1771, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__540);
__Pyx_GIVEREF(__pyx_tuple__540);
- __pyx_codeobj__541 = (PyObject*)__Pyx_PyCode_New(5, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__540, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_element, 1772, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__541)) __PYX_ERR(9, 1772, __pyx_L1_error)
+ __pyx_codeobj__541 = (PyObject*)__Pyx_PyCode_New(5, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__540, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_element, 1771, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__541)) __PYX_ERR(9, 1771, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1776
+ /* "src/lxml/serializer.pxi":1775
* return _AsyncFileWriterElement(element_writer, self)
*
* async def _close(self, bint raise_on_error): # <<<<<<<<<<<<<<
* self._writer._close(raise_on_error)
* data = self._buffer.collect()
*/
- __pyx_tuple__542 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_raise_on_error, __pyx_n_s_raise_on_error, __pyx_n_s_data); if (unlikely(!__pyx_tuple__542)) __PYX_ERR(9, 1776, __pyx_L1_error)
+ __pyx_tuple__542 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_raise_on_error, __pyx_n_s_raise_on_error, __pyx_n_s_data); if (unlikely(!__pyx_tuple__542)) __PYX_ERR(9, 1775, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__542);
__Pyx_GIVEREF(__pyx_tuple__542);
- __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__542, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_close_2, 1776, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(9, 1776, __pyx_L1_error)
+ __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__542, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_close_2, 1775, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(9, 1775, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1796
+ /* "src/lxml/serializer.pxi":1795
* self._writer = writer
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
* self._element_writer.__enter__()
* data = self._writer._flush()
*/
- __pyx_tuple__543 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__543)) __PYX_ERR(9, 1796, __pyx_L1_error)
+ __pyx_tuple__543 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__543)) __PYX_ERR(9, 1795, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__543);
__Pyx_GIVEREF(__pyx_tuple__543);
- __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__543, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 1796, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(9, 1796, __pyx_L1_error)
+ __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__543, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 1795, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(9, 1795, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1802
+ /* "src/lxml/serializer.pxi":1801
* await self._writer._async_outfile.write(data)
*
* async def __aexit__(self, *args): # <<<<<<<<<<<<<<
* self._element_writer.__exit__(*args)
* data = self._writer._flush()
*/
- __pyx_tuple__544 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_data); if (unlikely(!__pyx_tuple__544)) __PYX_ERR(9, 1802, __pyx_L1_error)
+ __pyx_tuple__544 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_data); if (unlikely(!__pyx_tuple__544)) __PYX_ERR(9, 1801, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__544);
__Pyx_GIVEREF(__pyx_tuple__544);
- __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__544, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1802, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(9, 1802, __pyx_L1_error)
+ __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__544, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1801, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(9, 1801, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1824
+ /* "src/lxml/serializer.pxi":1823
* self._old_method = writer._method
*
* def __enter__(self): # <<<<<<<<<<<<<<
* self._writer._method = self._new_method
* self._writer._write_start_element(self._element)
*/
- __pyx_tuple__545 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__545)) __PYX_ERR(9, 1824, __pyx_L1_error)
+ __pyx_tuple__545 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__545)) __PYX_ERR(9, 1823, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__545);
__Pyx_GIVEREF(__pyx_tuple__545);
- __pyx_codeobj__546 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__545, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 1824, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__546)) __PYX_ERR(9, 1824, __pyx_L1_error)
+ __pyx_codeobj__546 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__545, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 1823, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__546)) __PYX_ERR(9, 1823, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1828
+ /* "src/lxml/serializer.pxi":1827
* self._writer._write_start_element(self._element)
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
* self._writer._write_end_element(self._element)
* self._writer._method = self._old_method
*/
- __pyx_tuple__547 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb); if (unlikely(!__pyx_tuple__547)) __PYX_ERR(9, 1828, __pyx_L1_error)
+ __pyx_tuple__547 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb); if (unlikely(!__pyx_tuple__547)) __PYX_ERR(9, 1827, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__547);
__Pyx_GIVEREF(__pyx_tuple__547);
- __pyx_codeobj__548 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__547, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 1828, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__548)) __PYX_ERR(9, 1828, __pyx_L1_error)
+ __pyx_codeobj__548 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__547, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 1827, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__548)) __PYX_ERR(9, 1827, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1850
+ /* "src/lxml/serializer.pxi":1849
* self._exited = False
*
* def __enter__(self): # <<<<<<<<<<<<<<
* if self._entered:
* raise LxmlSyntaxError("Inconsistent enter action in context manager")
*/
- __pyx_tuple__549 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__549)) __PYX_ERR(9, 1850, __pyx_L1_error)
+ __pyx_tuple__549 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__549)) __PYX_ERR(9, 1849, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__549);
__Pyx_GIVEREF(__pyx_tuple__549);
- __pyx_codeobj__550 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 1850, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__550)) __PYX_ERR(9, 1850, __pyx_L1_error)
+ __pyx_codeobj__550 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 1849, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__550)) __PYX_ERR(9, 1849, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1856
+ /* "src/lxml/serializer.pxi":1855
* self._entered = True
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
* if self._exited:
* raise LxmlSyntaxError("Inconsistent exit action in context manager")
*/
- __pyx_tuple__551 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb); if (unlikely(!__pyx_tuple__551)) __PYX_ERR(9, 1856, __pyx_L1_error)
+ __pyx_tuple__551 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb); if (unlikely(!__pyx_tuple__551)) __PYX_ERR(9, 1855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__551);
__Pyx_GIVEREF(__pyx_tuple__551);
- __pyx_codeobj__552 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__551, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 1856, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__552)) __PYX_ERR(9, 1856, __pyx_L1_error)
+ __pyx_codeobj__552 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__551, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 1855, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__552)) __PYX_ERR(9, 1855, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1864
+ /* "src/lxml/serializer.pxi":1863
* self._exited = True
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
* # for your async convenience
* return self.__enter__()
*/
- __pyx_tuple__553 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__553)) __PYX_ERR(9, 1864, __pyx_L1_error)
+ __pyx_tuple__553 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__553)) __PYX_ERR(9, 1863, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__553);
__Pyx_GIVEREF(__pyx_tuple__553);
- __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__553, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 1864, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(9, 1864, __pyx_L1_error)
+ __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__553, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 1863, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(9, 1863, __pyx_L1_error)
- /* "src/lxml/serializer.pxi":1868
+ /* "src/lxml/serializer.pxi":1867
* return self.__enter__()
*
* async def __aexit__(self, *args): # <<<<<<<<<<<<<<
* # for your async convenience
* return self.__exit__(*args)
*/
- __pyx_tuple__554 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_args); if (unlikely(!__pyx_tuple__554)) __PYX_ERR(9, 1868, __pyx_L1_error)
+ __pyx_tuple__554 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_args); if (unlikely(!__pyx_tuple__554)) __PYX_ERR(9, 1867, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__554);
__Pyx_GIVEREF(__pyx_tuple__554);
- __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1868, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(9, 1868, __pyx_L1_error)
+ __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1867, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(9, 1867, __pyx_L1_error)
/* "src/lxml/iterparse.pxi":148
* return self._parser.version
__Pyx_GIVEREF(__pyx_tuple__666);
__pyx_codeobj__667 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__666, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_attributes, 233, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__667)) __PYX_ERR(20, 233, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":320
+ /* "src/lxml/dtd.pxi":325
* return funicodeOrNone(self._c_dtd.SystemID)
*
* def iterelements(self): # <<<<<<<<<<<<<<
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
* while c_node is not NULL:
*/
- __pyx_tuple__668 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_node); if (unlikely(!__pyx_tuple__668)) __PYX_ERR(20, 320, __pyx_L1_error)
+ __pyx_tuple__668 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_node); if (unlikely(!__pyx_tuple__668)) __PYX_ERR(20, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__668);
__Pyx_GIVEREF(__pyx_tuple__668);
- __pyx_codeobj__105 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__668, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_iterelements, 320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(20, 320, __pyx_L1_error)
+ __pyx_codeobj__105 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__668, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_iterelements, 325, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(20, 325, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":330
+ /* "src/lxml/dtd.pxi":335
* c_node = c_node.next
*
* def elements(self): # <<<<<<<<<<<<<<
* return list(self.iterelements())
*
*/
- __pyx_tuple__669 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__669)) __PYX_ERR(20, 330, __pyx_L1_error)
+ __pyx_tuple__669 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__669)) __PYX_ERR(20, 335, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__669);
__Pyx_GIVEREF(__pyx_tuple__669);
- __pyx_codeobj__670 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__669, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_elements, 330, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__670)) __PYX_ERR(20, 330, __pyx_L1_error)
+ __pyx_codeobj__670 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__669, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_elements, 335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__670)) __PYX_ERR(20, 335, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":333
+ /* "src/lxml/dtd.pxi":338
* return list(self.iterelements())
*
* def iterentities(self): # <<<<<<<<<<<<<<
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
* while c_node is not NULL:
*/
- __pyx_tuple__671 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_node); if (unlikely(!__pyx_tuple__671)) __PYX_ERR(20, 333, __pyx_L1_error)
+ __pyx_tuple__671 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_node); if (unlikely(!__pyx_tuple__671)) __PYX_ERR(20, 338, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__671);
__Pyx_GIVEREF(__pyx_tuple__671);
- __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__671, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_iterentities, 333, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(20, 333, __pyx_L1_error)
+ __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__671, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_iterentities, 338, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(20, 338, __pyx_L1_error)
- /* "src/lxml/dtd.pxi":343
+ /* "src/lxml/dtd.pxi":348
* c_node = c_node.next
*
* def entities(self): # <<<<<<<<<<<<<<
* return list(self.iterentities())
*
*/
- __pyx_tuple__672 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__672)) __PYX_ERR(20, 343, __pyx_L1_error)
+ __pyx_tuple__672 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__672)) __PYX_ERR(20, 348, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__672);
__Pyx_GIVEREF(__pyx_tuple__672);
- __pyx_codeobj__673 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__672, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_entities, 343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__673)) __PYX_ERR(20, 343, __pyx_L1_error)
+ __pyx_codeobj__673 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__672, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_entities, 348, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__673)) __PYX_ERR(20, 348, __pyx_L1_error)
/* "src/lxml/relaxng.pxi":153
*
__pyx_vtable_4lxml_5etree__FilelikeWriter._createOutputBuffer = (xmlOutputBuffer *(*)(struct __pyx_obj_4lxml_5etree__FilelikeWriter *, xmlCharEncodingHandler *))__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer;
__pyx_vtable_4lxml_5etree__FilelikeWriter.write = (int (*)(struct __pyx_obj_4lxml_5etree__FilelikeWriter *, char *, int))__pyx_f_4lxml_5etree_15_FilelikeWriter_write;
__pyx_vtable_4lxml_5etree__FilelikeWriter.close = (int (*)(struct __pyx_obj_4lxml_5etree__FilelikeWriter *))__pyx_f_4lxml_5etree_15_FilelikeWriter_close;
- if (PyType_Ready(&__pyx_type_4lxml_5etree__FilelikeWriter) < 0) __PYX_ERR(9, 648, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree__FilelikeWriter) < 0) __PYX_ERR(9, 647, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree__FilelikeWriter.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__FilelikeWriter.tp_dictoffset && __pyx_type_4lxml_5etree__FilelikeWriter.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_5etree__FilelikeWriter.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
- if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FilelikeWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__FilelikeWriter) < 0) __PYX_ERR(9, 648, __pyx_L1_error)
+ if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FilelikeWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__FilelikeWriter) < 0) __PYX_ERR(9, 647, __pyx_L1_error)
__pyx_ptype_4lxml_5etree__FilelikeWriter = &__pyx_type_4lxml_5etree__FilelikeWriter;
__pyx_vtabptr_4lxml_5etree_C14NWriterTarget = &__pyx_vtable_4lxml_5etree_C14NWriterTarget;
__pyx_vtable_4lxml_5etree_C14NWriterTarget._resolve_prefix_name = (PyObject *(*)(struct __pyx_obj_4lxml_5etree_C14NWriterTarget *, PyObject *))__pyx_f_4lxml_5etree_16C14NWriterTarget__resolve_prefix_name;
__pyx_vtable_4lxml_5etree_C14NWriterTarget._qname = (PyObject *(*)(struct __pyx_obj_4lxml_5etree_C14NWriterTarget *, PyObject *, struct __pyx_opt_args_4lxml_5etree_16C14NWriterTarget__qname *__pyx_optional_args))__pyx_f_4lxml_5etree_16C14NWriterTarget__qname;
__pyx_vtable_4lxml_5etree_C14NWriterTarget._flush = (PyObject *(*)(struct __pyx_obj_4lxml_5etree_C14NWriterTarget *))__pyx_f_4lxml_5etree_16C14NWriterTarget__flush;
__pyx_vtable_4lxml_5etree_C14NWriterTarget._start = (PyObject *(*)(struct __pyx_obj_4lxml_5etree_C14NWriterTarget *, PyObject *, PyObject *, PyObject *, struct __pyx_opt_args_4lxml_5etree_16C14NWriterTarget__start *__pyx_optional_args))__pyx_f_4lxml_5etree_16C14NWriterTarget__start;
- if (PyType_Ready(&__pyx_type_4lxml_5etree_C14NWriterTarget) < 0) __PYX_ERR(9, 966, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree_C14NWriterTarget) < 0) __PYX_ERR(9, 965, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree_C14NWriterTarget.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_C14NWriterTarget.tp_dictoffset && __pyx_type_4lxml_5etree_C14NWriterTarget.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_5etree_C14NWriterTarget.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_C14NWriterTarget.tp_dict, __pyx_vtabptr_4lxml_5etree_C14NWriterTarget) < 0) __PYX_ERR(9, 966, __pyx_L1_error)
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_C14NWriterTarget, (PyObject *)&__pyx_type_4lxml_5etree_C14NWriterTarget) < 0) __PYX_ERR(9, 966, __pyx_L1_error)
+ if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_C14NWriterTarget.tp_dict, __pyx_vtabptr_4lxml_5etree_C14NWriterTarget) < 0) __PYX_ERR(9, 965, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_C14NWriterTarget, (PyObject *)&__pyx_type_4lxml_5etree_C14NWriterTarget) < 0) __PYX_ERR(9, 965, __pyx_L1_error)
__pyx_ptype_4lxml_5etree_C14NWriterTarget = &__pyx_type_4lxml_5etree_C14NWriterTarget;
- if (PyType_Ready(&__pyx_type_4lxml_5etree_xmlfile) < 0) __PYX_ERR(9, 1289, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree_xmlfile) < 0) __PYX_ERR(9, 1288, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree_xmlfile.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_xmlfile.tp_dictoffset && __pyx_type_4lxml_5etree_xmlfile.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_5etree_xmlfile.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_xmlfile, (PyObject *)&__pyx_type_4lxml_5etree_xmlfile) < 0) __PYX_ERR(9, 1289, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_xmlfile, (PyObject *)&__pyx_type_4lxml_5etree_xmlfile) < 0) __PYX_ERR(9, 1288, __pyx_L1_error)
__pyx_ptype_4lxml_5etree_xmlfile = &__pyx_type_4lxml_5etree_xmlfile;
__pyx_type_4lxml_5etree_htmlfile.tp_base = __pyx_ptype_4lxml_5etree_xmlfile;
- if (PyType_Ready(&__pyx_type_4lxml_5etree_htmlfile) < 0) __PYX_ERR(9, 1378, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree_htmlfile) < 0) __PYX_ERR(9, 1377, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree_htmlfile.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_htmlfile.tp_dictoffset && __pyx_type_4lxml_5etree_htmlfile.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_5etree_htmlfile.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_htmlfile, (PyObject *)&__pyx_type_4lxml_5etree_htmlfile) < 0) __PYX_ERR(9, 1378, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_htmlfile, (PyObject *)&__pyx_type_4lxml_5etree_htmlfile) < 0) __PYX_ERR(9, 1377, __pyx_L1_error)
__pyx_ptype_4lxml_5etree_htmlfile = &__pyx_type_4lxml_5etree_htmlfile;
__pyx_vtabptr_4lxml_5etree__IncrementalFileWriter = &__pyx_vtable_4lxml_5etree__IncrementalFileWriter;
__pyx_vtable_4lxml_5etree__IncrementalFileWriter._write_qname = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname;
__pyx_vtable_4lxml_5etree__IncrementalFileWriter._collect_namespaces = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *, PyObject *))__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespaces;
__pyx_vtable_4lxml_5etree__IncrementalFileWriter._close = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *, int))__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close;
__pyx_vtable_4lxml_5etree__IncrementalFileWriter._handle_error = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *, int))__pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error;
- if (PyType_Ready(&__pyx_type_4lxml_5etree__IncrementalFileWriter) < 0) __PYX_ERR(9, 1399, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree__IncrementalFileWriter) < 0) __PYX_ERR(9, 1398, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree__IncrementalFileWriter.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__IncrementalFileWriter.tp_dictoffset && __pyx_type_4lxml_5etree__IncrementalFileWriter.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_5etree__IncrementalFileWriter.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
- if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__IncrementalFileWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__IncrementalFileWriter) < 0) __PYX_ERR(9, 1399, __pyx_L1_error)
+ if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__IncrementalFileWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__IncrementalFileWriter) < 0) __PYX_ERR(9, 1398, __pyx_L1_error)
__pyx_ptype_4lxml_5etree__IncrementalFileWriter = &__pyx_type_4lxml_5etree__IncrementalFileWriter;
__pyx_vtabptr_4lxml_5etree__AsyncDataWriter = &__pyx_vtable_4lxml_5etree__AsyncDataWriter;
__pyx_vtable_4lxml_5etree__AsyncDataWriter.collect = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__AsyncDataWriter *))__pyx_f_4lxml_5etree_16_AsyncDataWriter_collect;
- if (PyType_Ready(&__pyx_type_4lxml_5etree__AsyncDataWriter) < 0) __PYX_ERR(9, 1703, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree__AsyncDataWriter) < 0) __PYX_ERR(9, 1702, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree__AsyncDataWriter.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__AsyncDataWriter.tp_dictoffset && __pyx_type_4lxml_5etree__AsyncDataWriter.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_5etree__AsyncDataWriter.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
- if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__AsyncDataWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__AsyncDataWriter) < 0) __PYX_ERR(9, 1703, __pyx_L1_error)
+ if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__AsyncDataWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__AsyncDataWriter) < 0) __PYX_ERR(9, 1702, __pyx_L1_error)
__pyx_ptype_4lxml_5etree__AsyncDataWriter = &__pyx_type_4lxml_5etree__AsyncDataWriter;
__pyx_vtabptr_4lxml_5etree__AsyncIncrementalFileWriter = &__pyx_vtable_4lxml_5etree__AsyncIncrementalFileWriter;
__pyx_vtable_4lxml_5etree__AsyncIncrementalFileWriter._flush = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__AsyncIncrementalFileWriter *))__pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush;
- if (PyType_Ready(&__pyx_type_4lxml_5etree__AsyncIncrementalFileWriter) < 0) __PYX_ERR(9, 1722, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree__AsyncIncrementalFileWriter) < 0) __PYX_ERR(9, 1721, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree__AsyncIncrementalFileWriter.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__AsyncIncrementalFileWriter.tp_dictoffset && __pyx_type_4lxml_5etree__AsyncIncrementalFileWriter.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_5etree__AsyncIncrementalFileWriter.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
- if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__AsyncIncrementalFileWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__AsyncIncrementalFileWriter) < 0) __PYX_ERR(9, 1722, __pyx_L1_error)
+ if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__AsyncIncrementalFileWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__AsyncIncrementalFileWriter) < 0) __PYX_ERR(9, 1721, __pyx_L1_error)
__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter = &__pyx_type_4lxml_5etree__AsyncIncrementalFileWriter;
- if (PyType_Ready(&__pyx_type_4lxml_5etree__AsyncFileWriterElement) < 0) __PYX_ERR(9, 1787, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree__AsyncFileWriterElement) < 0) __PYX_ERR(9, 1786, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree__AsyncFileWriterElement.tp_print = 0;
#endif
__pyx_type_4lxml_5etree__AsyncFileWriterElement.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree__AsyncFileWriterElement = &__pyx_type_4lxml_5etree__AsyncFileWriterElement;
- if (PyType_Ready(&__pyx_type_4lxml_5etree__FileWriterElement) < 0) __PYX_ERR(9, 1812, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree__FileWriterElement) < 0) __PYX_ERR(9, 1811, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree__FileWriterElement.tp_print = 0;
#endif
__pyx_type_4lxml_5etree__FileWriterElement.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree__FileWriterElement = &__pyx_type_4lxml_5etree__FileWriterElement;
- if (PyType_Ready(&__pyx_type_4lxml_5etree__MethodChanger) < 0) __PYX_ERR(9, 1836, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree__MethodChanger) < 0) __PYX_ERR(9, 1835, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree__MethodChanger.tp_print = 0;
#endif
__pyx_vtabptr_4lxml_5etree_DTD = &__pyx_vtable_4lxml_5etree_DTD;
__pyx_vtable_4lxml_5etree_DTD.__pyx_base = *__pyx_vtabptr_4lxml_5etree__Validator;
__pyx_type_4lxml_5etree_DTD.tp_base = __pyx_ptype_4lxml_5etree__Validator;
- if (PyType_Ready(&__pyx_type_4lxml_5etree_DTD) < 0) __PYX_ERR(20, 265, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree_DTD) < 0) __PYX_ERR(20, 270, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree_DTD.tp_print = 0;
#endif
}
#if CYTHON_COMPILING_IN_CPYTHON
{
- PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_5etree_DTD, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(20, 265, __pyx_L1_error)
+ PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_5etree_DTD, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(20, 270, __pyx_L1_error)
if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
__pyx_wrapperbase_4lxml_5etree_3DTD_14__call__ = *((PyWrapperDescrObject *)wrapper)->d_base;
__pyx_wrapperbase_4lxml_5etree_3DTD_14__call__.doc = __pyx_doc_4lxml_5etree_3DTD_14__call__;
}
}
#endif
- if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_DTD.tp_dict, __pyx_vtabptr_4lxml_5etree_DTD) < 0) __PYX_ERR(20, 265, __pyx_L1_error)
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DTD, (PyObject *)&__pyx_type_4lxml_5etree_DTD) < 0) __PYX_ERR(20, 265, __pyx_L1_error)
+ if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_DTD.tp_dict, __pyx_vtabptr_4lxml_5etree_DTD) < 0) __PYX_ERR(20, 270, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DTD, (PyObject *)&__pyx_type_4lxml_5etree_DTD) < 0) __PYX_ERR(20, 270, __pyx_L1_error)
__pyx_ptype_4lxml_5etree_DTD = &__pyx_type_4lxml_5etree_DTD;
__pyx_type_4lxml_5etree_RelaxNGError.tp_base = __pyx_ptype_4lxml_5etree_LxmlError;
if (PyType_Ready(&__pyx_type_4lxml_5etree_RelaxNGError) < 0) __PYX_ERR(21, 18, __pyx_L1_error)
__pyx_type_4lxml_5etree__MemDebug.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree__MemDebug = &__pyx_type_4lxml_5etree__MemDebug;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct___open_utf8_file) < 0) __PYX_ERR(9, 630, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct___open_utf8_file) < 0) __PYX_ERR(9, 629, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct___open_utf8_file.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct___open_utf8_file.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct___open_utf8_file = &__pyx_type_4lxml_5etree___pyx_scope_struct___open_utf8_file;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_1__iter_namespaces) < 0) __PYX_ERR(9, 1039, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_1__iter_namespaces) < 0) __PYX_ERR(9, 1038, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_1__iter_namespaces.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_1__iter_namespaces.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_1__iter_namespaces = &__pyx_type_4lxml_5etree___pyx_scope_struct_1__iter_namespaces;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_2___aenter__) < 0) __PYX_ERR(9, 1358, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_2___aenter__) < 0) __PYX_ERR(9, 1357, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_2___aenter__.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_2___aenter__.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_2___aenter__ = &__pyx_type_4lxml_5etree___pyx_scope_struct_2___aenter__;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_3___aexit__) < 0) __PYX_ERR(9, 1369, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_3___aexit__) < 0) __PYX_ERR(9, 1368, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_3___aexit__.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_3___aexit__.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_3___aexit__ = &__pyx_type_4lxml_5etree___pyx_scope_struct_3___aexit__;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_4_flush) < 0) __PYX_ERR(9, 1745, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_4_flush) < 0) __PYX_ERR(9, 1744, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_4_flush.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_4_flush.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_4_flush = &__pyx_type_4lxml_5etree___pyx_scope_struct_4_flush;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_5_write_declaration) < 0) __PYX_ERR(9, 1751, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_5_write_declaration) < 0) __PYX_ERR(9, 1750, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_5_write_declaration.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_5_write_declaration.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_5_write_declaration = &__pyx_type_4lxml_5etree___pyx_scope_struct_5_write_declaration;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_6_write_doctype) < 0) __PYX_ERR(9, 1757, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_6_write_doctype) < 0) __PYX_ERR(9, 1756, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_6_write_doctype.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_6_write_doctype.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_6_write_doctype = &__pyx_type_4lxml_5etree___pyx_scope_struct_6_write_doctype;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_7_write) < 0) __PYX_ERR(9, 1763, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_7_write) < 0) __PYX_ERR(9, 1762, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_7_write.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_7_write.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_7_write = &__pyx_type_4lxml_5etree___pyx_scope_struct_7_write;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_8__close) < 0) __PYX_ERR(9, 1776, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_8__close) < 0) __PYX_ERR(9, 1775, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_8__close.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_8__close.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_8__close = &__pyx_type_4lxml_5etree___pyx_scope_struct_8__close;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_9___aenter__) < 0) __PYX_ERR(9, 1796, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_9___aenter__) < 0) __PYX_ERR(9, 1795, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_9___aenter__.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_9___aenter__.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_9___aenter__ = &__pyx_type_4lxml_5etree___pyx_scope_struct_9___aenter__;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_10___aexit__) < 0) __PYX_ERR(9, 1802, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_10___aexit__) < 0) __PYX_ERR(9, 1801, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_10___aexit__.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_10___aexit__.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_10___aexit__ = &__pyx_type_4lxml_5etree___pyx_scope_struct_10___aexit__;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_11___aenter__) < 0) __PYX_ERR(9, 1864, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_11___aenter__) < 0) __PYX_ERR(9, 1863, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_11___aenter__.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_11___aenter__.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_11___aenter__ = &__pyx_type_4lxml_5etree___pyx_scope_struct_11___aenter__;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_12___aexit__) < 0) __PYX_ERR(9, 1868, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_12___aexit__) < 0) __PYX_ERR(9, 1867, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_12___aexit__.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_14_iterattributes.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_14_iterattributes = &__pyx_type_4lxml_5etree___pyx_scope_struct_14_iterattributes;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_15_iterelements) < 0) __PYX_ERR(20, 320, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_15_iterelements) < 0) __PYX_ERR(20, 325, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_15_iterelements.tp_print = 0;
#endif
__pyx_type_4lxml_5etree___pyx_scope_struct_15_iterelements.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
}
__pyx_ptype_4lxml_5etree___pyx_scope_struct_15_iterelements = &__pyx_type_4lxml_5etree___pyx_scope_struct_15_iterelements;
- if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_16_iterentities) < 0) __PYX_ERR(20, 333, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_5etree___pyx_scope_struct_16_iterentities) < 0) __PYX_ERR(20, 338, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_5etree___pyx_scope_struct_16_iterentities.tp_print = 0;
#endif
#endif
/*--- Library function declarations ---*/
/*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
+ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
PyEval_InitThreads();
#endif
- #endif
/*--- Module creation code ---*/
#if CYTHON_PEP489_MULTI_PHASE_INIT
__pyx_m = __pyx_pyinit_module;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":615
+ /* "src/lxml/serializer.pxi":614
*
* cdef object io_open
* from io import open # <<<<<<<<<<<<<<
*
* cdef object gzip
*/
- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 615, __pyx_L1_error)
+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 614, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_n_s_open);
__Pyx_GIVEREF(__pyx_n_s_open);
PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_open);
- __pyx_t_7 = __Pyx_Import(__pyx_n_s_io, __pyx_t_2, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 615, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_Import(__pyx_n_s_io, __pyx_t_2, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 614, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 615, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 614, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_open, __pyx_t_2) < 0) __PYX_ERR(9, 615, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_open, __pyx_t_2) < 0) __PYX_ERR(9, 614, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":618
+ /* "src/lxml/serializer.pxi":617
*
* cdef object gzip
* import gzip # <<<<<<<<<<<<<<
*
* cdef object getwriter
*/
- __pyx_t_7 = __Pyx_Import(__pyx_n_s_gzip, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 618, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_Import(__pyx_n_s_gzip, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 617, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_v_4lxml_5etree_gzip);
__Pyx_DECREF_SET(__pyx_v_4lxml_5etree_gzip, __pyx_t_7);
__Pyx_GIVEREF(__pyx_t_7);
__pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":621
+ /* "src/lxml/serializer.pxi":620
*
* cdef object getwriter
* from codecs import getwriter # <<<<<<<<<<<<<<
* cdef object utf8_writer = getwriter('utf8')
*
*/
- __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 621, __pyx_L1_error)
+ __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 620, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_n_s_getwriter);
__Pyx_GIVEREF(__pyx_n_s_getwriter);
PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_getwriter);
- __pyx_t_2 = __Pyx_Import(__pyx_n_s_codecs, __pyx_t_7, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 621, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_codecs, __pyx_t_7, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 620, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_getwriter); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 621, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_getwriter); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 620, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_v_4lxml_5etree_getwriter);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":622
+ /* "src/lxml/serializer.pxi":621
* cdef object getwriter
* from codecs import getwriter
* cdef object utf8_writer = getwriter('utf8') # <<<<<<<<<<<<<<
*
* cdef object contextmanager
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_4lxml_5etree_getwriter, __pyx_tuple__491, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 622, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_4lxml_5etree_getwriter, __pyx_tuple__491, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 621, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_v_4lxml_5etree_utf8_writer);
__Pyx_DECREF_SET(__pyx_v_4lxml_5etree_utf8_writer, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":625
+ /* "src/lxml/serializer.pxi":624
*
* cdef object contextmanager
* from contextlib import contextmanager # <<<<<<<<<<<<<<
*
* cdef object _open_utf8_file
*/
- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 625, __pyx_L1_error)
+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 624, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_n_s_contextmanager);
__Pyx_GIVEREF(__pyx_n_s_contextmanager);
PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_contextmanager);
- __pyx_t_7 = __Pyx_Import(__pyx_n_s_contextlib, __pyx_t_2, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 625, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_Import(__pyx_n_s_contextlib, __pyx_t_2, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 624, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_contextmanager); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 625, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_contextmanager); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 624, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_v_4lxml_5etree_contextmanager);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":630
+ /* "src/lxml/serializer.pxi":629
*
* @contextmanager
* def _open_utf8_file(file, compression=0): # <<<<<<<<<<<<<<
* if _isString(file):
* if compression:
*/
- __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_51_open_utf8_file, 0, __pyx_n_s_open_utf8_file, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 630, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_51_open_utf8_file, 0, __pyx_n_s_open_utf8_file, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 629, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__493);
- /* "src/lxml/serializer.pxi":629
+ /* "src/lxml/serializer.pxi":628
* cdef object _open_utf8_file
*
* @contextmanager # <<<<<<<<<<<<<<
* def _open_utf8_file(file, compression=0):
* if _isString(file):
*/
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_v_4lxml_5etree_contextmanager, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 629, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_v_4lxml_5etree_contextmanager, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 628, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XGOTREF(__pyx_v_4lxml_5etree__open_utf8_file);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- /* "src/lxml/serializer.pxi":896
+ /* "src/lxml/serializer.pxi":895
* # C14N 2.0
*
* def canonicalize(xml_data=None, *, out=None, from_file=None, **options): # <<<<<<<<<<<<<<
* """Convert XML to its C14N 2.0 serialised form.
*
*/
- __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 896, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 895, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_out, ((PyObject *)Py_None)) < 0) __PYX_ERR(9, 896, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_from_file, ((PyObject *)Py_None)) < 0) __PYX_ERR(9, 896, __pyx_L1_error)
- __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_54canonicalize, 0, __pyx_n_s_canonicalize, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__495)); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 896, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_out, ((PyObject *)Py_None)) < 0) __PYX_ERR(9, 895, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_from_file, ((PyObject *)Py_None)) < 0) __PYX_ERR(9, 895, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_54canonicalize, 0, __pyx_n_s_canonicalize, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__495)); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 895, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__496);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_7, __pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_canonicalize, __pyx_t_7) < 0) __PYX_ERR(9, 896, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_canonicalize, __pyx_t_7) < 0) __PYX_ERR(9, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "src/lxml/serializer.pxi":963
+ /* "src/lxml/serializer.pxi":962
*
*
* cdef object _looks_like_prefix_name = re.compile('^\w+:\w+$', re.UNICODE).match # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 963, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 962, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_UNICODE); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 963, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_UNICODE); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 962, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 963, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 962, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_kp_s_w_w);
__Pyx_GIVEREF(__pyx_kp_s_w_w);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
__pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 963, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 962, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_match); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 963, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_match); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 962, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XGOTREF(__pyx_v_4lxml_5etree__looks_like_prefix_name);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- /* "src/lxml/serializer.pxi":1039
+ /* "src/lxml/serializer.pxi":1038
* self._root_done = False
*
* def _iter_namespaces(self, ns_stack): # <<<<<<<<<<<<<<
* for namespaces in reversed(ns_stack):
* if namespaces: # almost no element declares new namespaces
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_3_iter_namespaces, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget__iter_namespace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1039, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_3_iter_namespaces, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget__iter_namespace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1038, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_iter_namespaces, __pyx_t_1) < 0) __PYX_ERR(9, 1039, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_iter_namespaces, __pyx_t_1) < 0) __PYX_ERR(9, 1038, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_C14NWriterTarget);
- /* "src/lxml/serializer.pxi":1088
+ /* "src/lxml/serializer.pxi":1087
* raise ValueError(f'Namespace "{uri}" of name "{tag}" is not declared in scope')
*
* def data(self, data): # <<<<<<<<<<<<<<
* if not self._ignored_depth:
* self._data.append(data)
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_6data, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_data, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__499)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1088, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_6data, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_data, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__499)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1087, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_data, __pyx_t_1) < 0) __PYX_ERR(9, 1088, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_data, __pyx_t_1) < 0) __PYX_ERR(9, 1087, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_C14NWriterTarget);
- /* "src/lxml/serializer.pxi":1106
+ /* "src/lxml/serializer.pxi":1105
* self._write(_escape_cdata_c14n(data))
*
* def start_ns(self, prefix, uri): # <<<<<<<<<<<<<<
* if self._ignored_depth:
* return
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_8start_ns, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_start_ns, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__501)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1106, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_8start_ns, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_start_ns, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__501)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1105, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_start_ns_2, __pyx_t_1) < 0) __PYX_ERR(9, 1106, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_start_ns_2, __pyx_t_1) < 0) __PYX_ERR(9, 1105, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_C14NWriterTarget);
- /* "src/lxml/serializer.pxi":1114
+ /* "src/lxml/serializer.pxi":1113
* self._ns_stack[-1].append((uri, prefix))
*
* def start(self, tag, attrs): # <<<<<<<<<<<<<<
* if self._exclude_tags is not None and (
* self._ignored_depth or tag in self._exclude_tags):
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_10start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_start, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__503)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1114, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_10start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_start, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__503)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1113, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_start, __pyx_t_1) < 0) __PYX_ERR(9, 1114, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_start, __pyx_t_1) < 0) __PYX_ERR(9, 1113, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_C14NWriterTarget);
- /* "src/lxml/serializer.pxi":1199
+ /* "src/lxml/serializer.pxi":1198
* self._ns_stack.append([])
*
* def end(self, tag): # <<<<<<<<<<<<<<
* if self._ignored_depth:
* self._ignored_depth -= 1
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_12end, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_end, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__505)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1199, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_12end, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_end, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__505)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_end, __pyx_t_1) < 0) __PYX_ERR(9, 1199, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_end, __pyx_t_1) < 0) __PYX_ERR(9, 1198, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_C14NWriterTarget);
- /* "src/lxml/serializer.pxi":1211
+ /* "src/lxml/serializer.pxi":1210
* self._ns_stack.pop()
*
* def comment(self, text): # <<<<<<<<<<<<<<
* if not self._with_comments:
* return
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_14comment, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_comment, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__507)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1211, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_14comment, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_comment, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__507)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1210, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_comment, __pyx_t_1) < 0) __PYX_ERR(9, 1211, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_comment, __pyx_t_1) < 0) __PYX_ERR(9, 1210, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_C14NWriterTarget);
- /* "src/lxml/serializer.pxi":1224
+ /* "src/lxml/serializer.pxi":1223
* self._write(u'\n')
*
* def pi(self, target, data): # <<<<<<<<<<<<<<
* if self._ignored_depth:
* return
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_16pi, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_pi, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__509)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1224, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_16pi, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_pi, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__509)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1223, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_pi, __pyx_t_1) < 0) __PYX_ERR(9, 1224, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_pi, __pyx_t_1) < 0) __PYX_ERR(9, 1223, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_C14NWriterTarget);
- /* "src/lxml/serializer.pxi":1236
+ /* "src/lxml/serializer.pxi":1235
* self._write(u'\n')
*
* def close(self): # <<<<<<<<<<<<<<
* return None
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_18close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_close, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__511)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1236, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16C14NWriterTarget_18close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_C14NWriterTarget_close, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__511)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1235, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_close, __pyx_t_1) < 0) __PYX_ERR(9, 1236, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_C14NWriterTarget->tp_dict, __pyx_n_s_close, __pyx_t_1) < 0) __PYX_ERR(9, 1235, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_C14NWriterTarget);
- /* "src/lxml/serializer.pxi":1343
+ /* "src/lxml/serializer.pxi":1342
* self.method = OUTPUT_METHOD_XML
*
* def __enter__(self): # <<<<<<<<<<<<<<
* assert self.output_file is not None
* self.writer = _IncrementalFileWriter(
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_7xmlfile_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__513)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1343, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_7xmlfile_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__513)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1342, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_enter, __pyx_t_1) < 0) __PYX_ERR(9, 1343, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_enter, __pyx_t_1) < 0) __PYX_ERR(9, 1342, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_xmlfile);
- /* "src/lxml/serializer.pxi":1350
+ /* "src/lxml/serializer.pxi":1349
* return self.writer
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
* if self.writer is not None:
* old_writer, self.writer = self.writer, None
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_7xmlfile_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__515)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1350, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_7xmlfile_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__515)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_exit, __pyx_t_1) < 0) __PYX_ERR(9, 1350, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_exit, __pyx_t_1) < 0) __PYX_ERR(9, 1349, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_xmlfile);
- /* "src/lxml/serializer.pxi":1358
+ /* "src/lxml/serializer.pxi":1357
* self.output_file = None
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
* assert self.output_file is not None
* if isinstance(self.output_file, basestring):
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_7xmlfile_7__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1358, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_7xmlfile_7__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1357, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_aenter, __pyx_t_1) < 0) __PYX_ERR(9, 1358, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_aenter, __pyx_t_1) < 0) __PYX_ERR(9, 1357, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_xmlfile);
- /* "src/lxml/serializer.pxi":1369
+ /* "src/lxml/serializer.pxi":1368
* return self.async_writer
*
* async def __aexit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
* if self.async_writer is not None:
* old_writer, self.async_writer = self.async_writer, None
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_7xmlfile_10__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1369, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_7xmlfile_10__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1368, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_aexit, __pyx_t_1) < 0) __PYX_ERR(9, 1369, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_aexit, __pyx_t_1) < 0) __PYX_ERR(9, 1368, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_xmlfile);
- /* "src/lxml/serializer.pxi":1426
+ /* "src/lxml/serializer.pxi":1425
* tree.xmlOutputBufferClose(self._c_out)
*
* def write_declaration(self, version=None, standalone=None, doctype=None): # <<<<<<<<<<<<<<
* """write_declaration(self, version=None, standalone=None, doctype=None)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_5write_declaration, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write_dec, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__519)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1426, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_5write_declaration, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write_dec, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__519)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1425, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_write_declaration, __pyx_t_1) < 0) __PYX_ERR(9, 1426, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_write_declaration, __pyx_t_1) < 0) __PYX_ERR(9, 1425, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__IncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1455
+ /* "src/lxml/serializer.pxi":1454
* self._handle_error(self._c_out.error)
*
* def write_doctype(self, doctype): # <<<<<<<<<<<<<<
* """write_doctype(self, doctype)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_7write_doctype, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write_doc, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__521)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1455, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_7write_doctype, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write_doc, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__521)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1454, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_write_doctype, __pyx_t_1) < 0) __PYX_ERR(9, 1455, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_write_doctype, __pyx_t_1) < 0) __PYX_ERR(9, 1454, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__IncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1472
+ /* "src/lxml/serializer.pxi":1471
* self._handle_error(self._c_out.error)
*
* def method(self, method): # <<<<<<<<<<<<<<
* """method(self, method)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_9method, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_method, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__523)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1472, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_9method, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_method, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__523)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1471, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_method, __pyx_t_1) < 0) __PYX_ERR(9, 1472, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_method, __pyx_t_1) < 0) __PYX_ERR(9, 1471, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__IncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1482
+ /* "src/lxml/serializer.pxi":1481
* return _MethodChanger(self, c_method)
*
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra): # <<<<<<<<<<<<<<
* """element(self, tag, attrib=None, nsmap=None, method, **_extra)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_11element, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_element, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__525)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1482, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_11element, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_element, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__525)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1481, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_element, __pyx_t_1) < 0) __PYX_ERR(9, 1482, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_element, __pyx_t_1) < 0) __PYX_ERR(9, 1481, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__IncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1619
+ /* "src/lxml/serializer.pxi":1618
* return flat_namespaces_map, new_namespaces
*
* def write(self, *args, bint with_tail=True, bint pretty_print=False, method=None): # <<<<<<<<<<<<<<
* """write(self, *args, with_tail=True, pretty_print=False, method=None)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_13write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__527)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1619, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_13write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__527)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1618, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_write, __pyx_t_1) < 0) __PYX_ERR(9, 1619, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_write, __pyx_t_1) < 0) __PYX_ERR(9, 1618, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__IncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1666
+ /* "src/lxml/serializer.pxi":1665
* self._handle_error(self._c_out.error)
*
* def flush(self): # <<<<<<<<<<<<<<
* """flush(self)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_15flush, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_flush, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__529)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1666, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_15flush, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_flush, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__529)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1665, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_flush, __pyx_t_1) < 0) __PYX_ERR(9, 1666, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_flush, __pyx_t_1) < 0) __PYX_ERR(9, 1665, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__IncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1713
+ /* "src/lxml/serializer.pxi":1712
* return data
*
* def write(self, data): # <<<<<<<<<<<<<<
* self._data.append(data)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16_AsyncDataWriter_3write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncDataWriter_write, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__531)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1713, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16_AsyncDataWriter_3write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncDataWriter_write, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__531)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1712, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncDataWriter->tp_dict, __pyx_n_s_write, __pyx_t_1) < 0) __PYX_ERR(9, 1713, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncDataWriter->tp_dict, __pyx_n_s_write, __pyx_t_1) < 0) __PYX_ERR(9, 1712, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncDataWriter);
- /* "src/lxml/serializer.pxi":1716
+ /* "src/lxml/serializer.pxi":1715
* self._data.append(data)
*
* def close(self): # <<<<<<<<<<<<<<
* pass
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16_AsyncDataWriter_5close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncDataWriter_close, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__533)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1716, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_16_AsyncDataWriter_5close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncDataWriter_close, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__533)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1715, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncDataWriter->tp_dict, __pyx_n_s_close, __pyx_t_1) < 0) __PYX_ERR(9, 1716, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncDataWriter->tp_dict, __pyx_n_s_close, __pyx_t_1) < 0) __PYX_ERR(9, 1715, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncDataWriter);
- /* "src/lxml/serializer.pxi":1745
+ /* "src/lxml/serializer.pxi":1744
* return None
*
* async def flush(self): # <<<<<<<<<<<<<<
* self._writer.flush()
* data = self._buffer.collect()
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_3flush, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_flus, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1745, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_3flush, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_flus, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1744, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_flush, __pyx_t_1) < 0) __PYX_ERR(9, 1745, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_flush, __pyx_t_1) < 0) __PYX_ERR(9, 1744, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1751
+ /* "src/lxml/serializer.pxi":1750
* await self._async_outfile.write(data)
*
* async def write_declaration(self, version=None, standalone=None, doctype=None): # <<<<<<<<<<<<<<
* self._writer.write_declaration(version, standalone, doctype)
* data = self._flush()
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_6write_declaration, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1751, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_6write_declaration, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1750, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_write_declaration, __pyx_t_1) < 0) __PYX_ERR(9, 1751, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_write_declaration, __pyx_t_1) < 0) __PYX_ERR(9, 1750, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1757
+ /* "src/lxml/serializer.pxi":1756
* await self._async_outfile.write(data)
*
* async def write_doctype(self, doctype): # <<<<<<<<<<<<<<
* self._writer.write_doctype(doctype)
* data = self._flush()
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_9write_doctype, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ_2, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1757, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_9write_doctype, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ_2, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1756, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_write_doctype, __pyx_t_1) < 0) __PYX_ERR(9, 1757, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_write_doctype, __pyx_t_1) < 0) __PYX_ERR(9, 1756, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1763
+ /* "src/lxml/serializer.pxi":1762
* await self._async_outfile.write(data)
*
* async def write(self, *args, with_tail=True, pretty_print=False, method=None): # <<<<<<<<<<<<<<
* self._writer.write(*args, with_tail=with_tail, pretty_print=pretty_print, method=method)
* data = self._flush()
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_12write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ_3, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1763, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_12write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ_3, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1762, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_write, __pyx_t_1) < 0) __PYX_ERR(9, 1763, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_write, __pyx_t_1) < 0) __PYX_ERR(9, 1762, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1769
+ /* "src/lxml/serializer.pxi":1768
* await self._async_outfile.write(data)
*
* def method(self, method): # <<<<<<<<<<<<<<
* return self._writer.method(method)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_15method, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_meth, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__539)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1769, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_15method, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_meth, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__539)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1768, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_method, __pyx_t_1) < 0) __PYX_ERR(9, 1769, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_method, __pyx_t_1) < 0) __PYX_ERR(9, 1768, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1772
+ /* "src/lxml/serializer.pxi":1771
* return self._writer.method(method)
*
* def element(self, tag, attrib=None, nsmap=None, method=None, **_extra): # <<<<<<<<<<<<<<
* element_writer = self._writer.element(tag, attrib, nsmap, method, **_extra)
* return _AsyncFileWriterElement(element_writer, self)
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_17element, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_elem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__541)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1772, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_17element, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_elem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__541)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1771, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_element, __pyx_t_1) < 0) __PYX_ERR(9, 1772, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_element, __pyx_t_1) < 0) __PYX_ERR(9, 1771, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1776
+ /* "src/lxml/serializer.pxi":1775
* return _AsyncFileWriterElement(element_writer, self)
*
* async def _close(self, bint raise_on_error): # <<<<<<<<<<<<<<
* self._writer._close(raise_on_error)
* data = self._buffer.collect()
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_19_close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter__clo, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1776, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_19_close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter__clo, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1775, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_close_2, __pyx_t_1) < 0) __PYX_ERR(9, 1776, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_close_2, __pyx_t_1) < 0) __PYX_ERR(9, 1775, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter);
- /* "src/lxml/serializer.pxi":1796
+ /* "src/lxml/serializer.pxi":1795
* self._writer = writer
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
* self._element_writer.__enter__()
* data = self._writer._flush()
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_23_AsyncFileWriterElement_3__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncFileWriterElement___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1796, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_23_AsyncFileWriterElement_3__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncFileWriterElement___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1795, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncFileWriterElement->tp_dict, __pyx_n_s_aenter, __pyx_t_1) < 0) __PYX_ERR(9, 1796, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncFileWriterElement->tp_dict, __pyx_n_s_aenter, __pyx_t_1) < 0) __PYX_ERR(9, 1795, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncFileWriterElement);
- /* "src/lxml/serializer.pxi":1802
+ /* "src/lxml/serializer.pxi":1801
* await self._writer._async_outfile.write(data)
*
* async def __aexit__(self, *args): # <<<<<<<<<<<<<<
* self._element_writer.__exit__(*args)
* data = self._writer._flush()
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_23_AsyncFileWriterElement_6__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncFileWriterElement___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1802, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_23_AsyncFileWriterElement_6__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncFileWriterElement___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1801, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncFileWriterElement->tp_dict, __pyx_n_s_aexit, __pyx_t_1) < 0) __PYX_ERR(9, 1802, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncFileWriterElement->tp_dict, __pyx_n_s_aexit, __pyx_t_1) < 0) __PYX_ERR(9, 1801, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__AsyncFileWriterElement);
- /* "src/lxml/serializer.pxi":1824
+ /* "src/lxml/serializer.pxi":1823
* self._old_method = writer._method
*
* def __enter__(self): # <<<<<<<<<<<<<<
* self._writer._method = self._new_method
* self._writer._write_start_element(self._element)
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_18_FileWriterElement_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FileWriterElement___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__546)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1824, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_18_FileWriterElement_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FileWriterElement___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__546)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1823, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__FileWriterElement->tp_dict, __pyx_n_s_enter, __pyx_t_1) < 0) __PYX_ERR(9, 1824, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__FileWriterElement->tp_dict, __pyx_n_s_enter, __pyx_t_1) < 0) __PYX_ERR(9, 1823, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__FileWriterElement);
- /* "src/lxml/serializer.pxi":1828
+ /* "src/lxml/serializer.pxi":1827
* self._writer._write_start_element(self._element)
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
* self._writer._write_end_element(self._element)
* self._writer._method = self._old_method
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_18_FileWriterElement_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FileWriterElement___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__548)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1828, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_18_FileWriterElement_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FileWriterElement___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__548)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1827, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__FileWriterElement->tp_dict, __pyx_n_s_exit, __pyx_t_1) < 0) __PYX_ERR(9, 1828, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__FileWriterElement->tp_dict, __pyx_n_s_exit, __pyx_t_1) < 0) __PYX_ERR(9, 1827, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__FileWriterElement);
- /* "src/lxml/serializer.pxi":1850
+ /* "src/lxml/serializer.pxi":1849
* self._exited = False
*
* def __enter__(self): # <<<<<<<<<<<<<<
* if self._entered:
* raise LxmlSyntaxError("Inconsistent enter action in context manager")
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_14_MethodChanger_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__550)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1850, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_14_MethodChanger_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__550)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1849, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_enter, __pyx_t_1) < 0) __PYX_ERR(9, 1850, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_enter, __pyx_t_1) < 0) __PYX_ERR(9, 1849, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__MethodChanger);
- /* "src/lxml/serializer.pxi":1856
+ /* "src/lxml/serializer.pxi":1855
* self._entered = True
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
* if self._exited:
* raise LxmlSyntaxError("Inconsistent exit action in context manager")
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_14_MethodChanger_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__552)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1856, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_14_MethodChanger_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__552)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_exit, __pyx_t_1) < 0) __PYX_ERR(9, 1856, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_exit, __pyx_t_1) < 0) __PYX_ERR(9, 1855, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__MethodChanger);
- /* "src/lxml/serializer.pxi":1864
+ /* "src/lxml/serializer.pxi":1863
* self._exited = True
*
* async def __aenter__(self): # <<<<<<<<<<<<<<
* # for your async convenience
* return self.__enter__()
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_14_MethodChanger_7__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1864, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_14_MethodChanger_7__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1863, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_aenter, __pyx_t_1) < 0) __PYX_ERR(9, 1864, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_aenter, __pyx_t_1) < 0) __PYX_ERR(9, 1863, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__MethodChanger);
- /* "src/lxml/serializer.pxi":1868
+ /* "src/lxml/serializer.pxi":1867
* return self.__enter__()
*
* async def __aexit__(self, *args): # <<<<<<<<<<<<<<
* # for your async convenience
* return self.__exit__(*args)
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_14_MethodChanger_10__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__92)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1868, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_14_MethodChanger_10__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__92)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1867, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_aexit, __pyx_t_1) < 0) __PYX_ERR(9, 1868, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_aexit, __pyx_t_1) < 0) __PYX_ERR(9, 1867, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__MethodChanger);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree__DTDElementDecl);
- /* "src/lxml/dtd.pxi":320
+ /* "src/lxml/dtd.pxi":325
* return funicodeOrNone(self._c_dtd.SystemID)
*
* def iterelements(self): # <<<<<<<<<<<<<<
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
* while c_node is not NULL:
*/
- __pyx_t_15 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_3DTD_3iterelements, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_iterelements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__105)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 320, __pyx_L1_error)
+ __pyx_t_15 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_3DTD_3iterelements, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_iterelements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__105)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_iterelements, __pyx_t_15) < 0) __PYX_ERR(20, 320, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_iterelements, __pyx_t_15) < 0) __PYX_ERR(20, 325, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_DTD);
- /* "src/lxml/dtd.pxi":330
+ /* "src/lxml/dtd.pxi":335
* c_node = c_node.next
*
* def elements(self): # <<<<<<<<<<<<<<
* return list(self.iterelements())
*
*/
- __pyx_t_15 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_3DTD_6elements, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_elements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__670)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 330, __pyx_L1_error)
+ __pyx_t_15 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_3DTD_6elements, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_elements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__670)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 335, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_elements, __pyx_t_15) < 0) __PYX_ERR(20, 330, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_elements, __pyx_t_15) < 0) __PYX_ERR(20, 335, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_DTD);
- /* "src/lxml/dtd.pxi":333
+ /* "src/lxml/dtd.pxi":338
* return list(self.iterelements())
*
* def iterentities(self): # <<<<<<<<<<<<<<
* cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
* while c_node is not NULL:
*/
- __pyx_t_15 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_3DTD_8iterentities, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_iterentities, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 333, __pyx_L1_error)
+ __pyx_t_15 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_3DTD_8iterentities, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_iterentities, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 338, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_iterentities, __pyx_t_15) < 0) __PYX_ERR(20, 333, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_iterentities, __pyx_t_15) < 0) __PYX_ERR(20, 338, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_DTD);
- /* "src/lxml/dtd.pxi":343
+ /* "src/lxml/dtd.pxi":348
* c_node = c_node.next
*
* def entities(self): # <<<<<<<<<<<<<<
* return list(self.iterentities())
*
*/
- __pyx_t_15 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_3DTD_11entities, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_entities, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__673)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 343, __pyx_L1_error)
+ __pyx_t_15 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_3DTD_11entities, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_entities, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__673)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 348, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_entities, __pyx_t_15) < 0) __PYX_ERR(20, 343, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_entities, __pyx_t_15) < 0) __PYX_ERR(20, 348, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
PyType_Modified(__pyx_ptype_4lxml_5etree_DTD);
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
- ternaryfunc call = func->ob_type->tp_call;
+ ternaryfunc call = Py_TYPE(func)->tp_call;
if (unlikely(!call))
return PyObject_Call(func, arg, kw);
if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
result = PyFrozenSet_New(it);
if (unlikely(!result))
return NULL;
- if (likely(PySet_GET_SIZE(result)))
+ if ((PY_VERSION_HEX >= 0x031000A1) || likely(PySet_GET_SIZE(result)))
return result;
Py_DECREF(result);
#endif
}
#endif
Py_CLEAR(gen->gi_code);
+ Py_CLEAR(gen->gi_frame);
Py_CLEAR(gen->gi_name);
Py_CLEAR(gen->gi_qualname);
Py_CLEAR(gen->gi_modulename);
if (PyObject_CallFinalizerFromDealloc(self))
#else
Py_TYPE(gen)->tp_del(self);
- if (self->ob_refcnt > 0)
+ if (Py_REFCNT(self) > 0)
#endif
{
return;
}
__Pyx_ErrRestore(error_type, error_value, error_traceback);
#if !CYTHON_USE_TP_FINALIZE
- assert(self->ob_refcnt > 0);
+ assert(Py_REFCNT(self) > 0);
if (--self->ob_refcnt == 0) {
return;
}
{
- Py_ssize_t refcnt = self->ob_refcnt;
+ Py_ssize_t refcnt = Py_REFCNT(self);
_Py_NewReference(self);
__Pyx_SET_REFCNT(self, refcnt);
}
#if CYTHON_COMPILING_IN_CPYTHON
- assert(PyType_IS_GC(self->ob_type) &&
+ assert(PyType_IS_GC(Py_TYPE(self)) &&
_Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
_Py_DEC_REFTOTAL;
#endif
Py_XDECREF(tmp);
return 0;
}
+static PyObject *
+__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
+{
+ PyObject *frame = self->gi_frame;
+ if (!frame) {
+ if (unlikely(!self->gi_code)) {
+ Py_RETURN_NONE;
+ }
+ frame = (PyObject *) PyFrame_New(
+ PyThreadState_Get(), /*PyThreadState *tstate,*/
+ (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/
+ __pyx_d, /*PyObject *globals,*/
+ 0 /*PyObject *locals*/
+ );
+ if (unlikely(!frame))
+ return NULL;
+ self->gi_frame = frame;
+ }
+ Py_INCREF(frame);
+ return frame;
+}
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
PyObject *name, PyObject *qualname, PyObject *module_name) {
gen->gi_modulename = module_name;
Py_XINCREF(code);
gen->gi_code = code;
+ gen->gi_frame = NULL;
PyObject_GC_Track(gen);
return gen;
}
(char*) PyDoc_STR("name of the generator"), 0},
{(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
(char*) PyDoc_STR("qualified name of the generator"), 0},
+ {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
+ (char*) PyDoc_STR("Frame of the generator"), 0},
{0, 0, 0, 0, 0}
};
static PyTypeObject __pyx_GeneratorType_type = {
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
- return PyUnicode_FromString(m->func.m_ml->ml_name);
+ Py_INCREF(m->func_qualname);
+ return m->func_qualname;
#else
return PyString_FromString(m->func.m_ml->ml_name);
#endif
return __Pyx__Coroutine_await(coroutine);
}
#endif
-static PyObject *
-__Pyx_Coroutine_get_frame(CYTHON_UNUSED __pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
-{
- Py_RETURN_NONE;
-}
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) {
PyObject* result;
}
}
+/* CIntToPy */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+ const long neg_one = (long) -1, const_zero = (long) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
+ const int is_unsigned = neg_one > const_zero;
+ if (is_unsigned) {
+ if (sizeof(long) < sizeof(long)) {
+ return PyInt_FromLong((long) value);
+ } else if (sizeof(long) <= sizeof(unsigned long)) {
+ return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
+ }
+ } else {
+ if (sizeof(long) <= sizeof(long)) {
+ return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
+ return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
+ }
+ }
+ {
+ int one = 1; int little = (int)*(unsigned char *)&one;
+ unsigned char *bytes = (unsigned char *)&value;
+ return _PyLong_FromByteArray(bytes, sizeof(long),
+ little, !is_unsigned);
+ }
+}
+
/* CIntFromPy */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
return (size_t) -1;
}
-/* CIntToPy */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
-#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wconversion"
-#endif
- const long neg_one = (long) -1, const_zero = (long) 0;
-#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
-#pragma GCC diagnostic pop
-#endif
- const int is_unsigned = neg_one > const_zero;
- if (is_unsigned) {
- if (sizeof(long) < sizeof(long)) {
- return PyInt_FromLong((long) value);
- } else if (sizeof(long) <= sizeof(unsigned long)) {
- return PyLong_FromUnsignedLong((unsigned long) value);
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-#endif
- }
- } else {
- if (sizeof(long) <= sizeof(long)) {
- return PyInt_FromLong((long) value);
-#ifdef HAVE_LONG_LONG
- } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
- return PyLong_FromLongLong((PY_LONG_LONG) value);
-#endif
- }
- }
- {
- int one = 1; int little = (int)*(unsigned char *)&one;
- unsigned char *bytes = (unsigned char *)&value;
- return _PyLong_FromByteArray(bytes, sizeof(long),
- little, !is_unsigned);
- }
-}
-
/* CIntFromPy */
static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
#ifndef __PYX_HAVE__lxml__etree
#define __PYX_HAVE__lxml__etree
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
#ifndef __PYX_HAVE_API__lxml__etree
#define __PYX_HAVE_API__lxml__etree
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata
{
"distutils": {
"define_macros": [
[
- "CYTHON_CLINE_IN_TRACEBACK",
+ "CYTHON_CLINE_IN_TRACEBACK",
"0"
]
- ],
- "extra_compile_args": [
- "-w"
- ],
+ ],
"include_dirs": [
- "/usr/include/libxml2",
- "src",
+ "/usr/include/libxml2",
+ "src",
"src/lxml/includes"
- ],
- "name": "lxml.html.clean",
+ ],
+ "name": "lxml.html.clean",
"sources": [
"src/lxml/html/clean.py"
]
- },
+ },
"module_name": "lxml.html.clean"
}
END: Cython Metadata */
+#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
+#endif /* PY_SSIZE_T_CLEAN */
#include "Python.h"
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_29_22"
-#define CYTHON_HEX_VERSION 0x001D16F0
+#define CYTHON_ABI "0_29_24"
+#define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 1
#include <stddef.h>
#ifndef offsetof
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
#define CYTHON_PEP393_ENABLED 1
+ #if defined(PyUnicode_IS_READY)
#define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
0 : _PyUnicode_Ready((PyObject *)(op)))
+ #else
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #endif
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
#define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
#if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
#else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
#endif
int __pyx_t_3;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ int __pyx_t_7;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
__pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_v_kw); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 693, __pyx_L1_error)
+ __pyx_t_5 = PyDict_Copy(__pyx_v_kw); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 693, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "lxml/html/clean.py":694
* doc = copy.deepcopy(html)
* autolink_html.__doc__ = autolink.__doc__
*/
__Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_transform_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 694, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = NULL;
- __pyx_t_6 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_transform_result); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 694, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = NULL;
+ __pyx_t_7 = 0;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- __pyx_t_6 = 1;
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ __pyx_t_7 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_1, ((PyObject *)__pyx_v_result_type), __pyx_v_doc};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 694, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_5);
+ if (PyFunction_Check(__pyx_t_5)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_result_type), __pyx_v_doc};
+ __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 694, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GOTREF(__pyx_t_6);
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_1, ((PyObject *)__pyx_v_result_type), __pyx_v_doc};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 694, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_5);
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_result_type), __pyx_v_doc};
+ __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 694, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GOTREF(__pyx_t_6);
} else
#endif
{
- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 694, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
+ __pyx_t_1 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (__pyx_t_4) {
+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_INCREF(((PyObject *)__pyx_v_result_type));
__Pyx_GIVEREF(((PyObject *)__pyx_v_result_type));
- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_result_type));
+ PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_7, ((PyObject *)__pyx_v_result_type));
__Pyx_INCREF(__pyx_v_doc);
__Pyx_GIVEREF(__pyx_v_doc);
- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_doc);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 694, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_7, __pyx_v_doc);
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 694, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
goto __pyx_L0;
/* "lxml/html/clean.py":687
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("lxml.html.clean.autolink_html", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ int __pyx_t_5;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
__pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_v_kw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 749, __pyx_L1_error)
+ __pyx_t_2 = PyDict_Copy(__pyx_v_kw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 749, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "lxml/html/clean.py":750
* doc = fromstring(html)
* def _break_text(text, max_width, break_character):
*/
__Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_transform_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 750, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = NULL;
- __pyx_t_4 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_transform_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = NULL;
+ __pyx_t_5 = 0;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_4 = 1;
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ __pyx_t_5 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_1, ((PyObject *)__pyx_v_result_type), __pyx_v_doc};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
+ if (PyFunction_Check(__pyx_t_2)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_result_type), __pyx_v_doc};
+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GOTREF(__pyx_t_4);
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_1, ((PyObject *)__pyx_v_result_type), __pyx_v_doc};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_result_type), __pyx_v_doc};
+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GOTREF(__pyx_t_4);
} else
#endif
{
- __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 750, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
+ __pyx_t_1 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (__pyx_t_3) {
+ __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(((PyObject *)__pyx_v_result_type));
__Pyx_GIVEREF(((PyObject *)__pyx_v_result_type));
- PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_result_type));
+ PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_5, ((PyObject *)__pyx_v_result_type));
__Pyx_INCREF(__pyx_v_doc);
__Pyx_GIVEREF(__pyx_v_doc);
- PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_doc);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_5, __pyx_v_doc);
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "lxml/html/clean.py":746
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("lxml.html.clean.word_break_html", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
#endif
/*--- Library function declarations ---*/
/*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
+ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
PyEval_InitThreads();
#endif
- #endif
/*--- Module creation code ---*/
#if CYTHON_PEP489_MULTI_PHASE_INIT
__pyx_m = __pyx_pyinit_module;
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
- ternaryfunc call = func->ob_type->tp_call;
+ ternaryfunc call = Py_TYPE(func)->tp_call;
if (unlikely(!call))
return PyObject_Call(func, arg, kw);
if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
result = PyFrozenSet_New(it);
if (unlikely(!result))
return NULL;
- if (likely(PySet_GET_SIZE(result)))
+ if ((PY_VERSION_HEX >= 0x031000A1) || likely(PySet_GET_SIZE(result)))
return result;
Py_DECREF(result);
#endif
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
- return PyUnicode_FromString(m->func.m_ml->ml_name);
+ Py_INCREF(m->func_qualname);
+ return m->func_qualname;
#else
return PyString_FromString(m->func.m_ml->ml_name);
#endif
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata
{
"distutils": {
"define_macros": [
[
- "CYTHON_CLINE_IN_TRACEBACK",
+ "CYTHON_CLINE_IN_TRACEBACK",
"0"
]
- ],
- "extra_compile_args": [
- "-w"
- ],
+ ],
"include_dirs": [
- "/usr/include/libxml2",
- "src",
+ "/usr/include/libxml2",
+ "src",
"src/lxml/includes"
- ],
- "name": "lxml.html.diff",
+ ],
+ "name": "lxml.html.diff",
"sources": [
"src/lxml/html/diff.py"
]
- },
+ },
"module_name": "lxml.html.diff"
}
END: Cython Metadata */
+#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
+#endif /* PY_SSIZE_T_CLEAN */
#include "Python.h"
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_29_22"
-#define CYTHON_HEX_VERSION 0x001D16F0
+#define CYTHON_ABI "0_29_24"
+#define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 1
#include <stddef.h>
#ifndef offsetof
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
#define CYTHON_PEP393_ENABLED 1
+ #if defined(PyUnicode_IS_READY)
#define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
0 : _PyUnicode_Ready((PyObject *)(op)))
+ #else
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #endif
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
#define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
#if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
#else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
#endif
PyObject *gi_qualname;
PyObject *gi_modulename;
PyObject *gi_code;
+ PyObject *gi_frame;
int resume_label;
char is_running;
} __pyx_CoroutineObject;
#endif
/*--- Library function declarations ---*/
/*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
+ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
PyEval_InitThreads();
#endif
- #endif
/*--- Module creation code ---*/
#if CYTHON_PEP489_MULTI_PHASE_INIT
__pyx_m = __pyx_pyinit_module;
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
- ternaryfunc call = func->ob_type->tp_call;
+ ternaryfunc call = Py_TYPE(func)->tp_call;
if (unlikely(!call))
return PyObject_Call(func, arg, kw);
if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
- return PyUnicode_FromString(m->func.m_ml->ml_name);
+ Py_INCREF(m->func_qualname);
+ return m->func_qualname;
#else
return PyString_FromString(m->func.m_ml->ml_name);
#endif
}
#endif
Py_CLEAR(gen->gi_code);
+ Py_CLEAR(gen->gi_frame);
Py_CLEAR(gen->gi_name);
Py_CLEAR(gen->gi_qualname);
Py_CLEAR(gen->gi_modulename);
if (PyObject_CallFinalizerFromDealloc(self))
#else
Py_TYPE(gen)->tp_del(self);
- if (self->ob_refcnt > 0)
+ if (Py_REFCNT(self) > 0)
#endif
{
return;
}
__Pyx_ErrRestore(error_type, error_value, error_traceback);
#if !CYTHON_USE_TP_FINALIZE
- assert(self->ob_refcnt > 0);
+ assert(Py_REFCNT(self) > 0);
if (--self->ob_refcnt == 0) {
return;
}
{
- Py_ssize_t refcnt = self->ob_refcnt;
+ Py_ssize_t refcnt = Py_REFCNT(self);
_Py_NewReference(self);
__Pyx_SET_REFCNT(self, refcnt);
}
#if CYTHON_COMPILING_IN_CPYTHON
- assert(PyType_IS_GC(self->ob_type) &&
+ assert(PyType_IS_GC(Py_TYPE(self)) &&
_Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
_Py_DEC_REFTOTAL;
#endif
Py_XDECREF(tmp);
return 0;
}
+static PyObject *
+__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
+{
+ PyObject *frame = self->gi_frame;
+ if (!frame) {
+ if (unlikely(!self->gi_code)) {
+ Py_RETURN_NONE;
+ }
+ frame = (PyObject *) PyFrame_New(
+ PyThreadState_Get(), /*PyThreadState *tstate,*/
+ (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/
+ __pyx_d, /*PyObject *globals,*/
+ 0 /*PyObject *locals*/
+ );
+ if (unlikely(!frame))
+ return NULL;
+ self->gi_frame = frame;
+ }
+ Py_INCREF(frame);
+ return frame;
+}
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
PyObject *name, PyObject *qualname, PyObject *module_name) {
gen->gi_modulename = module_name;
Py_XINCREF(code);
gen->gi_code = code;
+ gen->gi_frame = NULL;
PyObject_GC_Track(gen);
return gen;
}
(char*) PyDoc_STR("name of the generator"), 0},
{(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
(char*) PyDoc_STR("qualified name of the generator"), 0},
+ {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
+ (char*) PyDoc_STR("Frame of the generator"), 0},
{0, 0, 0, 0, 0}
};
static PyTypeObject __pyx_GeneratorType_type = {
#ifndef LXML_VERSION_STRING
-#define LXML_VERSION_STRING "4.6.3"
+#define LXML_VERSION_STRING "4.6.4"
#endif
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
#ifndef __PYX_HAVE__lxml__etree
#define __PYX_HAVE__lxml__etree
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
#ifndef __PYX_HAVE_API__lxml__etree
#define __PYX_HAVE_API__lxml__etree
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata
{
"distutils": {
"define_macros": [
[
- "CYTHON_CLINE_IN_TRACEBACK",
+ "CYTHON_CLINE_IN_TRACEBACK",
"0"
]
- ],
+ ],
"depends": [
- "/usr/include/libxml2/libxml/HTMLtree.h",
- "/usr/include/libxml2/libxml/chvalid.h",
- "/usr/include/libxml2/libxml/encoding.h",
- "/usr/include/libxml2/libxml/globals.h",
- "/usr/include/libxml2/libxml/hash.h",
- "/usr/include/libxml2/libxml/tree.h",
- "/usr/include/libxml2/libxml/uri.h",
- "/usr/include/libxml2/libxml/valid.h",
- "/usr/include/libxml2/libxml/xmlIO.h",
- "/usr/include/libxml2/libxml/xmlmemory.h",
- "/usr/include/libxml2/libxml/xmlsave.h",
- "/usr/include/libxml2/libxml/xmlstring.h",
- "/usr/include/libxml2/libxml/xmlversion.h",
- "src/lxml/includes/__init__.pxd",
- "src/lxml/includes/c14n.pxd",
- "src/lxml/includes/config.pxd",
- "src/lxml/includes/dtdvalid.pxd",
- "src/lxml/includes/etree_defs.h",
- "src/lxml/includes/etreepublic.pxd",
- "src/lxml/includes/htmlparser.pxd",
- "src/lxml/includes/lxml-version.h",
- "src/lxml/includes/relaxng.pxd",
- "src/lxml/includes/schematron.pxd",
- "src/lxml/includes/tree.pxd",
- "src/lxml/includes/uri.pxd",
- "src/lxml/includes/xinclude.pxd",
- "src/lxml/includes/xmlerror.pxd",
- "src/lxml/includes/xmlparser.pxd",
- "src/lxml/includes/xmlschema.pxd",
- "src/lxml/includes/xpath.pxd",
- "src/lxml/includes/xslt.pxd",
+ "/usr/include/libxml2/libxml/HTMLtree.h",
+ "/usr/include/libxml2/libxml/chvalid.h",
+ "/usr/include/libxml2/libxml/encoding.h",
+ "/usr/include/libxml2/libxml/globals.h",
+ "/usr/include/libxml2/libxml/hash.h",
+ "/usr/include/libxml2/libxml/tree.h",
+ "/usr/include/libxml2/libxml/uri.h",
+ "/usr/include/libxml2/libxml/valid.h",
+ "/usr/include/libxml2/libxml/xmlIO.h",
+ "/usr/include/libxml2/libxml/xmlmemory.h",
+ "/usr/include/libxml2/libxml/xmlsave.h",
+ "/usr/include/libxml2/libxml/xmlstring.h",
+ "/usr/include/libxml2/libxml/xmlversion.h",
+ "src/lxml/includes/__init__.pxd",
+ "src/lxml/includes/c14n.pxd",
+ "src/lxml/includes/config.pxd",
+ "src/lxml/includes/dtdvalid.pxd",
+ "src/lxml/includes/etree_defs.h",
+ "src/lxml/includes/etreepublic.pxd",
+ "src/lxml/includes/htmlparser.pxd",
+ "src/lxml/includes/lxml-version.h",
+ "src/lxml/includes/relaxng.pxd",
+ "src/lxml/includes/schematron.pxd",
+ "src/lxml/includes/tree.pxd",
+ "src/lxml/includes/uri.pxd",
+ "src/lxml/includes/xinclude.pxd",
+ "src/lxml/includes/xmlerror.pxd",
+ "src/lxml/includes/xmlparser.pxd",
+ "src/lxml/includes/xmlschema.pxd",
+ "src/lxml/includes/xpath.pxd",
+ "src/lxml/includes/xslt.pxd",
"src/lxml/objectpath.pxi"
- ],
- "extra_compile_args": [
- "-w"
- ],
+ ],
"include_dirs": [
- "src/lxml/includes",
- "/usr/include/libxml2",
+ "src/lxml/includes",
+ "/usr/include/libxml2",
"src"
- ],
+ ],
"libraries": [
- "xslt",
- "exslt",
- "xml2",
- "rt",
- "z",
+ "xslt",
+ "exslt",
+ "xml2",
+ "rt",
+ "z",
"m"
- ],
- "name": "lxml.objectify",
+ ],
+ "name": "lxml.objectify",
"sources": [
"src/lxml/objectify.pyx"
]
- },
+ },
"module_name": "lxml.objectify"
}
END: Cython Metadata */
+#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
+#endif /* PY_SSIZE_T_CLEAN */
#include "Python.h"
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_29_22"
-#define CYTHON_HEX_VERSION 0x001D16F0
+#define CYTHON_ABI "0_29_24"
+#define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
#define CYTHON_PEP393_ENABLED 1
+ #if defined(PyUnicode_IS_READY)
#define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
0 : _PyUnicode_Ready((PyObject *)(op)))
+ #else
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #endif
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
#define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
#if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
#else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
#endif
};
-/* "lxml/objectify.pyx":612
- * cetree.setNodeText(self._c_node, s)
+/* "lxml/objectify.pyx":613
+ *
*
* cdef class NumberElement(ObjectifiedDataElement): # <<<<<<<<<<<<<<
* cdef object _parse_value
- * def _setValueParser(self, function):
+ *
*/
struct __pyx_obj_4lxml_9objectify_NumberElement {
struct __pyx_obj_4lxml_9objectify_ObjectifiedDataElement __pyx_base;
};
-/* "lxml/objectify.pyx":709
- * return _numericValueOf(self) ^ _numericValueOf(other)
+/* "lxml/objectify.pyx":763
+ *
*
* cdef class IntElement(NumberElement): # <<<<<<<<<<<<<<
* def _init(self):
};
-/* "lxml/objectify.pyx":716
- * return int(_parseNumber(self))
+/* "lxml/objectify.pyx":771
+ *
*
* cdef class LongElement(NumberElement): # <<<<<<<<<<<<<<
* def _init(self):
};
-/* "lxml/objectify.pyx":723
- * return int(_parseNumber(self))
+/* "lxml/objectify.pyx":779
+ *
*
* cdef class FloatElement(NumberElement): # <<<<<<<<<<<<<<
* def _init(self):
};
-/* "lxml/objectify.pyx":727
- * self._parse_value = float
+/* "lxml/objectify.pyx":784
+ *
*
* cdef class StringElement(ObjectifiedDataElement): # <<<<<<<<<<<<<<
* u"""String data class.
};
-/* "lxml/objectify.pyx":789
- * return complex(textOf(self._c_node))
+/* "lxml/objectify.pyx":851
+ *
*
* cdef class NoneElement(ObjectifiedDataElement): # <<<<<<<<<<<<<<
* def __str__(self):
};
-/* "lxml/objectify.pyx":815
+/* "lxml/objectify.pyx":877
*
*
* cdef class BoolElement(IntElement): # <<<<<<<<<<<<<<
};
-/* "lxml/objectify.pyx":901
+/* "lxml/objectify.pyx":976
* # Python type registry
*
* cdef class PyType: # <<<<<<<<<<<<<<
};
-/* "lxml/objectify.pyx":1131
+/* "lxml/objectify.pyx":1206
* @cython.final
* @cython.internal
* cdef class _ObjectifyElementMakerCaller: # <<<<<<<<<<<<<<
};
-/* "lxml/objectify.pyx":1221
+/* "lxml/objectify.pyx":1296
* cetree.setNodeText(elem._c_node, text)
*
* cdef class ElementMaker: # <<<<<<<<<<<<<<
};
-/* "lxml/objectify.pyx":1377
+/* "lxml/objectify.pyx":1452
* # Element class lookup
*
* cdef class ObjectifyElementClassLookup(ElementClassLookup): # <<<<<<<<<<<<<<
-/* "lxml/objectify.pyx":1221
+/* "lxml/objectify.pyx":1296
* cetree.setNodeText(elem._c_node, text)
*
* cdef class ElementMaker: # <<<<<<<<<<<<<<
/* CallableCheck.proto */
#if CYTHON_USE_TYPE_SLOTS && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyCallable_Check(obj) ((obj)->ob_type->tp_call != NULL)
+#define __Pyx_PyCallable_Check(obj) (Py_TYPE(obj)->tp_call != NULL)
#else
#define __Pyx_PyCallable_Check(obj) PyCallable_Check(obj)
#endif
static PyObject *__pyx_builtin_AttributeError;
static PyObject *__pyx_builtin_oct;
static PyObject *__pyx_builtin_hex;
+static PyObject *__pyx_builtin_NotImplemented;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_map;
static PyObject *__pyx_builtin_MemoryError;
static const char __pyx_k_map[] = "map";
static const char __pyx_k_obj[] = "obj";
static const char __pyx_k_oct[] = "oct";
+ static const char __pyx_k_ror[] = "__ror__";
static const char __pyx_k_s_2[] = "{%s}";
static const char __pyx_k_s_3[] = "s";
static const char __pyx_k_set[] = "__set__";
static const char __pyx_k_none[] = "none";
static const char __pyx_k_path[] = "path";
static const char __pyx_k_py_2[] = "py";
+ static const char __pyx_k_radd[] = "__radd__";
+ static const char __pyx_k_rand[] = "__rand__";
+ static const char __pyx_k_rdiv[] = "__rdiv__";
static const char __pyx_k_repr[] = "repr";
+ static const char __pyx_k_rmod[] = "__rmod__";
+ static const char __pyx_k_rmul[] = "__rmul__";
static const char __pyx_k_root[] = "root";
+ static const char __pyx_k_rpow[] = "__rpow__";
+ static const char __pyx_k_rsub[] = "__rsub__";
+ static const char __pyx_k_rxor[] = "__rxor__";
static const char __pyx_k_self[] = "self";
static const char __pyx_k_tail[] = "tail";
static const char __pyx_k_temp[] = "temp";
static const char __pyx_k_known[] = "known";
static const char __pyx_k_match[] = "match";
static const char __pyx_k_nsmap[] = "nsmap";
+ static const char __pyx_k_other[] = "other";
static const char __pyx_k_parse[] = "parse";
static const char __pyx_k_pyval[] = "pyval";
static const char __pyx_k_s_nil[] = "{%s}nil";
static const char __pyx_k_encode[] = "encode";
static const char __pyx_k_groups[] = "groups";
static const char __pyx_k_import[] = "__import__";
+ static const char __pyx_k_modulo[] = "modulo";
static const char __pyx_k_name_2[] = "__name__";
static const char __pyx_k_object[] = "object";
static const char __pyx_k_parser[] = "parser";
static const char __pyx_k_hasattr[] = "hasattr";
static const char __pyx_k_integer[] = "integer";
static const char __pyx_k_py_type[] = "py_type";
+ static const char __pyx_k_rdivmod[] = "__rdivmod__";
static const char __pyx_k_replace[] = "replace";
+ static const char __pyx_k_rlshift[] = "__rlshift__";
+ static const char __pyx_k_rrshift[] = "__rrshift__";
static const char __pyx_k_setText[] = "_setText";
static const char __pyx_k_setattr[] = "setattr";
static const char __pyx_k_value_2[] = "_value";
static const char __pyx_k_last_pos[] = "last_pos";
static const char __pyx_k_pytype_2[] = "_pytype";
static const char __pyx_k_register[] = "register";
+ static const char __pyx_k_rtruediv[] = "__rtruediv__";
static const char __pyx_k_tostring[] = "tostring";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_XMLParser[] = "XMLParser";
static const char __pyx_k_getparent[] = "getparent";
static const char __pyx_k_namespace[] = "namespace";
static const char __pyx_k_parseBool[] = "__parseBool";
+ static const char __pyx_k_rfloordiv[] = "__rfloordiv__";
static const char __pyx_k_stringify[] = "stringify";
static const char __pyx_k_IndexError[] = "IndexError";
static const char __pyx_k_IntElement[] = "IntElement";
static const char __pyx_k_no_such_child[] = "no such child: ";
static const char __pyx_k_unsignedShort[] = "unsignedShort";
static const char __pyx_k_AttributeError[] = "AttributeError";
+ static const char __pyx_k_NotImplemented[] = "NotImplemented";
static const char __pyx_k_lxml_objectify[] = "lxml.objectify";
static const char __pyx_k_setValueParser[] = "_setValueParser";
static const char __pyx_k_unicode_escape[] = "unicode-escape";
static const char __pyx_k_nonNegativeInteger[] = "nonNegativeInteger";
static const char __pyx_k_nonPositiveInteger[] = "nonPositiveInteger";
static const char __pyx_k_set_default_parser[] = "set_default_parser";
+static const char __pyx_k_NumberElement___ror[] = "NumberElement.__ror__";
static const char __pyx_k_unpickleElementTree[] = "__unpickleElementTree";
static const char __pyx_k_ElementChildIterator[] = "ElementChildIterator";
+static const char __pyx_k_NumberElement___radd[] = "NumberElement.__radd__";
+static const char __pyx_k_NumberElement___rand[] = "NumberElement.__rand__";
+static const char __pyx_k_NumberElement___rdiv[] = "NumberElement.__rdiv__";
+static const char __pyx_k_NumberElement___rmod[] = "NumberElement.__rmod__";
+static const char __pyx_k_NumberElement___rmul[] = "NumberElement.__rmul__";
+static const char __pyx_k_NumberElement___rpow[] = "NumberElement.__rpow__";
+static const char __pyx_k_NumberElement___rsub[] = "NumberElement.__rsub__";
+static const char __pyx_k_NumberElement___rxor[] = "NumberElement.__rxor__";
+static const char __pyx_k_StringElement___radd[] = "StringElement.__radd__";
+static const char __pyx_k_StringElement___rmul[] = "StringElement.__rmul__";
static const char __pyx_k_StringElement_strlen[] = "StringElement.strlen";
static const char __pyx_k_enable_recursive_str[] = "enable_recursive_str";
static const char __pyx_k_Invalid_boolean_value[] = "Invalid boolean value: '";
static const char __pyx_k_ObjectifiedDataElement[] = "ObjectifiedDataElement";
static const char __pyx_k_src_lxml_objectify_pyx[] = "src/lxml/objectify.pyx";
static const char __pyx_k_NumberElement___complex[] = "NumberElement.__complex__";
+static const char __pyx_k_NumberElement___rdivmod[] = "NumberElement.__rdivmod__";
+static const char __pyx_k_NumberElement___rlshift[] = "NumberElement.__rlshift__";
+static const char __pyx_k_NumberElement___rrshift[] = "NumberElement.__rrshift__";
static const char __pyx_k_StringElement___complex[] = "StringElement.__complex__";
static const char __pyx_k_cannot_update_root_node[] = "cannot update root node";
static const char __pyx_k_objects_is_not_writable[] = "' objects is not writable";
static const char __pyx_k_pickleReduceElementTree[] = "pickleReduceElementTree";
static const char __pyx_k_src_lxml_objectpath_pxi[] = "src/lxml/objectpath.pxi";
+static const char __pyx_k_NumberElement___rtruediv[] = "NumberElement.__rtruediv__";
static const char __pyx_k_set_element_class_lookup[] = "set_element_class_lookup";
static const char __pyx_k_set_pytype_attribute_tag[] = "set_pytype_attribute_tag";
static const char __pyx_k_Cannot_register_tree_type[] = "Cannot register tree type";
+static const char __pyx_k_NumberElement___rfloordiv[] = "NumberElement.__rfloordiv__";
static const char __pyx_k_index_must_be_enclosed_in[] = "index must be enclosed in []";
static const char __pyx_k_to_extended_slice_of_size[] = " to extended slice of size ";
static const char __pyx_k_ObjectifiedElement_addattr[] = "ObjectifiedElement.addattr";
static const char __pyx_k_Type_name_must_be_a_string[] = "Type name must be a string";
-static const char __pyx_k_invalid_types_for_operator[] = "invalid types for * operator";
static const char __pyx_k_ObjectifiedElement___reduce[] = "ObjectifiedElement.__reduce__";
static const char __pyx_k_ObjectifyElementClassLookup[] = "ObjectifyElementClassLookup";
static const char __pyx_k_NumberElement__setValueParser[] = "NumberElement._setValueParser";
static PyObject *__pyx_n_u_NoneElement;
static PyObject *__pyx_n_s_NoneType;
static PyObject *__pyx_n_u_NoneType;
+static PyObject *__pyx_n_s_NotImplemented;
static PyObject *__pyx_n_s_NumberElement;
static PyObject *__pyx_n_u_NumberElement;
static PyObject *__pyx_n_s_NumberElement___complex;
+static PyObject *__pyx_n_s_NumberElement___radd;
+static PyObject *__pyx_n_s_NumberElement___rand;
+static PyObject *__pyx_n_s_NumberElement___rdiv;
+static PyObject *__pyx_n_s_NumberElement___rdivmod;
+static PyObject *__pyx_n_s_NumberElement___rfloordiv;
+static PyObject *__pyx_n_s_NumberElement___rlshift;
+static PyObject *__pyx_n_s_NumberElement___rmod;
+static PyObject *__pyx_n_s_NumberElement___rmul;
+static PyObject *__pyx_n_s_NumberElement___ror;
+static PyObject *__pyx_n_s_NumberElement___rpow;
+static PyObject *__pyx_n_s_NumberElement___rrshift;
+static PyObject *__pyx_n_s_NumberElement___rsub;
+static PyObject *__pyx_n_s_NumberElement___rtruediv;
+static PyObject *__pyx_n_s_NumberElement___rxor;
static PyObject *__pyx_n_s_NumberElement__setValueParser;
static PyObject *__pyx_n_s_ObjectPath;
static PyObject *__pyx_n_u_ObjectPath;
static PyObject *__pyx_n_s_StringElement;
static PyObject *__pyx_n_u_StringElement;
static PyObject *__pyx_n_s_StringElement___complex;
+static PyObject *__pyx_n_s_StringElement___radd;
+static PyObject *__pyx_n_s_StringElement___rmul;
static PyObject *__pyx_n_s_StringElement_strlen;
static PyObject *__pyx_n_s_SubElement;
static PyObject *__pyx_n_u_SubElement;
static PyObject *__pyx_n_u_integer;
static PyObject *__pyx_kp_u_invalid_number_of_arguments_need;
static PyObject *__pyx_kp_u_invalid_path;
-static PyObject *__pyx_kp_u_invalid_types_for_operator;
static PyObject *__pyx_n_s_item;
static PyObject *__pyx_n_s_items;
static PyObject *__pyx_n_s_iterchildren;
static PyObject *__pyx_n_u_makeparser;
static PyObject *__pyx_n_s_map;
static PyObject *__pyx_n_s_match;
+static PyObject *__pyx_n_s_modulo;
static PyObject *__pyx_n_s_name;
static PyObject *__pyx_n_s_name_2;
static PyObject *__pyx_n_s_namespace;
static PyObject *__pyx_n_s_oct;
static PyObject *__pyx_kp_u_of;
static PyObject *__pyx_n_s_on;
+static PyObject *__pyx_n_s_other;
static PyObject *__pyx_n_s_parse;
static PyObject *__pyx_n_u_parse;
static PyObject *__pyx_n_s_parseBool;
static PyObject *__pyx_n_s_pyval;
static PyObject *__pyx_n_u_pyval;
static PyObject *__pyx_n_s_pyx_vtable;
+static PyObject *__pyx_n_s_radd;
+static PyObject *__pyx_n_s_rand;
+static PyObject *__pyx_n_s_rdiv;
+static PyObject *__pyx_n_s_rdivmod;
static PyObject *__pyx_n_s_re;
static PyObject *__pyx_n_s_reduce;
static PyObject *__pyx_n_s_register;
static PyObject *__pyx_n_s_replace;
static PyObject *__pyx_n_s_repr;
static PyObject *__pyx_n_s_result;
+static PyObject *__pyx_n_s_rfloordiv;
+static PyObject *__pyx_n_s_rlshift;
+static PyObject *__pyx_n_s_rmod;
+static PyObject *__pyx_n_s_rmul;
static PyObject *__pyx_n_s_root;
static PyObject *__pyx_kp_u_root_element_does_not_match_need;
+static PyObject *__pyx_n_s_ror;
+static PyObject *__pyx_n_s_rpow;
+static PyObject *__pyx_n_s_rrshift;
+static PyObject *__pyx_n_s_rsub;
+static PyObject *__pyx_n_s_rtruediv;
+static PyObject *__pyx_n_s_rxor;
static PyObject *__pyx_kp_u_s;
static PyObject *__pyx_kp_u_s_2;
static PyObject *__pyx_n_s_s_3;
static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_18__richcmp__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static Py_hash_t __pyx_pf_4lxml_9objectify_13NumberElement_20__hash__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_22__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_24__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_26__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_24__radd__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_26__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_28__rsub__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_30__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_32__rmul__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_28__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-#endif
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_30__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_32__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_34__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_36__neg__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_38__pos__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_40__abs__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
-static int __pyx_pf_4lxml_9objectify_13NumberElement_42__nonzero__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_44__invert__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_46__lshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_48__rshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_50__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_52__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_54__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_34__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+#endif
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_36__rdiv__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_38__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_40__rtruediv__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_42__floordiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_44__rfloordiv__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_46__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_48__rmod__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_50__divmod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_52__rdivmod__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_54__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_56__rpow__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_58__neg__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_60__pos__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_62__abs__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
+static int __pyx_pf_4lxml_9objectify_13NumberElement_64__bool__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_66__invert__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_68__lshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_70__rlshift__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_72__rshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_74__rrshift__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_76__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_78__rand__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_80__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_82__ror__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_84__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_86__rxor__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_10IntElement__init(struct __pyx_obj_4lxml_9objectify_IntElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_10IntElement_2__index__(struct __pyx_obj_4lxml_9objectify_IntElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_11LongElement__init(struct __pyx_obj_4lxml_9objectify_LongElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_5pyval___get__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_13StringElement___repr__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_2strlen(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
-static int __pyx_pf_4lxml_9objectify_13StringElement_4__nonzero__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
+static int __pyx_pf_4lxml_9objectify_13StringElement_4__bool__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_6__richcmp__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static Py_hash_t __pyx_pf_4lxml_9objectify_13StringElement_8__hash__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_10__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_14__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_16__int__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__radd__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_14__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_16__rmul__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_18__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_20__int__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
#if PY_MAJOR_VERSION < 3
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_18__long__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_22__long__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
#endif
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_20__float__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_22__complex__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_24__float__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_26__complex__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement___str__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_2__repr__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self); /* proto */
-static int __pyx_pf_4lxml_9objectify_11NoneElement_4__nonzero__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self); /* proto */
+static int __pyx_pf_4lxml_9objectify_11NoneElement_4__bool__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_6__richcmp__(struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static Py_hash_t __pyx_pf_4lxml_9objectify_11NoneElement_8__hash__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_5pyval___get__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement__init(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
-static int __pyx_pf_4lxml_9objectify_11BoolElement_2__nonzero__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_4__richcmp__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
-static Py_hash_t __pyx_pf_4lxml_9objectify_11BoolElement_6__hash__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_8__str__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_10__repr__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
+static int __pyx_pf_4lxml_9objectify_11BoolElement_2__bool__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_4__int__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_6__float__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_8__richcmp__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
+static Py_hash_t __pyx_pf_4lxml_9objectify_11BoolElement_10__hash__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_12__str__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_14__repr__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_5pyval___get__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s); /* proto */
static PyObject *__pyx_pf_4lxml_9objectify_4__parseBool(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s); /* proto */
static PyObject *__pyx_tuple__68;
static PyObject *__pyx_tuple__70;
static PyObject *__pyx_tuple__72;
-static PyObject *__pyx_tuple__73;
-static PyObject *__pyx_tuple__75;
-static PyObject *__pyx_tuple__77;
-static PyObject *__pyx_tuple__79;
-static PyObject *__pyx_tuple__81;
-static PyObject *__pyx_tuple__83;
-static PyObject *__pyx_tuple__85;
-static PyObject *__pyx_tuple__87;
-static PyObject *__pyx_tuple__89;
+static PyObject *__pyx_tuple__74;
+static PyObject *__pyx_tuple__76;
+static PyObject *__pyx_tuple__78;
+static PyObject *__pyx_tuple__80;
+static PyObject *__pyx_tuple__82;
+static PyObject *__pyx_tuple__84;
+static PyObject *__pyx_tuple__86;
+static PyObject *__pyx_tuple__88;
static PyObject *__pyx_tuple__90;
static PyObject *__pyx_tuple__92;
static PyObject *__pyx_tuple__94;
-static PyObject *__pyx_tuple__95;
-static PyObject *__pyx_tuple__97;
+static PyObject *__pyx_tuple__96;
static PyObject *__pyx_tuple__98;
static PyObject *__pyx_tuple__100;
-static PyObject *__pyx_tuple__101;
-static PyObject *__pyx_tuple__103;
+static PyObject *__pyx_tuple__102;
static PyObject *__pyx_tuple__104;
-static PyObject *__pyx_tuple__106;
+static PyObject *__pyx_tuple__105;
static PyObject *__pyx_tuple__107;
static PyObject *__pyx_tuple__109;
static PyObject *__pyx_tuple__111;
static PyObject *__pyx_tuple__113;
+static PyObject *__pyx_tuple__115;
+static PyObject *__pyx_tuple__117;
+static PyObject *__pyx_tuple__119;
+static PyObject *__pyx_tuple__121;
+static PyObject *__pyx_tuple__122;
+static PyObject *__pyx_tuple__124;
+static PyObject *__pyx_tuple__126;
+static PyObject *__pyx_tuple__127;
+static PyObject *__pyx_tuple__129;
+static PyObject *__pyx_tuple__130;
+static PyObject *__pyx_tuple__132;
+static PyObject *__pyx_tuple__133;
+static PyObject *__pyx_tuple__135;
+static PyObject *__pyx_tuple__136;
+static PyObject *__pyx_tuple__138;
+static PyObject *__pyx_tuple__139;
+static PyObject *__pyx_tuple__141;
+static PyObject *__pyx_tuple__143;
+static PyObject *__pyx_tuple__145;
static PyObject *__pyx_codeobj__26;
static PyObject *__pyx_codeobj__29;
static PyObject *__pyx_codeobj__31;
static PyObject *__pyx_codeobj__67;
static PyObject *__pyx_codeobj__69;
static PyObject *__pyx_codeobj__71;
-static PyObject *__pyx_codeobj__74;
-static PyObject *__pyx_codeobj__76;
-static PyObject *__pyx_codeobj__78;
-static PyObject *__pyx_codeobj__80;
-static PyObject *__pyx_codeobj__82;
-static PyObject *__pyx_codeobj__84;
-static PyObject *__pyx_codeobj__86;
-static PyObject *__pyx_codeobj__88;
+static PyObject *__pyx_codeobj__73;
+static PyObject *__pyx_codeobj__75;
+static PyObject *__pyx_codeobj__77;
+static PyObject *__pyx_codeobj__79;
+static PyObject *__pyx_codeobj__81;
+static PyObject *__pyx_codeobj__83;
+static PyObject *__pyx_codeobj__85;
+static PyObject *__pyx_codeobj__87;
+static PyObject *__pyx_codeobj__89;
static PyObject *__pyx_codeobj__91;
static PyObject *__pyx_codeobj__93;
-static PyObject *__pyx_codeobj__96;
+static PyObject *__pyx_codeobj__95;
+static PyObject *__pyx_codeobj__97;
static PyObject *__pyx_codeobj__99;
-static PyObject *__pyx_codeobj__102;
-static PyObject *__pyx_codeobj__105;
+static PyObject *__pyx_codeobj__101;
+static PyObject *__pyx_codeobj__103;
+static PyObject *__pyx_codeobj__106;
static PyObject *__pyx_codeobj__108;
static PyObject *__pyx_codeobj__110;
static PyObject *__pyx_codeobj__112;
+static PyObject *__pyx_codeobj__114;
+static PyObject *__pyx_codeobj__116;
+static PyObject *__pyx_codeobj__118;
+static PyObject *__pyx_codeobj__120;
+static PyObject *__pyx_codeobj__123;
+static PyObject *__pyx_codeobj__125;
+static PyObject *__pyx_codeobj__128;
+static PyObject *__pyx_codeobj__131;
+static PyObject *__pyx_codeobj__134;
+static PyObject *__pyx_codeobj__137;
+static PyObject *__pyx_codeobj__140;
+static PyObject *__pyx_codeobj__142;
+static PyObject *__pyx_codeobj__144;
/* Late includes */
/* "lxml/objectify.pyx":50
* """
* cetree.setNodeText(self._c_node, s) # <<<<<<<<<<<<<<
*
- * cdef class NumberElement(ObjectifiedDataElement):
+ *
*/
__pyx_t_1 = setNodeText(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node, __pyx_v_s); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 610, __pyx_L1_error)
return __pyx_r;
}
-/* "lxml/objectify.pyx":614
- * cdef class NumberElement(ObjectifiedDataElement):
+/* "lxml/objectify.pyx":616
* cdef object _parse_value
+ *
* def _setValueParser(self, function): # <<<<<<<<<<<<<<
* u"""Set the function that parses the Python value from a string.
*
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_setValueParser", 0);
- /* "lxml/objectify.pyx":619
+ /* "lxml/objectify.pyx":621
* Do not use this unless you know what you are doing.
* """
* self._parse_value = function # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_parse_value);
__pyx_v_self->_parse_value = __pyx_v_function;
- /* "lxml/objectify.pyx":614
- * cdef class NumberElement(ObjectifiedDataElement):
+ /* "lxml/objectify.pyx":616
* cdef object _parse_value
+ *
* def _setValueParser(self, function): # <<<<<<<<<<<<<<
* u"""Set the function that parses the Python value from a string.
*
return __pyx_r;
}
-/* "lxml/objectify.pyx":622
+/* "lxml/objectify.pyx":624
*
* @property
* def pyval(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__get__", 0);
- /* "lxml/objectify.pyx":623
+ /* "lxml/objectify.pyx":625
* @property
* def pyval(self):
* return _parseNumber(self) # <<<<<<<<<<<<<<
* def __int__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 623, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 625, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":622
+ /* "lxml/objectify.pyx":624
*
* @property
* def pyval(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":625
+/* "lxml/objectify.pyx":627
* return _parseNumber(self)
*
* def __int__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__int__", 0);
- /* "lxml/objectify.pyx":626
+ /* "lxml/objectify.pyx":628
*
* def __int__(self):
* return int(_parseNumber(self)) # <<<<<<<<<<<<<<
* def __long__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 626, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 628, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":625
+ /* "lxml/objectify.pyx":627
* return _parseNumber(self)
*
* def __int__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":628
+/* "lxml/objectify.pyx":630
* return int(_parseNumber(self))
*
* def __long__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__long__", 0);
- /* "lxml/objectify.pyx":629
+ /* "lxml/objectify.pyx":631
*
* def __long__(self):
* return long(_parseNumber(self)) # <<<<<<<<<<<<<<
* def __float__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyLong_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyLong_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 631, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":628
+ /* "lxml/objectify.pyx":630
* return int(_parseNumber(self))
*
* def __long__(self): # <<<<<<<<<<<<<<
}
#endif /*!(#if PY_MAJOR_VERSION < 3)*/
-/* "lxml/objectify.pyx":631
+/* "lxml/objectify.pyx":633
* return long(_parseNumber(self))
*
* def __float__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__float__", 0);
- /* "lxml/objectify.pyx":632
+ /* "lxml/objectify.pyx":634
*
* def __float__(self):
* return float(_parseNumber(self)) # <<<<<<<<<<<<<<
* def __complex__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 632, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyNumber_Float(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 632, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyNumber_Float(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 634, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":631
+ /* "lxml/objectify.pyx":633
* return long(_parseNumber(self))
*
* def __float__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":634
+/* "lxml/objectify.pyx":636
* return float(_parseNumber(self))
*
* def __complex__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__complex__", 0);
- /* "lxml/objectify.pyx":635
+ /* "lxml/objectify.pyx":637
*
* def __complex__(self):
* return complex(_parseNumber(self)) # <<<<<<<<<<<<<<
* def __str__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 635, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyComplex_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyComplex_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":634
+ /* "lxml/objectify.pyx":636
* return float(_parseNumber(self))
*
* def __complex__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":637
+/* "lxml/objectify.pyx":639
* return complex(_parseNumber(self))
*
* def __str__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__str__", 0);
- /* "lxml/objectify.pyx":638
+ /* "lxml/objectify.pyx":640
*
* def __str__(self):
* return unicode(_parseNumber(self)) # <<<<<<<<<<<<<<
* def __repr__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 638, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_Unicode(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 638, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Unicode(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":637
+ /* "lxml/objectify.pyx":639
* return complex(_parseNumber(self))
*
* def __str__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":640
+/* "lxml/objectify.pyx":642
* return unicode(_parseNumber(self))
*
* def __repr__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__repr__", 0);
- /* "lxml/objectify.pyx":641
+ /* "lxml/objectify.pyx":643
*
* def __repr__(self):
* return repr(_parseNumber(self)) # <<<<<<<<<<<<<<
* def __oct__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 641, __pyx_L1_error)
+ __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 643, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":640
+ /* "lxml/objectify.pyx":642
* return unicode(_parseNumber(self))
*
* def __repr__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":643
+/* "lxml/objectify.pyx":645
* return repr(_parseNumber(self))
*
* def __oct__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__oct__", 0);
- /* "lxml/objectify.pyx":644
+ /* "lxml/objectify.pyx":646
*
* def __oct__(self):
* return oct(_parseNumber(self)) # <<<<<<<<<<<<<<
* def __hex__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 644, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_oct, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_oct, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":643
+ /* "lxml/objectify.pyx":645
* return repr(_parseNumber(self))
*
* def __oct__(self): # <<<<<<<<<<<<<<
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/
-/* "lxml/objectify.pyx":646
+/* "lxml/objectify.pyx":648
* return oct(_parseNumber(self))
*
* def __hex__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__hex__", 0);
- /* "lxml/objectify.pyx":647
+ /* "lxml/objectify.pyx":649
*
* def __hex__(self):
* return hex(_parseNumber(self)) # <<<<<<<<<<<<<<
* def __richcmp__(self, other, int op):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 649, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_hex, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_hex, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":646
+ /* "lxml/objectify.pyx":648
* return oct(_parseNumber(self))
*
* def __hex__(self): # <<<<<<<<<<<<<<
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/
-/* "lxml/objectify.pyx":649
+/* "lxml/objectify.pyx":651
* return hex(_parseNumber(self))
*
* def __richcmp__(self, other, int op): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__richcmp__", 0);
- /* "lxml/objectify.pyx":650
+ /* "lxml/objectify.pyx":652
*
* def __richcmp__(self, other, int op):
* return _richcmpPyvals(self, other, op) # <<<<<<<<<<<<<<
* def __hash__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__richcmpPyvals(((PyObject *)__pyx_v_self), __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__richcmpPyvals(((PyObject *)__pyx_v_self), __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":649
+ /* "lxml/objectify.pyx":651
* return hex(_parseNumber(self))
*
* def __richcmp__(self, other, int op): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":652
+/* "lxml/objectify.pyx":654
* return _richcmpPyvals(self, other, op)
*
* def __hash__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__hash__", 0);
- /* "lxml/objectify.pyx":653
+ /* "lxml/objectify.pyx":655
*
* def __hash__(self):
* return hash(_parseNumber(self)) # <<<<<<<<<<<<<<
*
* def __add__(self, other):
*/
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(0, 653, __pyx_L1_error)
+ __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(0, 655, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
goto __pyx_L0;
- /* "lxml/objectify.pyx":652
+ /* "lxml/objectify.pyx":654
* return _richcmpPyvals(self, other, op)
*
* def __hash__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":655
+/* "lxml/objectify.pyx":657
* return hash(_parseNumber(self))
*
* def __add__(self, other): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__add__", 0);
- /* "lxml/objectify.pyx":656
+ /* "lxml/objectify.pyx":658
*
* def __add__(self, other):
* return _numericValueOf(self) + _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * def __sub__(self, other):
+ * def __radd__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 656, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 658, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 656, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 658, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":655
+ /* "lxml/objectify.pyx":657
* return hash(_parseNumber(self))
*
* def __add__(self, other): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":658
+/* "lxml/objectify.pyx":660
* return _numericValueOf(self) + _numericValueOf(other)
*
+ * def __radd__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) + _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_25__radd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_25__radd__ = {"__radd__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_25__radd__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_25__radd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__radd__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_24__radd__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_24__radd__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__radd__", 0);
+
+ /* "lxml/objectify.pyx":661
+ *
+ * def __radd__(self, other):
+ * return _numericValueOf(other) + _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __sub__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 661, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":660
+ * return _numericValueOf(self) + _numericValueOf(other)
+ *
+ * def __radd__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) + _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__radd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":663
+ * return _numericValueOf(other) + _numericValueOf(self)
+ *
* def __sub__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) - _numericValueOf(other)
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_25__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_25__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_27__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_27__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_24__sub__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_26__sub__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_24__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_26__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__sub__", 0);
- /* "lxml/objectify.pyx":659
+ /* "lxml/objectify.pyx":664
*
* def __sub__(self, other):
* return _numericValueOf(self) - _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * def __mul__(self, other):
+ * def __rsub__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 664, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 664, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 664, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":658
- * return _numericValueOf(self) + _numericValueOf(other)
+ /* "lxml/objectify.pyx":663
+ * return _numericValueOf(other) + _numericValueOf(self)
*
* def __sub__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) - _numericValueOf(other)
return __pyx_r;
}
-/* "lxml/objectify.pyx":661
+/* "lxml/objectify.pyx":666
* return _numericValueOf(self) - _numericValueOf(other)
*
+ * def __rsub__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) - _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_29__rsub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_29__rsub__ = {"__rsub__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_29__rsub__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_29__rsub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rsub__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_28__rsub__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_28__rsub__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rsub__", 0);
+
+ /* "lxml/objectify.pyx":667
+ *
+ * def __rsub__(self, other):
+ * return _numericValueOf(other) - _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __mul__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 667, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 667, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":666
+ * return _numericValueOf(self) - _numericValueOf(other)
+ *
+ * def __rsub__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) - _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rsub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":669
+ * return _numericValueOf(other) - _numericValueOf(self)
+ *
* def __mul__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) * _numericValueOf(other)
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_27__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_27__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_31__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_31__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__mul__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_26__mul__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_30__mul__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_26__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_30__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__mul__", 0);
- /* "lxml/objectify.pyx":662
+ /* "lxml/objectify.pyx":670
*
* def __mul__(self, other):
* return _numericValueOf(self) * _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * def __div__(self, other):
+ * def __rmul__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 662, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 670, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 662, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 670, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":661
- * return _numericValueOf(self) - _numericValueOf(other)
+ /* "lxml/objectify.pyx":669
+ * return _numericValueOf(other) - _numericValueOf(self)
*
* def __mul__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) * _numericValueOf(other)
return __pyx_r;
}
-/* "lxml/objectify.pyx":664
+/* "lxml/objectify.pyx":672
+ * return _numericValueOf(self) * _numericValueOf(other)
+ *
+ * def __rmul__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) * _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_33__rmul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_33__rmul__ = {"__rmul__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_33__rmul__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_33__rmul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rmul__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_32__rmul__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_32__rmul__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rmul__", 0);
+
+ /* "lxml/objectify.pyx":673
+ *
+ * def __rmul__(self, other):
+ * return _numericValueOf(other) * _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __div__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 673, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":672
* return _numericValueOf(self) * _numericValueOf(other)
*
+ * def __rmul__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) * _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rmul__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":675
+ * return _numericValueOf(other) * _numericValueOf(self)
+ *
* def __div__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) / _numericValueOf(other)
*
/* Python wrapper */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_29__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_29__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_35__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_35__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_28__div__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_34__div__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_28__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_34__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__div__", 0);
- /* "lxml/objectify.pyx":665
+ /* "lxml/objectify.pyx":676
*
* def __div__(self, other):
* return _numericValueOf(self) / _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * def __truediv__(self, other):
+ * def __rdiv__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 665, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 676, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 665, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 665, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 676, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":664
- * return _numericValueOf(self) * _numericValueOf(other)
+ /* "lxml/objectify.pyx":675
+ * return _numericValueOf(other) * _numericValueOf(self)
*
* def __div__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) / _numericValueOf(other)
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/
-/* "lxml/objectify.pyx":667
+/* "lxml/objectify.pyx":678
+ * return _numericValueOf(self) / _numericValueOf(other)
+ *
+ * def __rdiv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_37__rdiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_37__rdiv__ = {"__rdiv__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_37__rdiv__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_37__rdiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rdiv__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_36__rdiv__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_36__rdiv__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rdiv__", 0);
+
+ /* "lxml/objectify.pyx":679
+ *
+ * def __rdiv__(self, other):
+ * return _numericValueOf(other) / _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __truediv__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 679, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 679, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":678
* return _numericValueOf(self) / _numericValueOf(other)
*
+ * def __rdiv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rdiv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":681
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
* def __truediv__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) / _numericValueOf(other)
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_31__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_31__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_39__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_39__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_30__truediv__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_38__truediv__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_30__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_38__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__truediv__", 0);
- /* "lxml/objectify.pyx":668
+ /* "lxml/objectify.pyx":682
*
* def __truediv__(self, other):
* return _numericValueOf(self) / _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * def __mod__(self, other):
+ * def __rtruediv__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 668, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":667
- * return _numericValueOf(self) / _numericValueOf(other)
+ /* "lxml/objectify.pyx":681
+ * return _numericValueOf(other) / _numericValueOf(self)
*
* def __truediv__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) / _numericValueOf(other)
return __pyx_r;
}
-/* "lxml/objectify.pyx":670
+/* "lxml/objectify.pyx":684
+ * return _numericValueOf(self) / _numericValueOf(other)
+ *
+ * def __rtruediv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_41__rtruediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_41__rtruediv__ = {"__rtruediv__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_41__rtruediv__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_41__rtruediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rtruediv__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_40__rtruediv__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_40__rtruediv__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rtruediv__", 0);
+
+ /* "lxml/objectify.pyx":685
+ *
+ * def __rtruediv__(self, other):
+ * return _numericValueOf(other) / _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __floordiv__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 685, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":684
* return _numericValueOf(self) / _numericValueOf(other)
*
+ * def __rtruediv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rtruediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":687
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
+ * def __floordiv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(self) // _numericValueOf(other)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_43__floordiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_43__floordiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__floordiv__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_42__floordiv__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_42__floordiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__floordiv__", 0);
+
+ /* "lxml/objectify.pyx":688
+ *
+ * def __floordiv__(self, other):
+ * return _numericValueOf(self) // _numericValueOf(other) # <<<<<<<<<<<<<<
+ *
+ * def __rfloordiv__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_FloorDivide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 688, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":687
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
+ * def __floordiv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(self) // _numericValueOf(other)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__floordiv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":690
+ * return _numericValueOf(self) // _numericValueOf(other)
+ *
+ * def __rfloordiv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) // _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_45__rfloordiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_45__rfloordiv__ = {"__rfloordiv__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_45__rfloordiv__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_45__rfloordiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rfloordiv__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_44__rfloordiv__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_44__rfloordiv__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rfloordiv__", 0);
+
+ /* "lxml/objectify.pyx":691
+ *
+ * def __rfloordiv__(self, other):
+ * return _numericValueOf(other) // _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __mod__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_FloorDivide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":690
+ * return _numericValueOf(self) // _numericValueOf(other)
+ *
+ * def __rfloordiv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) // _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rfloordiv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":693
+ * return _numericValueOf(other) // _numericValueOf(self)
+ *
* def __mod__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) % _numericValueOf(other)
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_33__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_33__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_47__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_47__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__mod__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_32__mod__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_46__mod__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_32__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_46__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__mod__", 0);
- /* "lxml/objectify.pyx":671
+ /* "lxml/objectify.pyx":694
*
* def __mod__(self, other):
* return _numericValueOf(self) % _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * def __pow__(self, other, modulo):
+ * def __rmod__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 671, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 694, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Remainder(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Remainder(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 694, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":670
- * return _numericValueOf(self) / _numericValueOf(other)
+ /* "lxml/objectify.pyx":693
+ * return _numericValueOf(other) // _numericValueOf(self)
*
* def __mod__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) % _numericValueOf(other)
return __pyx_r;
}
-/* "lxml/objectify.pyx":673
+/* "lxml/objectify.pyx":696
* return _numericValueOf(self) % _numericValueOf(other)
*
+ * def __rmod__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) % _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_49__rmod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_49__rmod__ = {"__rmod__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_49__rmod__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_49__rmod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rmod__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_48__rmod__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_48__rmod__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rmod__", 0);
+
+ /* "lxml/objectify.pyx":697
+ *
+ * def __rmod__(self, other):
+ * return _numericValueOf(other) % _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __divmod__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 697, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_Remainder(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 697, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":696
+ * return _numericValueOf(self) % _numericValueOf(other)
+ *
+ * def __rmod__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) % _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rmod__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":699
+ * return _numericValueOf(other) % _numericValueOf(self)
+ *
+ * def __divmod__(self, other): # <<<<<<<<<<<<<<
+ * return divmod(_numericValueOf(self), _numericValueOf(other))
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_51__divmod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_51__divmod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__divmod__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_50__divmod__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_50__divmod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__divmod__", 0);
+
+ /* "lxml/objectify.pyx":700
+ *
+ * def __divmod__(self, other):
+ * return divmod(_numericValueOf(self), _numericValueOf(other)) # <<<<<<<<<<<<<<
+ *
+ * def __rdivmod__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 700, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 700, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_Divmod(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":699
+ * return _numericValueOf(other) % _numericValueOf(self)
+ *
+ * def __divmod__(self, other): # <<<<<<<<<<<<<<
+ * return divmod(_numericValueOf(self), _numericValueOf(other))
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__divmod__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":702
+ * return divmod(_numericValueOf(self), _numericValueOf(other))
+ *
+ * def __rdivmod__(self, other): # <<<<<<<<<<<<<<
+ * return divmod(_numericValueOf(other), _numericValueOf(self))
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_53__rdivmod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_53__rdivmod__ = {"__rdivmod__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_53__rdivmod__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_53__rdivmod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rdivmod__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_52__rdivmod__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_52__rdivmod__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rdivmod__", 0);
+
+ /* "lxml/objectify.pyx":703
+ *
+ * def __rdivmod__(self, other):
+ * return divmod(_numericValueOf(other), _numericValueOf(self)) # <<<<<<<<<<<<<<
+ *
+ * def __pow__(self, other, modulo):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 703, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 703, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_Divmod(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 703, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":702
+ * return divmod(_numericValueOf(self), _numericValueOf(other))
+ *
+ * def __rdivmod__(self, other): # <<<<<<<<<<<<<<
+ * return divmod(_numericValueOf(other), _numericValueOf(self))
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rdivmod__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":705
+ * return divmod(_numericValueOf(other), _numericValueOf(self))
+ *
* def __pow__(self, other, modulo): # <<<<<<<<<<<<<<
* if modulo is None:
* return _numericValueOf(self) ** _numericValueOf(other)
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_35__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_35__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_55__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_55__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__pow__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_34__pow__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((PyObject *)__pyx_v_modulo));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_54__pow__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((PyObject *)__pyx_v_modulo));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_34__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_54__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__pow__", 0);
- /* "lxml/objectify.pyx":674
+ /* "lxml/objectify.pyx":706
*
* def __pow__(self, other, modulo):
* if modulo is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":675
+ /* "lxml/objectify.pyx":707
* def __pow__(self, other, modulo):
* if modulo is None:
* return _numericValueOf(self) ** _numericValueOf(other) # <<<<<<<<<<<<<<
* return pow(_numericValueOf(self), _numericValueOf(other), modulo)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 675, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 675, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 707, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyNumber_Power(__pyx_t_3, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 675, __pyx_L1_error)
+ __pyx_t_5 = PyNumber_Power(__pyx_t_3, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 707, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_5 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":674
+ /* "lxml/objectify.pyx":706
*
* def __pow__(self, other, modulo):
* if modulo is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":677
+ /* "lxml/objectify.pyx":709
* return _numericValueOf(self) ** _numericValueOf(other)
* else:
* return pow(_numericValueOf(self), _numericValueOf(other), modulo) # <<<<<<<<<<<<<<
*
- * def __neg__(self):
+ * def __rpow__(self, other, modulo):
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 677, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 709, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 677, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 709, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyNumber_Power(__pyx_t_5, __pyx_t_4, __pyx_v_modulo); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 677, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Power(__pyx_t_5, __pyx_t_4, __pyx_v_modulo); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 709, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L0;
}
- /* "lxml/objectify.pyx":673
- * return _numericValueOf(self) % _numericValueOf(other)
+ /* "lxml/objectify.pyx":705
+ * return divmod(_numericValueOf(other), _numericValueOf(self))
*
* def __pow__(self, other, modulo): # <<<<<<<<<<<<<<
* if modulo is None:
return __pyx_r;
}
-/* "lxml/objectify.pyx":679
+/* "lxml/objectify.pyx":711
* return pow(_numericValueOf(self), _numericValueOf(other), modulo)
*
+ * def __rpow__(self, other, modulo): # <<<<<<<<<<<<<<
+ * if modulo is None:
+ * return _numericValueOf(other) ** _numericValueOf(self)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_57__rpow__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_57__rpow__ = {"__rpow__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4lxml_9objectify_13NumberElement_57__rpow__, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_57__rpow__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_other = 0;
+ PyObject *__pyx_v_modulo = 0;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rpow__ (wrapper)", 0);
+ {
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_modulo,0};
+ PyObject* values[2] = {0,0};
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args;
+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+ switch (pos_args) {
+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ CYTHON_FALLTHROUGH;
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ CYTHON_FALLTHROUGH;
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ kw_args = PyDict_Size(__pyx_kwds);
+ switch (pos_args) {
+ case 0:
+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_other)) != 0)) kw_args--;
+ else goto __pyx_L5_argtuple_error;
+ CYTHON_FALLTHROUGH;
+ case 1:
+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_modulo)) != 0)) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("__rpow__", 1, 2, 2, 1); __PYX_ERR(0, 711, __pyx_L3_error)
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__rpow__") < 0)) __PYX_ERR(0, 711, __pyx_L3_error)
+ }
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+ goto __pyx_L5_argtuple_error;
+ } else {
+ values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+ }
+ __pyx_v_other = values[0];
+ __pyx_v_modulo = values[1];
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("__rpow__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 711, __pyx_L3_error)
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rpow__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_RefNannyFinishContext();
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_56__rpow__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), __pyx_v_other, __pyx_v_modulo);
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_56__rpow__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ int __pyx_t_1;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rpow__", 0);
+
+ /* "lxml/objectify.pyx":712
+ *
+ * def __rpow__(self, other, modulo):
+ * if modulo is None: # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) ** _numericValueOf(self)
+ * else:
+ */
+ __pyx_t_1 = (__pyx_v_modulo == Py_None);
+ __pyx_t_2 = (__pyx_t_1 != 0);
+ if (__pyx_t_2) {
+
+ /* "lxml/objectify.pyx":713
+ * def __rpow__(self, other, modulo):
+ * if modulo is None:
+ * return _numericValueOf(other) ** _numericValueOf(self) # <<<<<<<<<<<<<<
+ * else:
+ * return pow(_numericValueOf(other), _numericValueOf(self), modulo)
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_3 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 713, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 713, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = PyNumber_Power(__pyx_t_3, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 713, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":712
+ *
+ * def __rpow__(self, other, modulo):
+ * if modulo is None: # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) ** _numericValueOf(self)
+ * else:
+ */
+ }
+
+ /* "lxml/objectify.pyx":715
+ * return _numericValueOf(other) ** _numericValueOf(self)
+ * else:
+ * return pow(_numericValueOf(other), _numericValueOf(self), modulo) # <<<<<<<<<<<<<<
+ *
+ * def __neg__(self):
+ */
+ /*else*/ {
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_5 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 715, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 715, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = PyNumber_Power(__pyx_t_5, __pyx_t_4, __pyx_v_modulo); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 715, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+ }
+
+ /* "lxml/objectify.pyx":711
+ * return pow(_numericValueOf(self), _numericValueOf(other), modulo)
+ *
+ * def __rpow__(self, other, modulo): # <<<<<<<<<<<<<<
+ * if modulo is None:
+ * return _numericValueOf(other) ** _numericValueOf(self)
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rpow__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":717
+ * return pow(_numericValueOf(other), _numericValueOf(self), modulo)
+ *
* def __neg__(self): # <<<<<<<<<<<<<<
* return - _numericValueOf(self)
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_37__neg__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_37__neg__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_59__neg__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_59__neg__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__neg__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_36__neg__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_58__neg__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_36__neg__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_58__neg__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__neg__", 0);
- /* "lxml/objectify.pyx":680
+ /* "lxml/objectify.pyx":718
*
* def __neg__(self):
* return - _numericValueOf(self) # <<<<<<<<<<<<<<
* def __pos__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 680, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 718, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L1_error)
+ __pyx_t_2 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 718, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":679
- * return pow(_numericValueOf(self), _numericValueOf(other), modulo)
+ /* "lxml/objectify.pyx":717
+ * return pow(_numericValueOf(other), _numericValueOf(self), modulo)
*
* def __neg__(self): # <<<<<<<<<<<<<<
* return - _numericValueOf(self)
return __pyx_r;
}
-/* "lxml/objectify.pyx":682
+/* "lxml/objectify.pyx":720
* return - _numericValueOf(self)
*
* def __pos__(self): # <<<<<<<<<<<<<<
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_39__pos__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_39__pos__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_61__pos__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_61__pos__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__pos__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_38__pos__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_60__pos__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_38__pos__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_60__pos__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__pos__", 0);
- /* "lxml/objectify.pyx":683
+ /* "lxml/objectify.pyx":721
*
* def __pos__(self):
* return + _numericValueOf(self) # <<<<<<<<<<<<<<
* def __abs__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 721, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Positive(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 683, __pyx_L1_error)
+ __pyx_t_2 = PyNumber_Positive(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 721, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":682
+ /* "lxml/objectify.pyx":720
* return - _numericValueOf(self)
*
* def __pos__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":685
+/* "lxml/objectify.pyx":723
* return + _numericValueOf(self)
*
* def __abs__(self): # <<<<<<<<<<<<<<
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_41__abs__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_41__abs__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_63__abs__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_63__abs__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__abs__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_40__abs__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_62__abs__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_40__abs__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_62__abs__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__abs__", 0);
- /* "lxml/objectify.pyx":686
+ /* "lxml/objectify.pyx":724
*
* def __abs__(self):
* return abs( _numericValueOf(self) ) # <<<<<<<<<<<<<<
*
- * def __nonzero__(self):
+ * def __bool__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 724, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":685
+ /* "lxml/objectify.pyx":723
* return + _numericValueOf(self)
*
* def __abs__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":688
+/* "lxml/objectify.pyx":726
* return abs( _numericValueOf(self) )
*
- * def __nonzero__(self): # <<<<<<<<<<<<<<
+ * def __bool__(self): # <<<<<<<<<<<<<<
* return bool(_numericValueOf(self))
*
*/
/* Python wrapper */
-static int __pyx_pw_4lxml_9objectify_13NumberElement_43__nonzero__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_4lxml_9objectify_13NumberElement_43__nonzero__(PyObject *__pyx_v_self) {
+static int __pyx_pw_4lxml_9objectify_13NumberElement_65__bool__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_4lxml_9objectify_13NumberElement_65__bool__(PyObject *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_42__nonzero__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self));
+ __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_64__bool__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static int __pyx_pf_4lxml_9objectify_13NumberElement_42__nonzero__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
+static int __pyx_pf_4lxml_9objectify_13NumberElement_64__bool__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__nonzero__", 0);
+ __Pyx_RefNannySetupContext("__bool__", 0);
- /* "lxml/objectify.pyx":689
+ /* "lxml/objectify.pyx":727
*
- * def __nonzero__(self):
+ * def __bool__(self):
* return bool(_numericValueOf(self)) # <<<<<<<<<<<<<<
*
* def __invert__(self):
*/
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 727, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 689, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 727, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = (!(!__pyx_t_2));
goto __pyx_L0;
- /* "lxml/objectify.pyx":688
+ /* "lxml/objectify.pyx":726
* return abs( _numericValueOf(self) )
*
- * def __nonzero__(self): # <<<<<<<<<<<<<<
+ * def __bool__(self): # <<<<<<<<<<<<<<
* return bool(_numericValueOf(self))
*
*/
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("lxml.objectify.NumberElement.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "lxml/objectify.pyx":691
+/* "lxml/objectify.pyx":729
* return bool(_numericValueOf(self))
*
* def __invert__(self): # <<<<<<<<<<<<<<
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_45__invert__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_45__invert__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_67__invert__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_67__invert__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__invert__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_44__invert__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_66__invert__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_44__invert__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_66__invert__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__invert__", 0);
- /* "lxml/objectify.pyx":692
+ /* "lxml/objectify.pyx":730
*
* def __invert__(self):
* return ~ _numericValueOf(self) # <<<<<<<<<<<<<<
* def __lshift__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 730, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Invert(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 692, __pyx_L1_error)
+ __pyx_t_2 = PyNumber_Invert(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 730, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":691
+ /* "lxml/objectify.pyx":729
* return bool(_numericValueOf(self))
*
* def __invert__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":694
+/* "lxml/objectify.pyx":732
* return ~ _numericValueOf(self)
*
* def __lshift__(self, other): # <<<<<<<<<<<<<<
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_47__lshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_47__lshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_69__lshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_69__lshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__lshift__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_46__lshift__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_68__lshift__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_46__lshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_68__lshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__lshift__", 0);
- /* "lxml/objectify.pyx":695
+ /* "lxml/objectify.pyx":733
*
* def __lshift__(self, other):
* return _numericValueOf(self) << _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * def __rshift__(self, other):
+ * def __rlshift__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 733, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 695, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 733, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Lshift(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 695, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Lshift(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 733, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":694
+ /* "lxml/objectify.pyx":732
* return ~ _numericValueOf(self)
*
* def __lshift__(self, other): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":697
+/* "lxml/objectify.pyx":735
+ * return _numericValueOf(self) << _numericValueOf(other)
+ *
+ * def __rlshift__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) << _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_71__rlshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_71__rlshift__ = {"__rlshift__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_71__rlshift__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_71__rlshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rlshift__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_70__rlshift__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_70__rlshift__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rlshift__", 0);
+
+ /* "lxml/objectify.pyx":736
+ *
+ * def __rlshift__(self, other):
+ * return _numericValueOf(other) << _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __rshift__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 736, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_Lshift(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 736, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":735
* return _numericValueOf(self) << _numericValueOf(other)
*
+ * def __rlshift__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) << _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rlshift__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":738
+ * return _numericValueOf(other) << _numericValueOf(self)
+ *
* def __rshift__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) >> _numericValueOf(other)
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_49__rshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_49__rshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_73__rshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_73__rshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__rshift__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_48__rshift__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_72__rshift__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_48__rshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_72__rshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__rshift__", 0);
- /* "lxml/objectify.pyx":698
+ /* "lxml/objectify.pyx":739
*
* def __rshift__(self, other):
* return _numericValueOf(self) >> _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * def __and__(self, other):
+ * def __rrshift__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 698, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 739, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Rshift(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 698, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Rshift(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 739, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":697
- * return _numericValueOf(self) << _numericValueOf(other)
+ /* "lxml/objectify.pyx":738
+ * return _numericValueOf(other) << _numericValueOf(self)
*
* def __rshift__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) >> _numericValueOf(other)
return __pyx_r;
}
-/* "lxml/objectify.pyx":700
+/* "lxml/objectify.pyx":741
* return _numericValueOf(self) >> _numericValueOf(other)
*
+ * def __rrshift__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) >> _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_75__rrshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_75__rrshift__ = {"__rrshift__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_75__rrshift__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_75__rrshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rrshift__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_74__rrshift__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_74__rrshift__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rrshift__", 0);
+
+ /* "lxml/objectify.pyx":742
+ *
+ * def __rrshift__(self, other):
+ * return _numericValueOf(other) >> _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __and__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 742, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_Rshift(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 742, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":741
+ * return _numericValueOf(self) >> _numericValueOf(other)
+ *
+ * def __rrshift__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) >> _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rrshift__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":744
+ * return _numericValueOf(other) >> _numericValueOf(self)
+ *
* def __and__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) & _numericValueOf(other)
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_51__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_51__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_77__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_77__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__and__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_50__and__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_76__and__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_50__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_76__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__and__", 0);
- /* "lxml/objectify.pyx":701
+ /* "lxml/objectify.pyx":745
*
* def __and__(self, other):
* return _numericValueOf(self) & _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * def __or__(self, other):
+ * def __rand__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 701, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 745, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 701, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 745, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_And(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_And(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 745, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":700
- * return _numericValueOf(self) >> _numericValueOf(other)
+ /* "lxml/objectify.pyx":744
+ * return _numericValueOf(other) >> _numericValueOf(self)
*
* def __and__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) & _numericValueOf(other)
return __pyx_r;
}
-/* "lxml/objectify.pyx":703
+/* "lxml/objectify.pyx":747
* return _numericValueOf(self) & _numericValueOf(other)
*
+ * def __rand__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) & _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_79__rand__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_79__rand__ = {"__rand__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_79__rand__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_79__rand__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rand__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_78__rand__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_78__rand__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rand__", 0);
+
+ /* "lxml/objectify.pyx":748
+ *
+ * def __rand__(self, other):
+ * return _numericValueOf(other) & _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __or__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 748, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 748, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_And(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 748, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":747
+ * return _numericValueOf(self) & _numericValueOf(other)
+ *
+ * def __rand__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) & _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rand__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":750
+ * return _numericValueOf(other) & _numericValueOf(self)
+ *
* def __or__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) | _numericValueOf(other)
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_53__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_53__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_81__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_81__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__or__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_52__or__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_80__or__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_52__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_80__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__or__", 0);
- /* "lxml/objectify.pyx":704
+ /* "lxml/objectify.pyx":751
*
* def __or__(self, other):
* return _numericValueOf(self) | _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * def __xor__(self, other):
+ * def __ror__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 704, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 704, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Or(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Or(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":703
- * return _numericValueOf(self) & _numericValueOf(other)
+ /* "lxml/objectify.pyx":750
+ * return _numericValueOf(other) & _numericValueOf(self)
*
* def __or__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) | _numericValueOf(other)
return __pyx_r;
}
-/* "lxml/objectify.pyx":706
+/* "lxml/objectify.pyx":753
* return _numericValueOf(self) | _numericValueOf(other)
*
+ * def __ror__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) | _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_83__ror__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_83__ror__ = {"__ror__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_83__ror__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_83__ror__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__ror__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_82__ror__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_82__ror__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__ror__", 0);
+
+ /* "lxml/objectify.pyx":754
+ *
+ * def __ror__(self, other):
+ * return _numericValueOf(other) | _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ * def __xor__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_Or(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":753
+ * return _numericValueOf(self) | _numericValueOf(other)
+ *
+ * def __ror__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) | _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__ror__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":756
+ * return _numericValueOf(other) | _numericValueOf(self)
+ *
* def __xor__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) ^ _numericValueOf(other)
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_55__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_55__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_85__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_85__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__xor__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_54__xor__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_84__xor__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_54__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_84__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__xor__", 0);
- /* "lxml/objectify.pyx":707
+ /* "lxml/objectify.pyx":757
*
* def __xor__(self, other):
* return _numericValueOf(self) ^ _numericValueOf(other) # <<<<<<<<<<<<<<
*
- * cdef class IntElement(NumberElement):
+ * def __rxor__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 707, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 707, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 757, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Xor(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Xor(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 757, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":706
- * return _numericValueOf(self) | _numericValueOf(other)
+ /* "lxml/objectify.pyx":756
+ * return _numericValueOf(other) | _numericValueOf(self)
*
* def __xor__(self, other): # <<<<<<<<<<<<<<
* return _numericValueOf(self) ^ _numericValueOf(other)
return __pyx_r;
}
-/* "lxml/objectify.pyx":710
+/* "lxml/objectify.pyx":759
+ * return _numericValueOf(self) ^ _numericValueOf(other)
+ *
+ * def __rxor__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) ^ _numericValueOf(self)
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_87__rxor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13NumberElement_87__rxor__ = {"__rxor__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_87__rxor__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_87__rxor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rxor__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13NumberElement_86__rxor__(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_86__rxor__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rxor__", 0);
+
+ /* "lxml/objectify.pyx":760
+ *
+ * def __rxor__(self, other):
+ * return _numericValueOf(other) ^ _numericValueOf(self) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 760, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 760, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyNumber_Xor(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 760, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":759
+ * return _numericValueOf(self) ^ _numericValueOf(other)
+ *
+ * def __rxor__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) ^ _numericValueOf(self)
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.NumberElement.__rxor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":764
*
* cdef class IntElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_init", 0);
- /* "lxml/objectify.pyx":711
+ /* "lxml/objectify.pyx":765
* cdef class IntElement(NumberElement):
* def _init(self):
* self._parse_value = int # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->__pyx_base._parse_value);
__pyx_v_self->__pyx_base._parse_value = ((PyObject *)(&PyInt_Type));
- /* "lxml/objectify.pyx":710
+ /* "lxml/objectify.pyx":764
*
* cdef class IntElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":713
+/* "lxml/objectify.pyx":767
* self._parse_value = int
*
* def __index__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__index__", 0);
- /* "lxml/objectify.pyx":714
+ /* "lxml/objectify.pyx":768
*
* def __index__(self):
* return int(_parseNumber(self)) # <<<<<<<<<<<<<<
*
- * cdef class LongElement(NumberElement):
+ *
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 714, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 768, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 714, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":713
+ /* "lxml/objectify.pyx":767
* self._parse_value = int
*
* def __index__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":717
+/* "lxml/objectify.pyx":772
*
* cdef class LongElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_init", 0);
- /* "lxml/objectify.pyx":718
+ /* "lxml/objectify.pyx":773
* cdef class LongElement(NumberElement):
* def _init(self):
* self._parse_value = long # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->__pyx_base._parse_value);
__pyx_v_self->__pyx_base._parse_value = ((PyObject *)(&PyLong_Type));
- /* "lxml/objectify.pyx":717
+ /* "lxml/objectify.pyx":772
*
* cdef class LongElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":720
+/* "lxml/objectify.pyx":775
* self._parse_value = long
*
* def __index__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__index__", 0);
- /* "lxml/objectify.pyx":721
+ /* "lxml/objectify.pyx":776
*
* def __index__(self):
* return int(_parseNumber(self)) # <<<<<<<<<<<<<<
*
- * cdef class FloatElement(NumberElement):
+ *
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 721, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 776, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 721, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 776, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":720
+ /* "lxml/objectify.pyx":775
* self._parse_value = long
*
* def __index__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":724
+/* "lxml/objectify.pyx":780
*
* cdef class FloatElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_init", 0);
- /* "lxml/objectify.pyx":725
+ /* "lxml/objectify.pyx":781
* cdef class FloatElement(NumberElement):
* def _init(self):
* self._parse_value = float # <<<<<<<<<<<<<<
*
- * cdef class StringElement(ObjectifiedDataElement):
+ *
*/
__Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
__Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
__Pyx_DECREF(__pyx_v_self->__pyx_base._parse_value);
__pyx_v_self->__pyx_base._parse_value = ((PyObject *)(&PyFloat_Type));
- /* "lxml/objectify.pyx":724
+ /* "lxml/objectify.pyx":780
*
* cdef class FloatElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":735
+/* "lxml/objectify.pyx":792
* """
* @property
* def pyval(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__get__", 0);
- /* "lxml/objectify.pyx":736
+ /* "lxml/objectify.pyx":793
* @property
* def pyval(self):
* return textOf(self._c_node) or u'' # <<<<<<<<<<<<<<
* def __repr__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error)
+ __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 793, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 736, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 793, __pyx_L1_error)
if (!__pyx_t_3) {
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":735
+ /* "lxml/objectify.pyx":792
* """
* @property
* def pyval(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":738
+/* "lxml/objectify.pyx":795
* return textOf(self._c_node) or u''
*
* def __repr__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__repr__", 0);
- /* "lxml/objectify.pyx":739
+ /* "lxml/objectify.pyx":796
*
* def __repr__(self):
* return repr(textOf(self._c_node) or u'') # <<<<<<<<<<<<<<
* def strlen(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 739, __pyx_L1_error)
+ __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 739, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 796, __pyx_L1_error)
if (!__pyx_t_3) {
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
__Pyx_INCREF(__pyx_kp_u_);
__pyx_t_1 = __pyx_kp_u_;
__pyx_L3_bool_binop_done:;
- __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 739, __pyx_L1_error)
+ __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":738
+ /* "lxml/objectify.pyx":795
* return textOf(self._c_node) or u''
*
* def __repr__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":741
+/* "lxml/objectify.pyx":798
* return repr(textOf(self._c_node) or u'')
*
* def strlen(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("strlen", 0);
- /* "lxml/objectify.pyx":742
+ /* "lxml/objectify.pyx":799
*
* def strlen(self):
* text = textOf(self._c_node) # <<<<<<<<<<<<<<
* if text is None:
* return 0
*/
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 799, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_text = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":743
+ /* "lxml/objectify.pyx":800
* def strlen(self):
* text = textOf(self._c_node)
* if text is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":744
+ /* "lxml/objectify.pyx":801
* text = textOf(self._c_node)
* if text is None:
* return 0 # <<<<<<<<<<<<<<
__pyx_r = __pyx_int_0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":743
+ /* "lxml/objectify.pyx":800
* def strlen(self):
* text = textOf(self._c_node)
* if text is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":746
+ /* "lxml/objectify.pyx":803
* return 0
* else:
* return len(text) # <<<<<<<<<<<<<<
*
- * def __nonzero__(self):
+ * def __bool__(self):
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = PyObject_Length(__pyx_v_text); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 746, __pyx_L1_error)
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error)
+ __pyx_t_4 = PyObject_Length(__pyx_v_text); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 803, __pyx_L1_error)
+ __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 803, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
}
- /* "lxml/objectify.pyx":741
+ /* "lxml/objectify.pyx":798
* return repr(textOf(self._c_node) or u'')
*
* def strlen(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":748
+/* "lxml/objectify.pyx":805
* return len(text)
*
- * def __nonzero__(self): # <<<<<<<<<<<<<<
+ * def __bool__(self): # <<<<<<<<<<<<<<
* return bool(textOf(self._c_node))
*
*/
/* Python wrapper */
-static int __pyx_pw_4lxml_9objectify_13StringElement_5__nonzero__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_4lxml_9objectify_13StringElement_5__nonzero__(PyObject *__pyx_v_self) {
+static int __pyx_pw_4lxml_9objectify_13StringElement_5__bool__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_4lxml_9objectify_13StringElement_5__bool__(PyObject *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_4__nonzero__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self));
+ __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_4__bool__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static int __pyx_pf_4lxml_9objectify_13StringElement_4__nonzero__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
+static int __pyx_pf_4lxml_9objectify_13StringElement_4__bool__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__nonzero__", 0);
+ __Pyx_RefNannySetupContext("__bool__", 0);
- /* "lxml/objectify.pyx":749
+ /* "lxml/objectify.pyx":806
*
- * def __nonzero__(self):
+ * def __bool__(self):
* return bool(textOf(self._c_node)) # <<<<<<<<<<<<<<
*
* def __richcmp__(self, other, int op):
*/
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 749, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 806, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 749, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 806, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = (!(!__pyx_t_2));
goto __pyx_L0;
- /* "lxml/objectify.pyx":748
+ /* "lxml/objectify.pyx":805
* return len(text)
*
- * def __nonzero__(self): # <<<<<<<<<<<<<<
+ * def __bool__(self): # <<<<<<<<<<<<<<
* return bool(textOf(self._c_node))
*
*/
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("lxml.objectify.StringElement.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("lxml.objectify.StringElement.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "lxml/objectify.pyx":751
+/* "lxml/objectify.pyx":808
* return bool(textOf(self._c_node))
*
* def __richcmp__(self, other, int op): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__richcmp__", 0);
- /* "lxml/objectify.pyx":752
+ /* "lxml/objectify.pyx":809
*
* def __richcmp__(self, other, int op):
* return _richcmpPyvals(self, other, op) # <<<<<<<<<<<<<<
* def __hash__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__richcmpPyvals(((PyObject *)__pyx_v_self), __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__richcmpPyvals(((PyObject *)__pyx_v_self), __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 809, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":751
+ /* "lxml/objectify.pyx":808
* return bool(textOf(self._c_node))
*
* def __richcmp__(self, other, int op): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":754
+/* "lxml/objectify.pyx":811
* return _richcmpPyvals(self, other, op)
*
* def __hash__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__hash__", 0);
- /* "lxml/objectify.pyx":755
+ /* "lxml/objectify.pyx":812
*
* def __hash__(self):
* return hash(textOf(self._c_node) or u'') # <<<<<<<<<<<<<<
*
* def __add__(self, other):
*/
- __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 755, __pyx_L1_error)
+ __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 812, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 755, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 812, __pyx_L1_error)
if (!__pyx_t_3) {
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
__Pyx_INCREF(__pyx_kp_u_);
__pyx_t_1 = __pyx_kp_u_;
__pyx_L3_bool_binop_done:;
- __pyx_t_4 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 755, __pyx_L1_error)
+ __pyx_t_4 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 812, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_4;
goto __pyx_L0;
- /* "lxml/objectify.pyx":754
+ /* "lxml/objectify.pyx":811
* return _richcmpPyvals(self, other, op)
*
* def __hash__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":757
+/* "lxml/objectify.pyx":814
* return hash(textOf(self._c_node) or u'')
*
* def __add__(self, other): # <<<<<<<<<<<<<<
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- int __pyx_t_3;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__add__", 0);
__Pyx_INCREF(__pyx_v_other);
- /* "lxml/objectify.pyx":758
+ /* "lxml/objectify.pyx":815
*
* def __add__(self, other):
* text = _strValueOf(self) # <<<<<<<<<<<<<<
* other = _strValueOf(other)
- * if text is None:
+ * return text + other
*/
- __pyx_t_1 = __pyx_f_4lxml_9objectify__strValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 758, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__strValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_text = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":759
+ /* "lxml/objectify.pyx":816
* def __add__(self, other):
* text = _strValueOf(self)
* other = _strValueOf(other) # <<<<<<<<<<<<<<
- * if text is None:
- * return other
+ * return text + other
+ *
*/
- __pyx_t_1 = __pyx_f_4lxml_9objectify__strValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__strValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF_SET(__pyx_v_other, __pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":760
+ /* "lxml/objectify.pyx":817
* text = _strValueOf(self)
* other = _strValueOf(other)
- * if text is None: # <<<<<<<<<<<<<<
- * return other
- * if other is None:
+ * return text + other # <<<<<<<<<<<<<<
+ *
+ * def __radd__(self, other):
*/
- __pyx_t_2 = (__pyx_v_text == Py_None);
- __pyx_t_3 = (__pyx_t_2 != 0);
- if (__pyx_t_3) {
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = PyNumber_Add(__pyx_v_text, __pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
- /* "lxml/objectify.pyx":761
+ /* "lxml/objectify.pyx":814
+ * return hash(textOf(self._c_node) or u'')
+ *
+ * def __add__(self, other): # <<<<<<<<<<<<<<
+ * text = _strValueOf(self)
* other = _strValueOf(other)
- * if text is None:
- * return other # <<<<<<<<<<<<<<
- * if other is None:
- * return text
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_other);
- __pyx_r = __pyx_v_other;
- goto __pyx_L0;
- /* "lxml/objectify.pyx":760
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("lxml.objectify.StringElement.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XDECREF(__pyx_v_text);
+ __Pyx_XDECREF(__pyx_v_other);
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":819
+ * return text + other
+ *
+ * def __radd__(self, other): # <<<<<<<<<<<<<<
* text = _strValueOf(self)
* other = _strValueOf(other)
- * if text is None: # <<<<<<<<<<<<<<
- * return other
- * if other is None:
*/
- }
- /* "lxml/objectify.pyx":762
- * if text is None:
- * return other
- * if other is None: # <<<<<<<<<<<<<<
- * return text
- * return text + other
- */
- __pyx_t_3 = (__pyx_v_other == Py_None);
- __pyx_t_2 = (__pyx_t_3 != 0);
- if (__pyx_t_2) {
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_13__radd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13StringElement_13__radd__ = {"__radd__", (PyCFunction)__pyx_pw_4lxml_9objectify_13StringElement_13__radd__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_13__radd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__radd__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_12__radd__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
- /* "lxml/objectify.pyx":763
- * return other
- * if other is None:
- * return text # <<<<<<<<<<<<<<
- * return text + other
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__radd__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_v_text = NULL;
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__radd__", 0);
+ __Pyx_INCREF(__pyx_v_other);
+
+ /* "lxml/objectify.pyx":820
*
+ * def __radd__(self, other):
+ * text = _strValueOf(self) # <<<<<<<<<<<<<<
+ * other = _strValueOf(other)
+ * return other + text
*/
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(__pyx_v_text);
- __pyx_r = __pyx_v_text;
- goto __pyx_L0;
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__strValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 820, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_text = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":762
- * if text is None:
- * return other
- * if other is None: # <<<<<<<<<<<<<<
- * return text
- * return text + other
+ /* "lxml/objectify.pyx":821
+ * def __radd__(self, other):
+ * text = _strValueOf(self)
+ * other = _strValueOf(other) # <<<<<<<<<<<<<<
+ * return other + text
+ *
*/
- }
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__strValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 821, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF_SET(__pyx_v_other, __pyx_t_1);
+ __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":764
- * if other is None:
- * return text
- * return text + other # <<<<<<<<<<<<<<
+ /* "lxml/objectify.pyx":822
+ * text = _strValueOf(self)
+ * other = _strValueOf(other)
+ * return other + text # <<<<<<<<<<<<<<
*
* def __mul__(self, other):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyNumber_Add(__pyx_v_text, __pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 764, __pyx_L1_error)
+ __pyx_t_1 = PyNumber_Add(__pyx_v_other, __pyx_v_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 822, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":757
- * return hash(textOf(self._c_node) or u'')
+ /* "lxml/objectify.pyx":819
+ * return text + other
*
- * def __add__(self, other): # <<<<<<<<<<<<<<
+ * def __radd__(self, other): # <<<<<<<<<<<<<<
* text = _strValueOf(self)
* other = _strValueOf(other)
*/
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("lxml.objectify.StringElement.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("lxml.objectify.StringElement.__radd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_text);
return __pyx_r;
}
-/* "lxml/objectify.pyx":766
- * return text + other
+/* "lxml/objectify.pyx":824
+ * return other + text
*
* def __mul__(self, other): # <<<<<<<<<<<<<<
* if isinstance(self, StringElement):
- * return textOf((<StringElement>self)._c_node) * _numericValueOf(other)
+ * return (textOf((<StringElement>self)._c_node) or '') * _numericValueOf(other)
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_13__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_13__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_15__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_15__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__mul__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_12__mul__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_14__mul__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_14__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
int __pyx_t_1;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__mul__", 0);
- /* "lxml/objectify.pyx":767
+ /* "lxml/objectify.pyx":825
*
* def __mul__(self, other):
* if isinstance(self, StringElement): # <<<<<<<<<<<<<<
- * return textOf((<StringElement>self)._c_node) * _numericValueOf(other)
+ * return (textOf((<StringElement>self)._c_node) or '') * _numericValueOf(other)
* elif isinstance(other, StringElement):
*/
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_self, __pyx_ptype_4lxml_9objectify_StringElement);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":768
+ /* "lxml/objectify.pyx":826
* def __mul__(self, other):
* if isinstance(self, StringElement):
- * return textOf((<StringElement>self)._c_node) * _numericValueOf(other) # <<<<<<<<<<<<<<
+ * return (textOf((<StringElement>self)._c_node) or '') * _numericValueOf(other) # <<<<<<<<<<<<<<
* elif isinstance(other, StringElement):
- * return _numericValueOf(self) * textOf((<StringElement>other)._c_node)
+ * return _numericValueOf(self) * (textOf((<StringElement>other)._c_node) or '')
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = textOf(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 768, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 768, __pyx_L1_error)
+ __pyx_t_4 = textOf(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 826, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 768, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 826, __pyx_L1_error)
+ if (!__pyx_t_2) {
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ } else {
+ __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_3 = __pyx_t_4;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ goto __pyx_L4_bool_binop_done;
+ }
+ __Pyx_INCREF(__pyx_kp_s_);
+ __pyx_t_3 = __pyx_kp_s_;
+ __pyx_L4_bool_binop_done:;
+ __pyx_t_4 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 826, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 826, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_5 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":767
+ /* "lxml/objectify.pyx":825
*
* def __mul__(self, other):
* if isinstance(self, StringElement): # <<<<<<<<<<<<<<
- * return textOf((<StringElement>self)._c_node) * _numericValueOf(other)
+ * return (textOf((<StringElement>self)._c_node) or '') * _numericValueOf(other)
* elif isinstance(other, StringElement):
*/
}
- /* "lxml/objectify.pyx":769
+ /* "lxml/objectify.pyx":827
* if isinstance(self, StringElement):
- * return textOf((<StringElement>self)._c_node) * _numericValueOf(other)
+ * return (textOf((<StringElement>self)._c_node) or '') * _numericValueOf(other)
* elif isinstance(other, StringElement): # <<<<<<<<<<<<<<
- * return _numericValueOf(self) * textOf((<StringElement>other)._c_node)
+ * return _numericValueOf(self) * (textOf((<StringElement>other)._c_node) or '')
* else:
*/
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_4lxml_9objectify_StringElement);
__pyx_t_1 = (__pyx_t_2 != 0);
- if (likely(__pyx_t_1)) {
+ if (__pyx_t_1) {
- /* "lxml/objectify.pyx":770
- * return textOf((<StringElement>self)._c_node) * _numericValueOf(other)
+ /* "lxml/objectify.pyx":828
+ * return (textOf((<StringElement>self)._c_node) or '') * _numericValueOf(other)
* elif isinstance(other, StringElement):
- * return _numericValueOf(self) * textOf((<StringElement>other)._c_node) # <<<<<<<<<<<<<<
+ * return _numericValueOf(self) * (textOf((<StringElement>other)._c_node) or '') # <<<<<<<<<<<<<<
* else:
- * raise TypeError, u"invalid types for * operator"
+ * return NotImplemented
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 770, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 828, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = textOf(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_other)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 770, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 770, __pyx_L1_error)
+ __pyx_t_3 = textOf(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_other)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 828, __pyx_L1_error)
+ if (!__pyx_t_1) {
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ } else {
+ __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_4 = __pyx_t_3;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L6_bool_binop_done;
+ }
+ __Pyx_INCREF(__pyx_kp_s_);
+ __pyx_t_4 = __pyx_kp_s_;
+ __pyx_L6_bool_binop_done:;
+ __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 828, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":769
+ /* "lxml/objectify.pyx":827
* if isinstance(self, StringElement):
- * return textOf((<StringElement>self)._c_node) * _numericValueOf(other)
+ * return (textOf((<StringElement>self)._c_node) or '') * _numericValueOf(other)
* elif isinstance(other, StringElement): # <<<<<<<<<<<<<<
- * return _numericValueOf(self) * textOf((<StringElement>other)._c_node)
+ * return _numericValueOf(self) * (textOf((<StringElement>other)._c_node) or '')
* else:
*/
}
- /* "lxml/objectify.pyx":772
- * return _numericValueOf(self) * textOf((<StringElement>other)._c_node)
+ /* "lxml/objectify.pyx":830
+ * return _numericValueOf(self) * (textOf((<StringElement>other)._c_node) or '')
* else:
- * raise TypeError, u"invalid types for * operator" # <<<<<<<<<<<<<<
+ * return NotImplemented # <<<<<<<<<<<<<<
*
- * def __mod__(self, other):
+ * def __rmul__(self, other):
*/
/*else*/ {
- __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_invalid_types_for_operator, 0, 0);
- __PYX_ERR(0, 772, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(__pyx_builtin_NotImplemented);
+ __pyx_r = __pyx_builtin_NotImplemented;
+ goto __pyx_L0;
}
- /* "lxml/objectify.pyx":766
- * return text + other
+ /* "lxml/objectify.pyx":824
+ * return other + text
*
* def __mul__(self, other): # <<<<<<<<<<<<<<
* if isinstance(self, StringElement):
- * return textOf((<StringElement>self)._c_node) * _numericValueOf(other)
+ * return (textOf((<StringElement>self)._c_node) or '') * _numericValueOf(other)
*/
/* function exit code */
return __pyx_r;
}
-/* "lxml/objectify.pyx":774
- * raise TypeError, u"invalid types for * operator"
+/* "lxml/objectify.pyx":832
+ * return NotImplemented
+ *
+ * def __rmul__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) * (textOf((<StringElement>self)._c_node) or '')
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_17__rmul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13StringElement_17__rmul__ = {"__rmul__", (PyCFunction)__pyx_pw_4lxml_9objectify_13StringElement_17__rmul__, METH_O, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_17__rmul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__rmul__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_16__rmul__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_16__rmul__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self, PyObject *__pyx_v_other) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ int __pyx_t_4;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__rmul__", 0);
+
+ /* "lxml/objectify.pyx":833
+ *
+ * def __rmul__(self, other):
+ * return _numericValueOf(other) * (textOf((<StringElement>self)._c_node) or '') # <<<<<<<<<<<<<<
+ *
+ * def __mod__(self, other):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 833, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 833, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 833, __pyx_L1_error)
+ if (!__pyx_t_4) {
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ } else {
+ __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_2 = __pyx_t_3;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ goto __pyx_L3_bool_binop_done;
+ }
+ __Pyx_INCREF(__pyx_kp_s_);
+ __pyx_t_2 = __pyx_kp_s_;
+ __pyx_L3_bool_binop_done:;
+ __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 833, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":832
+ * return NotImplemented
+ *
+ * def __rmul__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) * (textOf((<StringElement>self)._c_node) or '')
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_AddTraceback("lxml.objectify.StringElement.__rmul__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":835
+ * return _numericValueOf(other) * (textOf((<StringElement>self)._c_node) or '')
*
* def __mod__(self, other): # <<<<<<<<<<<<<<
- * return _strValueOf(self) % other
+ * return (_strValueOf(self) or '') % other
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_15__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_15__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_19__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_19__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__mod__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_14__mod__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_18__mod__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_14__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_18__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__mod__", 0);
- /* "lxml/objectify.pyx":775
+ /* "lxml/objectify.pyx":836
*
* def __mod__(self, other):
- * return _strValueOf(self) % other # <<<<<<<<<<<<<<
+ * return (_strValueOf(self) or '') % other # <<<<<<<<<<<<<<
*
* def __int__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__strValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Remainder(__pyx_t_1, __pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__strValueOf(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 836, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 836, __pyx_L1_error)
+ if (!__pyx_t_3) {
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ } else {
+ __Pyx_INCREF(__pyx_t_2);
+ __pyx_t_1 = __pyx_t_2;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ goto __pyx_L3_bool_binop_done;
+ }
+ __Pyx_INCREF(__pyx_kp_s_);
+ __pyx_t_1 = __pyx_kp_s_;
+ __pyx_L3_bool_binop_done:;
+ __pyx_t_2 = PyNumber_Remainder(__pyx_t_1, __pyx_v_other); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 836, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":774
- * raise TypeError, u"invalid types for * operator"
+ /* "lxml/objectify.pyx":835
+ * return _numericValueOf(other) * (textOf((<StringElement>self)._c_node) or '')
*
* def __mod__(self, other): # <<<<<<<<<<<<<<
- * return _strValueOf(self) % other
+ * return (_strValueOf(self) or '') % other
*
*/
return __pyx_r;
}
-/* "lxml/objectify.pyx":777
- * return _strValueOf(self) % other
+/* "lxml/objectify.pyx":838
+ * return (_strValueOf(self) or '') % other
*
* def __int__(self): # <<<<<<<<<<<<<<
* return int(textOf(self._c_node))
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_17__int__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_17__int__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_21__int__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_21__int__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__int__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_16__int__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_20__int__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_16__int__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_20__int__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__int__", 0);
- /* "lxml/objectify.pyx":778
+ /* "lxml/objectify.pyx":839
*
* def __int__(self):
* return int(textOf(self._c_node)) # <<<<<<<<<<<<<<
* def __long__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 778, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 839, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 778, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 839, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":777
- * return _strValueOf(self) % other
+ /* "lxml/objectify.pyx":838
+ * return (_strValueOf(self) or '') % other
*
* def __int__(self): # <<<<<<<<<<<<<<
* return int(textOf(self._c_node))
return __pyx_r;
}
-/* "lxml/objectify.pyx":780
+/* "lxml/objectify.pyx":841
* return int(textOf(self._c_node))
*
* def __long__(self): # <<<<<<<<<<<<<<
/* Python wrapper */
#if PY_MAJOR_VERSION < 3
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_19__long__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_19__long__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_23__long__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_23__long__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__long__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_18__long__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_22__long__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
#endif /*!(#if PY_MAJOR_VERSION < 3)*/
#if PY_MAJOR_VERSION < 3
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_18__long__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_22__long__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__long__", 0);
- /* "lxml/objectify.pyx":781
+ /* "lxml/objectify.pyx":842
*
* def __long__(self):
* return long(textOf(self._c_node)) # <<<<<<<<<<<<<<
* def __float__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 781, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 842, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyLong_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 781, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyLong_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 842, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":780
+ /* "lxml/objectify.pyx":841
* return int(textOf(self._c_node))
*
* def __long__(self): # <<<<<<<<<<<<<<
}
#endif /*!(#if PY_MAJOR_VERSION < 3)*/
-/* "lxml/objectify.pyx":783
+/* "lxml/objectify.pyx":844
* return long(textOf(self._c_node))
*
* def __float__(self): # <<<<<<<<<<<<<<
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_21__float__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_21__float__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_25__float__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_25__float__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__float__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_20__float__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_24__float__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_20__float__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_24__float__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__float__", 0);
- /* "lxml/objectify.pyx":784
+ /* "lxml/objectify.pyx":845
*
* def __float__(self):
* return float(textOf(self._c_node)) # <<<<<<<<<<<<<<
* def __complex__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 845, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyNumber_Float(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 784, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyNumber_Float(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 845, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":783
+ /* "lxml/objectify.pyx":844
* return long(textOf(self._c_node))
*
* def __float__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":786
+/* "lxml/objectify.pyx":847
* return float(textOf(self._c_node))
*
* def __complex__(self): # <<<<<<<<<<<<<<
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_23__complex__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyMethodDef __pyx_mdef_4lxml_9objectify_13StringElement_23__complex__ = {"__complex__", (PyCFunction)__pyx_pw_4lxml_9objectify_13StringElement_23__complex__, METH_NOARGS, 0};
-static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_23__complex__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_27__complex__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_4lxml_9objectify_13StringElement_27__complex__ = {"__complex__", (PyCFunction)__pyx_pw_4lxml_9objectify_13StringElement_27__complex__, METH_NOARGS, 0};
+static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_27__complex__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__complex__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_22__complex__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_13StringElement_26__complex__(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_22__complex__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
+static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_26__complex__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__complex__", 0);
- /* "lxml/objectify.pyx":787
+ /* "lxml/objectify.pyx":848
*
* def __complex__(self):
* return complex(textOf(self._c_node)) # <<<<<<<<<<<<<<
*
- * cdef class NoneElement(ObjectifiedDataElement):
+ *
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 848, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyComplex_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 787, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyComplex_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 848, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":786
+ /* "lxml/objectify.pyx":847
* return float(textOf(self._c_node))
*
* def __complex__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":790
+/* "lxml/objectify.pyx":852
*
* cdef class NoneElement(ObjectifiedDataElement):
* def __str__(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__str__", 0);
- /* "lxml/objectify.pyx":791
+ /* "lxml/objectify.pyx":853
* cdef class NoneElement(ObjectifiedDataElement):
* def __str__(self):
* return u"None" # <<<<<<<<<<<<<<
__pyx_r = __pyx_n_u_None;
goto __pyx_L0;
- /* "lxml/objectify.pyx":790
+ /* "lxml/objectify.pyx":852
*
* cdef class NoneElement(ObjectifiedDataElement):
* def __str__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":793
+/* "lxml/objectify.pyx":855
* return u"None"
*
* def __repr__(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__repr__", 0);
- /* "lxml/objectify.pyx":794
+ /* "lxml/objectify.pyx":856
*
* def __repr__(self):
* return "None" # <<<<<<<<<<<<<<
*
- * def __nonzero__(self):
+ * def __bool__(self):
*/
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_n_s_None);
__pyx_r = __pyx_n_s_None;
goto __pyx_L0;
- /* "lxml/objectify.pyx":793
+ /* "lxml/objectify.pyx":855
* return u"None"
*
* def __repr__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":796
+/* "lxml/objectify.pyx":858
* return "None"
*
- * def __nonzero__(self): # <<<<<<<<<<<<<<
+ * def __bool__(self): # <<<<<<<<<<<<<<
* return False
*
*/
/* Python wrapper */
-static int __pyx_pw_4lxml_9objectify_11NoneElement_5__nonzero__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_4lxml_9objectify_11NoneElement_5__nonzero__(PyObject *__pyx_v_self) {
+static int __pyx_pw_4lxml_9objectify_11NoneElement_5__bool__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_4lxml_9objectify_11NoneElement_5__bool__(PyObject *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_11NoneElement_4__nonzero__(((struct __pyx_obj_4lxml_9objectify_NoneElement *)__pyx_v_self));
+ __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_11NoneElement_4__bool__(((struct __pyx_obj_4lxml_9objectify_NoneElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static int __pyx_pf_4lxml_9objectify_11NoneElement_4__nonzero__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self) {
+static int __pyx_pf_4lxml_9objectify_11NoneElement_4__bool__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__nonzero__", 0);
+ __Pyx_RefNannySetupContext("__bool__", 0);
- /* "lxml/objectify.pyx":797
+ /* "lxml/objectify.pyx":859
*
- * def __nonzero__(self):
+ * def __bool__(self):
* return False # <<<<<<<<<<<<<<
*
* def __richcmp__(self, other, int op):
__pyx_r = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":796
+ /* "lxml/objectify.pyx":858
* return "None"
*
- * def __nonzero__(self): # <<<<<<<<<<<<<<
+ * def __bool__(self): # <<<<<<<<<<<<<<
* return False
*
*/
return __pyx_r;
}
-/* "lxml/objectify.pyx":799
+/* "lxml/objectify.pyx":861
* return False
*
* def __richcmp__(self, other, int op): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__richcmp__", 0);
- /* "lxml/objectify.pyx":800
+ /* "lxml/objectify.pyx":862
*
* def __richcmp__(self, other, int op):
* if other is None or self is None: # <<<<<<<<<<<<<<
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":801
+ /* "lxml/objectify.pyx":863
* def __richcmp__(self, other, int op):
* if other is None or self is None:
* return python.PyObject_RichCompare(None, None, op) # <<<<<<<<<<<<<<
* return python.PyObject_RichCompare(None, other, op)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = PyObject_RichCompare(Py_None, Py_None, __pyx_v_op); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 801, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(Py_None, Py_None, __pyx_v_op); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 863, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":800
+ /* "lxml/objectify.pyx":862
*
* def __richcmp__(self, other, int op):
* if other is None or self is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":802
+ /* "lxml/objectify.pyx":864
* if other is None or self is None:
* return python.PyObject_RichCompare(None, None, op)
* if isinstance(self, NoneElement): # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":803
+ /* "lxml/objectify.pyx":865
* return python.PyObject_RichCompare(None, None, op)
* if isinstance(self, NoneElement):
* return python.PyObject_RichCompare(None, other, op) # <<<<<<<<<<<<<<
* return python.PyObject_RichCompare(self, None, op)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = PyObject_RichCompare(Py_None, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 803, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(Py_None, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 865, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":802
+ /* "lxml/objectify.pyx":864
* if other is None or self is None:
* return python.PyObject_RichCompare(None, None, op)
* if isinstance(self, NoneElement): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":805
+ /* "lxml/objectify.pyx":867
* return python.PyObject_RichCompare(None, other, op)
* else:
* return python.PyObject_RichCompare(self, None, op) # <<<<<<<<<<<<<<
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_self), Py_None, __pyx_v_op); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_self), Py_None, __pyx_v_op); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 867, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
}
- /* "lxml/objectify.pyx":799
+ /* "lxml/objectify.pyx":861
* return False
*
* def __richcmp__(self, other, int op): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":807
+/* "lxml/objectify.pyx":869
* return python.PyObject_RichCompare(self, None, op)
*
* def __hash__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__hash__", 0);
- /* "lxml/objectify.pyx":808
+ /* "lxml/objectify.pyx":870
*
* def __hash__(self):
* return hash(None) # <<<<<<<<<<<<<<
*
* @property
*/
- __pyx_t_1 = PyObject_Hash(Py_None); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 808, __pyx_L1_error)
+ __pyx_t_1 = PyObject_Hash(Py_None); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 870, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
- /* "lxml/objectify.pyx":807
+ /* "lxml/objectify.pyx":869
* return python.PyObject_RichCompare(self, None, op)
*
* def __hash__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":811
+/* "lxml/objectify.pyx":873
*
* @property
* def pyval(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
- /* "lxml/objectify.pyx":812
+ /* "lxml/objectify.pyx":874
* @property
* def pyval(self):
* return None # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "lxml/objectify.pyx":811
+ /* "lxml/objectify.pyx":873
*
* @property
* def pyval(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":821
+/* "lxml/objectify.pyx":883
* Python's bool type.
* """
* def _init(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_init", 0);
- /* "lxml/objectify.pyx":822
+ /* "lxml/objectify.pyx":884
* """
* def _init(self):
* self._parse_value = __parseBool # <<<<<<<<<<<<<<
*
- * def __nonzero__(self):
+ * def __bool__(self):
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_parseBool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 822, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_parseBool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 884, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx_base._parse_value);
__pyx_v_self->__pyx_base.__pyx_base._parse_value = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":821
+ /* "lxml/objectify.pyx":883
* Python's bool type.
* """
* def _init(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":824
+/* "lxml/objectify.pyx":886
* self._parse_value = __parseBool
*
- * def __nonzero__(self): # <<<<<<<<<<<<<<
+ * def __bool__(self): # <<<<<<<<<<<<<<
* return __parseBool(textOf(self._c_node))
*
*/
/* Python wrapper */
-static int __pyx_pw_4lxml_9objectify_11BoolElement_3__nonzero__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_4lxml_9objectify_11BoolElement_3__nonzero__(PyObject *__pyx_v_self) {
+static int __pyx_pw_4lxml_9objectify_11BoolElement_3__bool__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_4lxml_9objectify_11BoolElement_3__bool__(PyObject *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
- __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_2__nonzero__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self));
+ __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_2__bool__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static int __pyx_pf_4lxml_9objectify_11BoolElement_2__nonzero__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
+static int __pyx_pf_4lxml_9objectify_11BoolElement_2__bool__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
int __pyx_r;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
- __Pyx_RefNannySetupContext("__nonzero__", 0);
+ __Pyx_RefNannySetupContext("__bool__", 0);
- /* "lxml/objectify.pyx":825
+ /* "lxml/objectify.pyx":887
*
- * def __nonzero__(self):
+ * def __bool__(self):
* return __parseBool(textOf(self._c_node)) # <<<<<<<<<<<<<<
*
- * def __richcmp__(self, other, int op):
+ * def __int__(self):
*/
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 825, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 825, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
goto __pyx_L0;
- /* "lxml/objectify.pyx":824
+ /* "lxml/objectify.pyx":886
* self._parse_value = __parseBool
*
- * def __nonzero__(self): # <<<<<<<<<<<<<<
+ * def __bool__(self): # <<<<<<<<<<<<<<
* return __parseBool(textOf(self._c_node))
*
*/
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("lxml.objectify.BoolElement.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("lxml.objectify.BoolElement.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "lxml/objectify.pyx":827
+/* "lxml/objectify.pyx":889
+ * return __parseBool(textOf(self._c_node))
+ *
+ * def __int__(self): # <<<<<<<<<<<<<<
+ * return 0 + __parseBool(textOf(self._c_node))
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_5__int__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_5__int__(PyObject *__pyx_v_self) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__int__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_4__int__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_4__int__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__int__", 0);
+
+ /* "lxml/objectify.pyx":890
+ *
+ * def __int__(self):
+ * return 0 + __parseBool(textOf(self._c_node)) # <<<<<<<<<<<<<<
+ *
+ * def __float__(self):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 890, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 890, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyInt_From_long((0 + __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 890, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":889
* return __parseBool(textOf(self._c_node))
*
+ * def __int__(self): # <<<<<<<<<<<<<<
+ * return 0 + __parseBool(textOf(self._c_node))
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("lxml.objectify.BoolElement.__int__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":892
+ * return 0 + __parseBool(textOf(self._c_node))
+ *
+ * def __float__(self): # <<<<<<<<<<<<<<
+ * return 0.0 + __parseBool(textOf(self._c_node))
+ *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_7__float__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_7__float__(PyObject *__pyx_v_self) {
+ PyObject *__pyx_r = 0;
+ __Pyx_RefNannyDeclarations
+ __Pyx_RefNannySetupContext("__float__ (wrapper)", 0);
+ __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_6__float__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self));
+
+ /* function exit code */
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_6__float__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
+ PyObject *__pyx_r = NULL;
+ __Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
+ int __pyx_t_2;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+ __Pyx_RefNannySetupContext("__float__", 0);
+
+ /* "lxml/objectify.pyx":893
+ *
+ * def __float__(self):
+ * return 0.0 + __parseBool(textOf(self._c_node)) # <<<<<<<<<<<<<<
+ *
+ * def __richcmp__(self, other, int op):
+ */
+ __Pyx_XDECREF(__pyx_r);
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 893, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 893, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyFloat_FromDouble((0.0 + __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 893, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
+ goto __pyx_L0;
+
+ /* "lxml/objectify.pyx":892
+ * return 0 + __parseBool(textOf(self._c_node))
+ *
+ * def __float__(self): # <<<<<<<<<<<<<<
+ * return 0.0 + __parseBool(textOf(self._c_node))
+ *
+ */
+
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_AddTraceback("lxml.objectify.BoolElement.__float__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = NULL;
+ __pyx_L0:;
+ __Pyx_XGIVEREF(__pyx_r);
+ __Pyx_RefNannyFinishContext();
+ return __pyx_r;
+}
+
+/* "lxml/objectify.pyx":895
+ * return 0.0 + __parseBool(textOf(self._c_node))
+ *
* def __richcmp__(self, other, int op): # <<<<<<<<<<<<<<
* return _richcmpPyvals(self, other, op)
*
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
+static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_9__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_9__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_4__richcmp__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));
+ __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_8__richcmp__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_4__richcmp__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
+static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_8__richcmp__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__richcmp__", 0);
- /* "lxml/objectify.pyx":828
+ /* "lxml/objectify.pyx":896
*
* def __richcmp__(self, other, int op):
* return _richcmpPyvals(self, other, op) # <<<<<<<<<<<<<<
* def __hash__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__richcmpPyvals(((PyObject *)__pyx_v_self), __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 828, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__richcmpPyvals(((PyObject *)__pyx_v_self), __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 896, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":827
- * return __parseBool(textOf(self._c_node))
+ /* "lxml/objectify.pyx":895
+ * return 0.0 + __parseBool(textOf(self._c_node))
*
* def __richcmp__(self, other, int op): # <<<<<<<<<<<<<<
* return _richcmpPyvals(self, other, op)
return __pyx_r;
}
-/* "lxml/objectify.pyx":830
+/* "lxml/objectify.pyx":898
* return _richcmpPyvals(self, other, op)
*
* def __hash__(self): # <<<<<<<<<<<<<<
*/
/* Python wrapper */
-static Py_hash_t __pyx_pw_4lxml_9objectify_11BoolElement_7__hash__(PyObject *__pyx_v_self); /*proto*/
-static Py_hash_t __pyx_pw_4lxml_9objectify_11BoolElement_7__hash__(PyObject *__pyx_v_self) {
+static Py_hash_t __pyx_pw_4lxml_9objectify_11BoolElement_11__hash__(PyObject *__pyx_v_self); /*proto*/
+static Py_hash_t __pyx_pw_4lxml_9objectify_11BoolElement_11__hash__(PyObject *__pyx_v_self) {
Py_hash_t __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_6__hash__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_10__hash__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static Py_hash_t __pyx_pf_4lxml_9objectify_11BoolElement_6__hash__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
+static Py_hash_t __pyx_pf_4lxml_9objectify_11BoolElement_10__hash__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
Py_hash_t __pyx_r;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__hash__", 0);
- /* "lxml/objectify.pyx":831
+ /* "lxml/objectify.pyx":899
*
* def __hash__(self):
* return hash(__parseBool(textOf(self._c_node))) # <<<<<<<<<<<<<<
*
* def __str__(self):
*/
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 831, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 831, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 831, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_3 == ((Py_hash_t)-1))) __PYX_ERR(0, 831, __pyx_L1_error)
+ __pyx_t_3 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_3 == ((Py_hash_t)-1))) __PYX_ERR(0, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_3;
goto __pyx_L0;
- /* "lxml/objectify.pyx":830
+ /* "lxml/objectify.pyx":898
* return _richcmpPyvals(self, other, op)
*
* def __hash__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":833
+/* "lxml/objectify.pyx":901
* return hash(__parseBool(textOf(self._c_node)))
*
* def __str__(self): # <<<<<<<<<<<<<<
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_9__str__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_9__str__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_13__str__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_13__str__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_8__str__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_12__str__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_8__str__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
+static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_12__str__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__str__", 0);
- /* "lxml/objectify.pyx":834
+ /* "lxml/objectify.pyx":902
*
* def __str__(self):
* return unicode(__parseBool(textOf(self._c_node))) # <<<<<<<<<<<<<<
* def __repr__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 834, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 902, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 834, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 902, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 834, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 902, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 834, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 902, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":833
+ /* "lxml/objectify.pyx":901
* return hash(__parseBool(textOf(self._c_node)))
*
* def __str__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":836
+/* "lxml/objectify.pyx":904
* return unicode(__parseBool(textOf(self._c_node)))
*
* def __repr__(self): # <<<<<<<<<<<<<<
*/
/* Python wrapper */
-static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_11__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_11__repr__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_15__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_15__repr__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
- __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_10__repr__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self));
+ __pyx_r = __pyx_pf_4lxml_9objectify_11BoolElement_14__repr__(((struct __pyx_obj_4lxml_9objectify_BoolElement *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_10__repr__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
+static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_14__repr__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__repr__", 0);
- /* "lxml/objectify.pyx":837
+ /* "lxml/objectify.pyx":905
*
* def __repr__(self):
* return repr(__parseBool(textOf(self._c_node))) # <<<<<<<<<<<<<<
* @property
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 837, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 837, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 837, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 837, __pyx_L1_error)
+ __pyx_t_3 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":836
+ /* "lxml/objectify.pyx":904
* return unicode(__parseBool(textOf(self._c_node)))
*
* def __repr__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":840
+/* "lxml/objectify.pyx":908
*
* @property
* def pyval(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__get__", 0);
- /* "lxml/objectify.pyx":841
+ /* "lxml/objectify.pyx":909
* @property
* def pyval(self):
* return __parseBool(textOf(self._c_node)) # <<<<<<<<<<<<<<
*
- * def __checkBool(s):
+ *
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 909, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 841, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 909, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 909, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":840
+ /* "lxml/objectify.pyx":908
*
* @property
* def pyval(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":843
- * return __parseBool(textOf(self._c_node))
+/* "lxml/objectify.pyx":912
+ *
*
* def __checkBool(s): # <<<<<<<<<<<<<<
* cdef int value = -1
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__checkBool", 0);
- /* "lxml/objectify.pyx":844
+ /* "lxml/objectify.pyx":913
*
* def __checkBool(s):
* cdef int value = -1 # <<<<<<<<<<<<<<
*/
__pyx_v_value = -1;
- /* "lxml/objectify.pyx":845
+ /* "lxml/objectify.pyx":914
* def __checkBool(s):
* cdef int value = -1
* if s is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":846
+ /* "lxml/objectify.pyx":915
* cdef int value = -1
* if s is not None:
* value = __parseBoolAsInt(s) # <<<<<<<<<<<<<<
* if value == -1:
* raise ValueError
*/
- __pyx_t_3 = __pyx_f_4lxml_9objectify___parseBoolAsInt(__pyx_v_s); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 846, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_9objectify___parseBoolAsInt(__pyx_v_s); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 915, __pyx_L1_error)
__pyx_v_value = __pyx_t_3;
- /* "lxml/objectify.pyx":845
+ /* "lxml/objectify.pyx":914
* def __checkBool(s):
* cdef int value = -1
* if s is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":847
+ /* "lxml/objectify.pyx":916
* if s is not None:
* value = __parseBoolAsInt(s)
* if value == -1: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_value == -1L) != 0);
if (unlikely(__pyx_t_2)) {
- /* "lxml/objectify.pyx":848
+ /* "lxml/objectify.pyx":917
* value = __parseBoolAsInt(s)
* if value == -1:
* raise ValueError # <<<<<<<<<<<<<<
*
- * cpdef bint __parseBool(s) except -1:
+ *
*/
__Pyx_Raise(__pyx_builtin_ValueError, 0, 0, 0);
- __PYX_ERR(0, 848, __pyx_L1_error)
+ __PYX_ERR(0, 917, __pyx_L1_error)
- /* "lxml/objectify.pyx":847
+ /* "lxml/objectify.pyx":916
* if s is not None:
* value = __parseBoolAsInt(s)
* if value == -1: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":843
- * return __parseBool(textOf(self._c_node))
+ /* "lxml/objectify.pyx":912
+ *
*
* def __checkBool(s): # <<<<<<<<<<<<<<
* cdef int value = -1
return __pyx_r;
}
-/* "lxml/objectify.pyx":850
- * raise ValueError
+/* "lxml/objectify.pyx":920
+ *
*
* cpdef bint __parseBool(s) except -1: # <<<<<<<<<<<<<<
* cdef int value
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__parseBool", 0);
- /* "lxml/objectify.pyx":852
+ /* "lxml/objectify.pyx":922
* cpdef bint __parseBool(s) except -1:
* cdef int value
* if s is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":853
+ /* "lxml/objectify.pyx":923
* cdef int value
* if s is None:
* return False # <<<<<<<<<<<<<<
__pyx_r = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":852
+ /* "lxml/objectify.pyx":922
* cpdef bint __parseBool(s) except -1:
* cdef int value
* if s is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":854
+ /* "lxml/objectify.pyx":924
* if s is None:
* return False
* value = __parseBoolAsInt(s) # <<<<<<<<<<<<<<
* if value == -1:
* raise ValueError, f"Invalid boolean value: '{s}'"
*/
- __pyx_t_3 = __pyx_f_4lxml_9objectify___parseBoolAsInt(__pyx_v_s); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 854, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_9objectify___parseBoolAsInt(__pyx_v_s); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 924, __pyx_L1_error)
__pyx_v_value = __pyx_t_3;
- /* "lxml/objectify.pyx":855
+ /* "lxml/objectify.pyx":925
* return False
* value = __parseBoolAsInt(s)
* if value == -1: # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_value == -1L) != 0);
if (unlikely(__pyx_t_2)) {
- /* "lxml/objectify.pyx":856
+ /* "lxml/objectify.pyx":926
* value = __parseBoolAsInt(s)
* if value == -1:
* raise ValueError, f"Invalid boolean value: '{s}'" # <<<<<<<<<<<<<<
* return value
*
*/
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 856, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 926, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 0;
__pyx_t_6 = 127;
__pyx_t_5 += 24;
__Pyx_GIVEREF(__pyx_kp_u_Invalid_boolean_value);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Invalid_boolean_value);
- __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_s, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 856, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_s, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_6;
__pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
__pyx_t_5 += 1;
__Pyx_GIVEREF(__pyx_kp_u__4);
PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__4);
- __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 856, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_7, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __PYX_ERR(0, 856, __pyx_L1_error)
+ __PYX_ERR(0, 926, __pyx_L1_error)
- /* "lxml/objectify.pyx":855
+ /* "lxml/objectify.pyx":925
* return False
* value = __parseBoolAsInt(s)
* if value == -1: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":857
+ /* "lxml/objectify.pyx":927
* if value == -1:
* raise ValueError, f"Invalid boolean value: '{s}'"
* return value # <<<<<<<<<<<<<<
*
- * cdef inline int __parseBoolAsInt(text) except -2:
+ *
*/
__pyx_r = __pyx_v_value;
goto __pyx_L0;
- /* "lxml/objectify.pyx":850
- * raise ValueError
+ /* "lxml/objectify.pyx":920
+ *
*
* cpdef bint __parseBool(s) except -1: # <<<<<<<<<<<<<<
* cdef int value
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__parseBool", 0);
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify___parseBool(__pyx_v_s, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 850, __pyx_L1_error)
- __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 850, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify___parseBool(__pyx_v_s, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 920, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 920, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
return __pyx_r;
}
-/* "lxml/objectify.pyx":859
- * return value
+/* "lxml/objectify.pyx":930
+ *
*
* cdef inline int __parseBoolAsInt(text) except -2: # <<<<<<<<<<<<<<
* if text == 'false':
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__parseBoolAsInt", 0);
- /* "lxml/objectify.pyx":860
+ /* "lxml/objectify.pyx":931
*
* cdef inline int __parseBoolAsInt(text) except -2:
* if text == 'false': # <<<<<<<<<<<<<<
* return 0
* elif text == 'true':
*/
- __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_n_s_false, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 860, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_n_s_false, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 931, __pyx_L1_error)
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":861
+ /* "lxml/objectify.pyx":932
* cdef inline int __parseBoolAsInt(text) except -2:
* if text == 'false':
* return 0 # <<<<<<<<<<<<<<
__pyx_r = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":860
+ /* "lxml/objectify.pyx":931
*
* cdef inline int __parseBoolAsInt(text) except -2:
* if text == 'false': # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":862
+ /* "lxml/objectify.pyx":933
* if text == 'false':
* return 0
* elif text == 'true': # <<<<<<<<<<<<<<
* return 1
* elif text == '0':
*/
- __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_n_s_true, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 862, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_n_s_true, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 933, __pyx_L1_error)
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":863
+ /* "lxml/objectify.pyx":934
* return 0
* elif text == 'true':
* return 1 # <<<<<<<<<<<<<<
__pyx_r = 1;
goto __pyx_L0;
- /* "lxml/objectify.pyx":862
+ /* "lxml/objectify.pyx":933
* if text == 'false':
* return 0
* elif text == 'true': # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":864
+ /* "lxml/objectify.pyx":935
* elif text == 'true':
* return 1
* elif text == '0': # <<<<<<<<<<<<<<
* return 0
* elif text == '1':
*/
- __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_kp_s_0, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 864, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_kp_s_0, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 935, __pyx_L1_error)
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":865
+ /* "lxml/objectify.pyx":936
* return 1
* elif text == '0':
* return 0 # <<<<<<<<<<<<<<
__pyx_r = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":864
+ /* "lxml/objectify.pyx":935
* elif text == 'true':
* return 1
* elif text == '0': # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":866
+ /* "lxml/objectify.pyx":937
* elif text == '0':
* return 0
* elif text == '1': # <<<<<<<<<<<<<<
* return 1
* return -1
*/
- __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_kp_s_1, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 866, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_kp_s_1, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 937, __pyx_L1_error)
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":867
+ /* "lxml/objectify.pyx":938
* return 0
* elif text == '1':
* return 1 # <<<<<<<<<<<<<<
__pyx_r = 1;
goto __pyx_L0;
- /* "lxml/objectify.pyx":866
+ /* "lxml/objectify.pyx":937
* elif text == '0':
* return 0
* elif text == '1': # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":868
+ /* "lxml/objectify.pyx":939
* elif text == '1':
* return 1
* return -1 # <<<<<<<<<<<<<<
*
- * cdef object _parseNumber(NumberElement element):
+ *
*/
__pyx_r = -1;
goto __pyx_L0;
- /* "lxml/objectify.pyx":859
- * return value
+ /* "lxml/objectify.pyx":930
+ *
*
* cdef inline int __parseBoolAsInt(text) except -2: # <<<<<<<<<<<<<<
* if text == 'false':
return __pyx_r;
}
-/* "lxml/objectify.pyx":870
- * return -1
+/* "lxml/objectify.pyx":942
+ *
*
* cdef object _parseNumber(NumberElement element): # <<<<<<<<<<<<<<
* return element._parse_value(textOf(element._c_node))
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_parseNumber", 0);
- /* "lxml/objectify.pyx":871
+ /* "lxml/objectify.pyx":943
*
* cdef object _parseNumber(NumberElement element):
* return element._parse_value(textOf(element._c_node)) # <<<<<<<<<<<<<<
*
- * cdef object _strValueOf(obj):
+ *
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = textOf(__pyx_v_element->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 871, __pyx_L1_error)
+ __pyx_t_2 = textOf(__pyx_v_element->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 943, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_element->_parse_value);
__pyx_t_3 = __pyx_v_element->_parse_value; __pyx_t_4 = NULL;
__pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 871, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":870
- * return -1
+ /* "lxml/objectify.pyx":942
+ *
*
* cdef object _parseNumber(NumberElement element): # <<<<<<<<<<<<<<
* return element._parse_value(textOf(element._c_node))
return __pyx_r;
}
-/* "lxml/objectify.pyx":873
- * return element._parse_value(textOf(element._c_node))
+/* "lxml/objectify.pyx":946
+ *
*
* cdef object _strValueOf(obj): # <<<<<<<<<<<<<<
* if python._isString(obj):
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_strValueOf", 0);
- /* "lxml/objectify.pyx":874
+ /* "lxml/objectify.pyx":947
*
* cdef object _strValueOf(obj):
* if python._isString(obj): # <<<<<<<<<<<<<<
__pyx_t_1 = (_isString(__pyx_v_obj) != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":875
+ /* "lxml/objectify.pyx":948
* cdef object _strValueOf(obj):
* if python._isString(obj):
* return obj # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_obj;
goto __pyx_L0;
- /* "lxml/objectify.pyx":874
+ /* "lxml/objectify.pyx":947
*
* cdef object _strValueOf(obj):
* if python._isString(obj): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":876
+ /* "lxml/objectify.pyx":949
* if python._isString(obj):
* return obj
* if isinstance(obj, _Element): # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":877
+ /* "lxml/objectify.pyx":950
* return obj
* if isinstance(obj, _Element):
* return textOf((<_Element>obj)._c_node) or u'' # <<<<<<<<<<<<<<
* return u''
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = textOf(((struct LxmlElement *)__pyx_v_obj)->_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 877, __pyx_L1_error)
+ __pyx_t_4 = textOf(((struct LxmlElement *)__pyx_v_obj)->_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 950, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 877, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 950, __pyx_L1_error)
if (!__pyx_t_2) {
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else {
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":876
+ /* "lxml/objectify.pyx":949
* if python._isString(obj):
* return obj
* if isinstance(obj, _Element): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":878
+ /* "lxml/objectify.pyx":951
* if isinstance(obj, _Element):
* return textOf((<_Element>obj)._c_node) or u''
* if obj is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":879
+ /* "lxml/objectify.pyx":952
* return textOf((<_Element>obj)._c_node) or u''
* if obj is None:
* return u'' # <<<<<<<<<<<<<<
__pyx_r = __pyx_kp_u_;
goto __pyx_L0;
- /* "lxml/objectify.pyx":878
+ /* "lxml/objectify.pyx":951
* if isinstance(obj, _Element):
* return textOf((<_Element>obj)._c_node) or u''
* if obj is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":880
+ /* "lxml/objectify.pyx":953
* if obj is None:
* return u''
* return unicode(obj) # <<<<<<<<<<<<<<
*
- * cdef object _numericValueOf(obj):
+ *
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 880, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 953, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":873
- * return element._parse_value(textOf(element._c_node))
+ /* "lxml/objectify.pyx":946
+ *
*
* cdef object _strValueOf(obj): # <<<<<<<<<<<<<<
* if python._isString(obj):
return __pyx_r;
}
-/* "lxml/objectify.pyx":882
- * return unicode(obj)
+/* "lxml/objectify.pyx":956
+ *
*
* cdef object _numericValueOf(obj): # <<<<<<<<<<<<<<
* if isinstance(obj, NumberElement):
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_numericValueOf", 0);
- /* "lxml/objectify.pyx":883
+ /* "lxml/objectify.pyx":957
*
* cdef object _numericValueOf(obj):
* if isinstance(obj, NumberElement): # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":884
+ /* "lxml/objectify.pyx":958
* cdef object _numericValueOf(obj):
* if isinstance(obj, NumberElement):
* return _parseNumber(<NumberElement>obj) # <<<<<<<<<<<<<<
* # not always numeric, but Python will raise the right exception
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __pyx_f_4lxml_9objectify__parseNumber(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_obj)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 884, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_4lxml_9objectify__parseNumber(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_obj)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 958, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":883
+ /* "lxml/objectify.pyx":957
*
* cdef object _numericValueOf(obj):
* if isinstance(obj, NumberElement): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":885
+ /* "lxml/objectify.pyx":959
* if isinstance(obj, NumberElement):
* return _parseNumber(<NumberElement>obj)
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_6);
/*try:*/ {
- /* "lxml/objectify.pyx":887
+ /* "lxml/objectify.pyx":961
* try:
* # not always numeric, but Python will raise the right exception
* return obj.pyval # <<<<<<<<<<<<<<
* pass
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 887, __pyx_L4_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 961, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L8_try_return;
- /* "lxml/objectify.pyx":885
+ /* "lxml/objectify.pyx":959
* if isinstance(obj, NumberElement):
* return _parseNumber(<NumberElement>obj)
* try: # <<<<<<<<<<<<<<
__pyx_L4_error:;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":888
+ /* "lxml/objectify.pyx":962
* # not always numeric, but Python will raise the right exception
* return obj.pyval
* except AttributeError: # <<<<<<<<<<<<<<
goto __pyx_L6_except_error;
__pyx_L6_except_error:;
- /* "lxml/objectify.pyx":885
+ /* "lxml/objectify.pyx":959
* if isinstance(obj, NumberElement):
* return _parseNumber(<NumberElement>obj)
* try: # <<<<<<<<<<<<<<
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
}
- /* "lxml/objectify.pyx":890
+ /* "lxml/objectify.pyx":964
* except AttributeError:
* pass
* return obj # <<<<<<<<<<<<<<
*
- * cdef _richcmpPyvals(left, right, int op):
+ *
*/
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_obj);
__pyx_r = __pyx_v_obj;
goto __pyx_L0;
- /* "lxml/objectify.pyx":882
- * return unicode(obj)
+ /* "lxml/objectify.pyx":956
+ *
*
* cdef object _numericValueOf(obj): # <<<<<<<<<<<<<<
* if isinstance(obj, NumberElement):
return __pyx_r;
}
-/* "lxml/objectify.pyx":892
- * return obj
+/* "lxml/objectify.pyx":967
+ *
*
* cdef _richcmpPyvals(left, right, int op): # <<<<<<<<<<<<<<
* left = getattr(left, 'pyval', left)
__Pyx_INCREF(__pyx_v_left);
__Pyx_INCREF(__pyx_v_right);
- /* "lxml/objectify.pyx":893
+ /* "lxml/objectify.pyx":968
*
* cdef _richcmpPyvals(left, right, int op):
* left = getattr(left, 'pyval', left) # <<<<<<<<<<<<<<
* right = getattr(right, 'pyval', right)
* return python.PyObject_RichCompare(left, right, op)
*/
- __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_left, __pyx_n_s_pyval, __pyx_v_left); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 893, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_left, __pyx_n_s_pyval, __pyx_v_left); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 968, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF_SET(__pyx_v_left, __pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":894
+ /* "lxml/objectify.pyx":969
* cdef _richcmpPyvals(left, right, int op):
* left = getattr(left, 'pyval', left)
* right = getattr(right, 'pyval', right) # <<<<<<<<<<<<<<
* return python.PyObject_RichCompare(left, right, op)
*
*/
- __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_right, __pyx_n_s_pyval, __pyx_v_right); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 894, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_right, __pyx_n_s_pyval, __pyx_v_right); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 969, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF_SET(__pyx_v_right, __pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":895
+ /* "lxml/objectify.pyx":970
* left = getattr(left, 'pyval', left)
* right = getattr(right, 'pyval', right)
* return python.PyObject_RichCompare(left, right, op) # <<<<<<<<<<<<<<
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_left, __pyx_v_right, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error)
+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_left, __pyx_v_right, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 970, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":892
- * return obj
+ /* "lxml/objectify.pyx":967
+ *
*
* cdef _richcmpPyvals(left, right, int op): # <<<<<<<<<<<<<<
* left = getattr(left, 'pyval', left)
return __pyx_r;
}
-/* "lxml/objectify.pyx":926
+/* "lxml/objectify.pyx":1001
* cdef object _type
* cdef list _schema_types
* def __init__(self, name, type_check, type_class, stringify=None): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_type_check)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 1); __PYX_ERR(0, 926, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 1); __PYX_ERR(0, 1001, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_type_class)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 2); __PYX_ERR(0, 926, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 2); __PYX_ERR(0, 1001, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 926, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1001, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 926, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1001, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.PyType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_INCREF(__pyx_v_name);
__Pyx_INCREF(__pyx_v_stringify);
- /* "lxml/objectify.pyx":927
+ /* "lxml/objectify.pyx":1002
* cdef list _schema_types
* def __init__(self, name, type_check, type_class, stringify=None):
* if isinstance(name, bytes): # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":928
+ /* "lxml/objectify.pyx":1003
* def __init__(self, name, type_check, type_class, stringify=None):
* if isinstance(name, bytes):
* name = (<bytes>name).decode('ascii') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_name == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
- __PYX_ERR(0, 928, __pyx_L1_error)
+ __PYX_ERR(0, 1003, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 928, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1003, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_name, __pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":927
+ /* "lxml/objectify.pyx":1002
* cdef list _schema_types
* def __init__(self, name, type_check, type_class, stringify=None):
* if isinstance(name, bytes): # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "lxml/objectify.pyx":929
+ /* "lxml/objectify.pyx":1004
* if isinstance(name, bytes):
* name = (<bytes>name).decode('ascii')
* elif not isinstance(name, unicode): # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
if (unlikely(__pyx_t_1)) {
- /* "lxml/objectify.pyx":930
+ /* "lxml/objectify.pyx":1005
* name = (<bytes>name).decode('ascii')
* elif not isinstance(name, unicode):
* raise TypeError, u"Type name must be a string" # <<<<<<<<<<<<<<
* raise TypeError, u"Type check function must be callable (or None)"
*/
__Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Type_name_must_be_a_string, 0, 0);
- __PYX_ERR(0, 930, __pyx_L1_error)
+ __PYX_ERR(0, 1005, __pyx_L1_error)
- /* "lxml/objectify.pyx":929
+ /* "lxml/objectify.pyx":1004
* if isinstance(name, bytes):
* name = (<bytes>name).decode('ascii')
* elif not isinstance(name, unicode): # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "lxml/objectify.pyx":931
+ /* "lxml/objectify.pyx":1006
* elif not isinstance(name, unicode):
* raise TypeError, u"Type name must be a string"
* if type_check is not None and not callable(type_check): # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_t_4;
goto __pyx_L5_bool_binop_done;
}
- __pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_type_check); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 931, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_type_check); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1006, __pyx_L1_error)
__pyx_t_2 = ((!(__pyx_t_4 != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L5_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
- /* "lxml/objectify.pyx":932
+ /* "lxml/objectify.pyx":1007
* raise TypeError, u"Type name must be a string"
* if type_check is not None and not callable(type_check):
* raise TypeError, u"Type check function must be callable (or None)" # <<<<<<<<<<<<<<
* not issubclass(type_class, ObjectifiedDataElement):
*/
__Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Type_check_function_must_be_call, 0, 0);
- __PYX_ERR(0, 932, __pyx_L1_error)
+ __PYX_ERR(0, 1007, __pyx_L1_error)
- /* "lxml/objectify.pyx":931
+ /* "lxml/objectify.pyx":1006
* elif not isinstance(name, unicode):
* raise TypeError, u"Type name must be a string"
* if type_check is not None and not callable(type_check): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":933
+ /* "lxml/objectify.pyx":1008
* if type_check is not None and not callable(type_check):
* raise TypeError, u"Type check function must be callable (or None)"
* if name != TREE_PYTYPE_NAME and \ # <<<<<<<<<<<<<<
* not issubclass(type_class, ObjectifiedDataElement):
* raise TypeError, \
*/
- __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1008, __pyx_L1_error)
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L8_bool_binop_done;
}
- /* "lxml/objectify.pyx":934
+ /* "lxml/objectify.pyx":1009
* raise TypeError, u"Type check function must be callable (or None)"
* if name != TREE_PYTYPE_NAME and \
* not issubclass(type_class, ObjectifiedDataElement): # <<<<<<<<<<<<<<
* raise TypeError, \
* u"Data classes must inherit from ObjectifiedDataElement"
*/
- __pyx_t_2 = PyObject_IsSubclass(__pyx_v_type_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedDataElement)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 934, __pyx_L1_error)
+ __pyx_t_2 = PyObject_IsSubclass(__pyx_v_type_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedDataElement)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1009, __pyx_L1_error)
__pyx_t_4 = ((!(__pyx_t_2 != 0)) != 0);
__pyx_t_1 = __pyx_t_4;
__pyx_L8_bool_binop_done:;
- /* "lxml/objectify.pyx":933
+ /* "lxml/objectify.pyx":1008
* if type_check is not None and not callable(type_check):
* raise TypeError, u"Type check function must be callable (or None)"
* if name != TREE_PYTYPE_NAME and \ # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_t_1)) {
- /* "lxml/objectify.pyx":935
+ /* "lxml/objectify.pyx":1010
* if name != TREE_PYTYPE_NAME and \
* not issubclass(type_class, ObjectifiedDataElement):
* raise TypeError, \ # <<<<<<<<<<<<<<
* self.name = name
*/
__Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Data_classes_must_inherit_from_O, 0, 0);
- __PYX_ERR(0, 935, __pyx_L1_error)
+ __PYX_ERR(0, 1010, __pyx_L1_error)
- /* "lxml/objectify.pyx":933
+ /* "lxml/objectify.pyx":1008
* if type_check is not None and not callable(type_check):
* raise TypeError, u"Type check function must be callable (or None)"
* if name != TREE_PYTYPE_NAME and \ # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":937
+ /* "lxml/objectify.pyx":1012
* raise TypeError, \
* u"Data classes must inherit from ObjectifiedDataElement"
* self.name = name # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->name);
__pyx_v_self->name = __pyx_v_name;
- /* "lxml/objectify.pyx":938
+ /* "lxml/objectify.pyx":1013
* u"Data classes must inherit from ObjectifiedDataElement"
* self.name = name
* self._type = type_class # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_type);
__pyx_v_self->_type = __pyx_v_type_class;
- /* "lxml/objectify.pyx":939
+ /* "lxml/objectify.pyx":1014
* self.name = name
* self._type = type_class
* self.type_check = type_check # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->type_check);
__pyx_v_self->type_check = __pyx_v_type_check;
- /* "lxml/objectify.pyx":940
+ /* "lxml/objectify.pyx":1015
* self._type = type_class
* self.type_check = type_check
* if stringify is None: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_t_1 != 0);
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":941
+ /* "lxml/objectify.pyx":1016
* self.type_check = type_check
* if stringify is None:
* stringify = unicode # <<<<<<<<<<<<<<
__Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
__Pyx_DECREF_SET(__pyx_v_stringify, ((PyObject *)(&PyUnicode_Type)));
- /* "lxml/objectify.pyx":940
+ /* "lxml/objectify.pyx":1015
* self._type = type_class
* self.type_check = type_check
* if stringify is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":942
+ /* "lxml/objectify.pyx":1017
* if stringify is None:
* stringify = unicode
* self.stringify = stringify # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->stringify);
__pyx_v_self->stringify = __pyx_v_stringify;
- /* "lxml/objectify.pyx":943
+ /* "lxml/objectify.pyx":1018
* stringify = unicode
* self.stringify = stringify
* self._schema_types = [] # <<<<<<<<<<<<<<
*
* def __repr__(self):
*/
- __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 943, __pyx_L1_error)
+ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1018, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_schema_types);
__pyx_v_self->_schema_types = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":926
+ /* "lxml/objectify.pyx":1001
* cdef object _type
* cdef list _schema_types
* def __init__(self, name, type_check, type_class, stringify=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":945
+/* "lxml/objectify.pyx":1020
* self._schema_types = []
*
* def __repr__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__repr__", 0);
- /* "lxml/objectify.pyx":946
+ /* "lxml/objectify.pyx":1021
*
* def __repr__(self):
* return "PyType(%s, %s)" % (self.name, self._type.__name__) # <<<<<<<<<<<<<<
* def register(self, before=None, after=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_type, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_type, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1021, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1021, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_self->name);
__Pyx_GIVEREF(__pyx_v_self->name);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_PyType_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_PyType_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1021, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":945
+ /* "lxml/objectify.pyx":1020
* self._schema_types = []
*
* def __repr__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":948
+/* "lxml/objectify.pyx":1023
* return "PyType(%s, %s)" % (self.name, self._type.__name__)
*
* def register(self, before=None, after=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "register") < 0)) __PYX_ERR(0, 948, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "register") < 0)) __PYX_ERR(0, 1023, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("register", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 948, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("register", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1023, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.PyType.register", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_INCREF(__pyx_v_before);
__Pyx_INCREF(__pyx_v_after);
- /* "lxml/objectify.pyx":958
+ /* "lxml/objectify.pyx":1033
* ignored. Raises ValueError if the dependencies cannot be fulfilled.
* """
* if self.name == TREE_PYTYPE_NAME: # <<<<<<<<<<<<<<
* raise ValueError, u"Cannot register tree type"
* if self.type_check is not None:
*/
- __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->name, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 958, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->name, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1033, __pyx_L1_error)
if (unlikely(__pyx_t_1)) {
- /* "lxml/objectify.pyx":959
+ /* "lxml/objectify.pyx":1034
* """
* if self.name == TREE_PYTYPE_NAME:
* raise ValueError, u"Cannot register tree type" # <<<<<<<<<<<<<<
* for item in _TYPE_CHECKS:
*/
__Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Cannot_register_tree_type, 0, 0);
- __PYX_ERR(0, 959, __pyx_L1_error)
+ __PYX_ERR(0, 1034, __pyx_L1_error)
- /* "lxml/objectify.pyx":958
+ /* "lxml/objectify.pyx":1033
* ignored. Raises ValueError if the dependencies cannot be fulfilled.
* """
* if self.name == TREE_PYTYPE_NAME: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":960
+ /* "lxml/objectify.pyx":1035
* if self.name == TREE_PYTYPE_NAME:
* raise ValueError, u"Cannot register tree type"
* if self.type_check is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":961
+ /* "lxml/objectify.pyx":1036
* raise ValueError, u"Cannot register tree type"
* if self.type_check is not None:
* for item in _TYPE_CHECKS: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 961, __pyx_L1_error)
+ __PYX_ERR(0, 1036, __pyx_L1_error)
}
__pyx_t_3 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
for (;;) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 961, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1036, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 961, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1036, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_5);
__pyx_t_5 = 0;
- /* "lxml/objectify.pyx":962
+ /* "lxml/objectify.pyx":1037
* if self.type_check is not None:
* for item in _TYPE_CHECKS:
* if item[0] is self.type_check: # <<<<<<<<<<<<<<
* _TYPE_CHECKS.remove(item)
* break
*/
- __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 962, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1037, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = (__pyx_t_5 == __pyx_v_self->type_check);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":963
+ /* "lxml/objectify.pyx":1038
* for item in _TYPE_CHECKS:
* if item[0] is self.type_check:
* _TYPE_CHECKS.remove(item) # <<<<<<<<<<<<<<
* break
* entry = (self.type_check, self)
*/
- __pyx_t_5 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyList_Type_remove, __pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_v_item); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 963, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyList_Type_remove, __pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_v_item); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1038, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "lxml/objectify.pyx":964
+ /* "lxml/objectify.pyx":1039
* if item[0] is self.type_check:
* _TYPE_CHECKS.remove(item)
* break # <<<<<<<<<<<<<<
*/
goto __pyx_L6_break;
- /* "lxml/objectify.pyx":962
+ /* "lxml/objectify.pyx":1037
* if self.type_check is not None:
* for item in _TYPE_CHECKS:
* if item[0] is self.type_check: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":961
+ /* "lxml/objectify.pyx":1036
* raise ValueError, u"Cannot register tree type"
* if self.type_check is not None:
* for item in _TYPE_CHECKS: # <<<<<<<<<<<<<<
__pyx_L6_break:;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":965
+ /* "lxml/objectify.pyx":1040
* _TYPE_CHECKS.remove(item)
* break
* entry = (self.type_check, self) # <<<<<<<<<<<<<<
* first_pos = 0
* last_pos = -1
*/
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 965, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1040, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_self->type_check);
__Pyx_GIVEREF(__pyx_v_self->type_check);
__pyx_v_entry = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":966
+ /* "lxml/objectify.pyx":1041
* break
* entry = (self.type_check, self)
* first_pos = 0 # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_int_0);
__pyx_v_first_pos = __pyx_int_0;
- /* "lxml/objectify.pyx":967
+ /* "lxml/objectify.pyx":1042
* entry = (self.type_check, self)
* first_pos = 0
* last_pos = -1 # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_int_neg_1);
__pyx_v_last_pos = __pyx_int_neg_1;
- /* "lxml/objectify.pyx":968
+ /* "lxml/objectify.pyx":1043
* first_pos = 0
* last_pos = -1
* if before or after: # <<<<<<<<<<<<<<
* if before is None:
* before = ()
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_before); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 968, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_before); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1043, __pyx_L1_error)
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L9_bool_binop_done;
}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_after); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 968, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_after); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1043, __pyx_L1_error)
__pyx_t_1 = __pyx_t_2;
__pyx_L9_bool_binop_done:;
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":969
+ /* "lxml/objectify.pyx":1044
* last_pos = -1
* if before or after:
* if before is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":970
+ /* "lxml/objectify.pyx":1045
* if before or after:
* if before is None:
* before = () # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_empty_tuple);
__Pyx_DECREF_SET(__pyx_v_before, __pyx_empty_tuple);
- /* "lxml/objectify.pyx":969
+ /* "lxml/objectify.pyx":1044
* last_pos = -1
* if before or after:
* if before is None: # <<<<<<<<<<<<<<
goto __pyx_L11;
}
- /* "lxml/objectify.pyx":971
+ /* "lxml/objectify.pyx":1046
* if before is None:
* before = ()
* elif after is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":972
+ /* "lxml/objectify.pyx":1047
* before = ()
* elif after is None:
* after = () # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_empty_tuple);
__Pyx_DECREF_SET(__pyx_v_after, __pyx_empty_tuple);
- /* "lxml/objectify.pyx":971
+ /* "lxml/objectify.pyx":1046
* if before is None:
* before = ()
* elif after is None: # <<<<<<<<<<<<<<
}
__pyx_L11:;
- /* "lxml/objectify.pyx":973
+ /* "lxml/objectify.pyx":1048
* elif after is None:
* after = ()
* for i, (check, pytype) in enumerate(_TYPE_CHECKS): # <<<<<<<<<<<<<<
for (;;) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 973, __pyx_L1_error)
+ __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1048, __pyx_L1_error)
#else
- __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 973, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 973, __pyx_L1_error)
+ __PYX_ERR(0, 1048, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_8);
#else
- __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 973, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 973, __pyx_L1_error)
+ __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
#endif
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 973, __pyx_L1_error)
+ __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
__Pyx_GOTREF(__pyx_t_7);
index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L14_unpacking_failed;
__Pyx_GOTREF(__pyx_t_8);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(0, 973, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(0, 1048, __pyx_L1_error)
__pyx_t_10 = NULL;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L15_unpacking_done;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_10 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 973, __pyx_L1_error)
+ __PYX_ERR(0, 1048, __pyx_L1_error)
__pyx_L15_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_check, __pyx_t_7);
__pyx_t_8 = 0;
__Pyx_INCREF(__pyx_t_3);
__Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
- __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 973, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_3);
__pyx_t_3 = __pyx_t_6;
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":974
+ /* "lxml/objectify.pyx":1049
* after = ()
* for i, (check, pytype) in enumerate(_TYPE_CHECKS):
* if last_pos == -1 and pytype.name in before: # <<<<<<<<<<<<<<
* last_pos = i
* if pytype.name in after:
*/
- __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 974, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1049, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 974, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1049, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L17_bool_binop_done;
}
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 974, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1049, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_before, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 974, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_before, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1049, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_11 = (__pyx_t_2 != 0);
__pyx_t_1 = __pyx_t_11;
__pyx_L17_bool_binop_done:;
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":975
+ /* "lxml/objectify.pyx":1050
* for i, (check, pytype) in enumerate(_TYPE_CHECKS):
* if last_pos == -1 and pytype.name in before:
* last_pos = i # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_i);
__Pyx_DECREF_SET(__pyx_v_last_pos, __pyx_v_i);
- /* "lxml/objectify.pyx":974
+ /* "lxml/objectify.pyx":1049
* after = ()
* for i, (check, pytype) in enumerate(_TYPE_CHECKS):
* if last_pos == -1 and pytype.name in before: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":976
+ /* "lxml/objectify.pyx":1051
* if last_pos == -1 and pytype.name in before:
* last_pos = i
* if pytype.name in after: # <<<<<<<<<<<<<<
* first_pos = i+1
* if last_pos == -1:
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 976, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1051, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_after, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 976, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_after, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1051, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_11 = (__pyx_t_1 != 0);
if (__pyx_t_11) {
- /* "lxml/objectify.pyx":977
+ /* "lxml/objectify.pyx":1052
* last_pos = i
* if pytype.name in after:
* first_pos = i+1 # <<<<<<<<<<<<<<
* if last_pos == -1:
* _TYPE_CHECKS.append(entry)
*/
- __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 977, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF_SET(__pyx_v_first_pos, __pyx_t_6);
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":976
+ /* "lxml/objectify.pyx":1051
* if last_pos == -1 and pytype.name in before:
* last_pos = i
* if pytype.name in after: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":973
+ /* "lxml/objectify.pyx":1048
* elif after is None:
* after = ()
* for i, (check, pytype) in enumerate(_TYPE_CHECKS): # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":968
+ /* "lxml/objectify.pyx":1043
* first_pos = 0
* last_pos = -1
* if before or after: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":978
+ /* "lxml/objectify.pyx":1053
* if pytype.name in after:
* first_pos = i+1
* if last_pos == -1: # <<<<<<<<<<<<<<
* _TYPE_CHECKS.append(entry)
* elif first_pos > last_pos:
*/
- __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 978, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 978, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1053, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_11) {
- /* "lxml/objectify.pyx":979
+ /* "lxml/objectify.pyx":1054
* first_pos = i+1
* if last_pos == -1:
* _TYPE_CHECKS.append(entry) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
- __PYX_ERR(0, 979, __pyx_L1_error)
+ __PYX_ERR(0, 1054, __pyx_L1_error)
}
- __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_v_entry); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 979, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_v_entry); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1054, __pyx_L1_error)
- /* "lxml/objectify.pyx":978
+ /* "lxml/objectify.pyx":1053
* if pytype.name in after:
* first_pos = i+1
* if last_pos == -1: # <<<<<<<<<<<<<<
goto __pyx_L20;
}
- /* "lxml/objectify.pyx":980
+ /* "lxml/objectify.pyx":1055
* if last_pos == -1:
* _TYPE_CHECKS.append(entry)
* elif first_pos > last_pos: # <<<<<<<<<<<<<<
* raise ValueError, u"inconsistent before/after dependencies"
* else:
*/
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_first_pos, __pyx_v_last_pos, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 980, __pyx_L1_error)
- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 980, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_first_pos, __pyx_v_last_pos, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1055, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(__pyx_t_11)) {
- /* "lxml/objectify.pyx":981
+ /* "lxml/objectify.pyx":1056
* _TYPE_CHECKS.append(entry)
* elif first_pos > last_pos:
* raise ValueError, u"inconsistent before/after dependencies" # <<<<<<<<<<<<<<
* _TYPE_CHECKS.insert(last_pos, entry)
*/
__Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_inconsistent_before_after_depend, 0, 0);
- __PYX_ERR(0, 981, __pyx_L1_error)
+ __PYX_ERR(0, 1056, __pyx_L1_error)
- /* "lxml/objectify.pyx":980
+ /* "lxml/objectify.pyx":1055
* if last_pos == -1:
* _TYPE_CHECKS.append(entry)
* elif first_pos > last_pos: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":983
+ /* "lxml/objectify.pyx":1058
* raise ValueError, u"inconsistent before/after dependencies"
* else:
* _TYPE_CHECKS.insert(last_pos, entry) # <<<<<<<<<<<<<<
/*else*/ {
if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "insert");
- __PYX_ERR(0, 983, __pyx_L1_error)
+ __PYX_ERR(0, 1058, __pyx_L1_error)
}
- __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_last_pos); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 983, __pyx_L1_error)
- __pyx_t_12 = PyList_Insert(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_t_4, __pyx_v_entry); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 983, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_last_pos); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1058, __pyx_L1_error)
+ __pyx_t_12 = PyList_Insert(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_t_4, __pyx_v_entry); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1058, __pyx_L1_error)
}
__pyx_L20:;
- /* "lxml/objectify.pyx":960
+ /* "lxml/objectify.pyx":1035
* if self.name == TREE_PYTYPE_NAME:
* raise ValueError, u"Cannot register tree type"
* if self.type_check is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":985
+ /* "lxml/objectify.pyx":1060
* _TYPE_CHECKS.insert(last_pos, entry)
*
* _PYTYPE_DICT[self.name] = self # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 985, __pyx_L1_error)
+ __PYX_ERR(0, 1060, __pyx_L1_error)
}
- if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, ((PyObject *)__pyx_v_self)) < 0)) __PYX_ERR(0, 985, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, ((PyObject *)__pyx_v_self)) < 0)) __PYX_ERR(0, 1060, __pyx_L1_error)
- /* "lxml/objectify.pyx":986
+ /* "lxml/objectify.pyx":1061
*
* _PYTYPE_DICT[self.name] = self
* for xs_type in self._schema_types: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_schema_types == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 986, __pyx_L1_error)
+ __PYX_ERR(0, 1061, __pyx_L1_error)
}
__pyx_t_3 = __pyx_v_self->_schema_types; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
for (;;) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 986, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1061, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 986, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1061, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_XDECREF_SET(__pyx_v_xs_type, __pyx_t_5);
__pyx_t_5 = 0;
- /* "lxml/objectify.pyx":987
+ /* "lxml/objectify.pyx":1062
* _PYTYPE_DICT[self.name] = self
* for xs_type in self._schema_types:
* _SCHEMA_TYPE_DICT[xs_type] = self # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 987, __pyx_L1_error)
+ __PYX_ERR(0, 1062, __pyx_L1_error)
}
- if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type, ((PyObject *)__pyx_v_self)) < 0)) __PYX_ERR(0, 987, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type, ((PyObject *)__pyx_v_self)) < 0)) __PYX_ERR(0, 1062, __pyx_L1_error)
- /* "lxml/objectify.pyx":986
+ /* "lxml/objectify.pyx":1061
*
* _PYTYPE_DICT[self.name] = self
* for xs_type in self._schema_types: # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":948
+ /* "lxml/objectify.pyx":1023
* return "PyType(%s, %s)" % (self.name, self._type.__name__)
*
* def register(self, before=None, after=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":989
+/* "lxml/objectify.pyx":1064
* _SCHEMA_TYPE_DICT[xs_type] = self
*
* def unregister(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("unregister", 0);
- /* "lxml/objectify.pyx":991
+ /* "lxml/objectify.pyx":1066
* def unregister(self):
* u"unregister(self)"
* if _PYTYPE_DICT.get(self.name) is self: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 991, __pyx_L1_error)
+ __PYX_ERR(0, 1066, __pyx_L1_error)
}
- __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 991, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = (__pyx_t_1 == ((PyObject *)__pyx_v_self));
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":992
+ /* "lxml/objectify.pyx":1067
* u"unregister(self)"
* if _PYTYPE_DICT.get(self.name) is self:
* del _PYTYPE_DICT[self.name] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 992, __pyx_L1_error)
+ __PYX_ERR(0, 1067, __pyx_L1_error)
}
- if (unlikely(PyDict_DelItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name) < 0)) __PYX_ERR(0, 992, __pyx_L1_error)
+ if (unlikely(PyDict_DelItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name) < 0)) __PYX_ERR(0, 1067, __pyx_L1_error)
- /* "lxml/objectify.pyx":991
+ /* "lxml/objectify.pyx":1066
* def unregister(self):
* u"unregister(self)"
* if _PYTYPE_DICT.get(self.name) is self: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":993
+ /* "lxml/objectify.pyx":1068
* if _PYTYPE_DICT.get(self.name) is self:
* del _PYTYPE_DICT[self.name]
* for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()): # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
- __PYX_ERR(0, 993, __pyx_L1_error)
+ __PYX_ERR(0, 1068, __pyx_L1_error)
}
- __pyx_t_1 = __Pyx_PyDict_Items(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_Items(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1068, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 993, __pyx_L1_error)
+ __pyx_t_4 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1068, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
for (;;) {
if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 993, __pyx_L1_error)
+ __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1068, __pyx_L1_error)
#else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 993, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1068, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 993, __pyx_L1_error)
+ __PYX_ERR(0, 1068, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx_t_7);
#else
- __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 993, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1068, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 993, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1068, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 993, __pyx_L1_error)
+ __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1068, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
__Pyx_GOTREF(__pyx_t_6);
index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_7);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 993, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1068, __pyx_L1_error)
__pyx_t_9 = NULL;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L7_unpacking_done;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 993, __pyx_L1_error)
+ __PYX_ERR(0, 1068, __pyx_L1_error)
__pyx_L7_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_xs_type, __pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_7);
__pyx_t_7 = 0;
- /* "lxml/objectify.pyx":994
+ /* "lxml/objectify.pyx":1069
* del _PYTYPE_DICT[self.name]
* for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
* if pytype is self: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":995
+ /* "lxml/objectify.pyx":1070
* for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
* if pytype is self:
* del _SCHEMA_TYPE_DICT[xs_type] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 995, __pyx_L1_error)
+ __PYX_ERR(0, 1070, __pyx_L1_error)
}
- if (unlikely(PyDict_DelItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type) < 0)) __PYX_ERR(0, 995, __pyx_L1_error)
+ if (unlikely(PyDict_DelItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type) < 0)) __PYX_ERR(0, 1070, __pyx_L1_error)
- /* "lxml/objectify.pyx":994
+ /* "lxml/objectify.pyx":1069
* del _PYTYPE_DICT[self.name]
* for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
* if pytype is self: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":993
+ /* "lxml/objectify.pyx":1068
* if _PYTYPE_DICT.get(self.name) is self:
* del _PYTYPE_DICT[self.name]
* for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":996
+ /* "lxml/objectify.pyx":1071
* if pytype is self:
* del _SCHEMA_TYPE_DICT[xs_type]
* if self.type_check is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":997
+ /* "lxml/objectify.pyx":1072
* del _SCHEMA_TYPE_DICT[xs_type]
* if self.type_check is None:
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "lxml/objectify.pyx":996
+ /* "lxml/objectify.pyx":1071
* if pytype is self:
* del _SCHEMA_TYPE_DICT[xs_type]
* if self.type_check is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":998
+ /* "lxml/objectify.pyx":1073
* if self.type_check is None:
* return
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_12);
/*try:*/ {
- /* "lxml/objectify.pyx":999
+ /* "lxml/objectify.pyx":1074
* return
* try:
* _TYPE_CHECKS.remove( (self.type_check, self) ) # <<<<<<<<<<<<<<
* except ValueError:
* pass
*/
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L10_error)
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1074, __pyx_L10_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_self->type_check);
__Pyx_GIVEREF(__pyx_v_self->type_check);
__Pyx_INCREF(((PyObject *)__pyx_v_self));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self));
PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
- __pyx_t_4 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyList_Type_remove, __pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 999, __pyx_L10_error)
+ __pyx_t_4 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyList_Type_remove, __pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1074, __pyx_L10_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":998
+ /* "lxml/objectify.pyx":1073
* if self.type_check is None:
* return
* try: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "lxml/objectify.pyx":1000
+ /* "lxml/objectify.pyx":1075
* try:
* _TYPE_CHECKS.remove( (self.type_check, self) )
* except ValueError: # <<<<<<<<<<<<<<
goto __pyx_L12_except_error;
__pyx_L12_except_error:;
- /* "lxml/objectify.pyx":998
+ /* "lxml/objectify.pyx":1073
* if self.type_check is None:
* return
* try: # <<<<<<<<<<<<<<
__pyx_L15_try_end:;
}
- /* "lxml/objectify.pyx":989
+ /* "lxml/objectify.pyx":1064
* _SCHEMA_TYPE_DICT[xs_type] = self
*
* def unregister(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1008
+/* "lxml/objectify.pyx":1083
* Note that this must be set before registering the type!
* """
* def __get__(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
- /* "lxml/objectify.pyx":1009
+ /* "lxml/objectify.pyx":1084
* """
* def __get__(self):
* return self._schema_types # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_self->_schema_types;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1008
+ /* "lxml/objectify.pyx":1083
* Note that this must be set before registering the type!
* """
* def __get__(self): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1010
+/* "lxml/objectify.pyx":1085
* def __get__(self):
* return self._schema_types
* def __set__(self, types): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__set__", 0);
- /* "lxml/objectify.pyx":1011
+ /* "lxml/objectify.pyx":1086
* return self._schema_types
* def __set__(self, types):
* self._schema_types = list(map(unicode, types)) # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
__Pyx_GIVEREF(((PyObject *)(&PyUnicode_Type)));
__Pyx_INCREF(__pyx_v_types);
__Pyx_GIVEREF(__pyx_v_types);
PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_types);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1011, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1086, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error)
+ __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GIVEREF(__pyx_t_1);
__pyx_v_self->_schema_types = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1010
+ /* "lxml/objectify.pyx":1085
* def __get__(self):
* return self._schema_types
* def __set__(self, types): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":921
+/* "lxml/objectify.pyx":996
* matching type will be used.
* """
* cdef readonly object name # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":922
+/* "lxml/objectify.pyx":997
* """
* cdef readonly object name
* cdef readonly object type_check # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":923
+/* "lxml/objectify.pyx":998
* cdef readonly object name
* cdef readonly object type_check
* cdef readonly object stringify # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1018
+/* "lxml/objectify.pyx":1093
* cdef list _TYPE_CHECKS = []
*
* def __lower_bool(b): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__lower_bool", 0);
- /* "lxml/objectify.pyx":1019
+ /* "lxml/objectify.pyx":1094
*
* def __lower_bool(b):
* return u"true" if b else u"false" # <<<<<<<<<<<<<<
* cdef _pytypename(obj):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_b); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1019, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_b); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1094, __pyx_L1_error)
if (__pyx_t_2) {
__Pyx_INCREF(__pyx_n_u_true);
__pyx_t_1 = __pyx_n_u_true;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1018
+ /* "lxml/objectify.pyx":1093
* cdef list _TYPE_CHECKS = []
*
* def __lower_bool(b): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1021
+/* "lxml/objectify.pyx":1096
* return u"true" if b else u"false"
*
* cdef _pytypename(obj): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_pytypename", 0);
- /* "lxml/objectify.pyx":1022
+ /* "lxml/objectify.pyx":1097
*
* cdef _pytypename(obj):
* return u"str" if python._isString(obj) else _typename(obj) # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_n_u_str);
__pyx_t_1 = __pyx_n_u_str;
} else {
- __pyx_t_2 = __pyx_f_4lxml_9objectify__typename(__pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1022, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__typename(__pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1097, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __pyx_t_2;
__pyx_t_2 = 0;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1021
+ /* "lxml/objectify.pyx":1096
* return u"true" if b else u"false"
*
* cdef _pytypename(obj): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1024
+/* "lxml/objectify.pyx":1099
* return u"str" if python._isString(obj) else _typename(obj)
*
* def pytypename(obj): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("pytypename", 0);
- /* "lxml/objectify.pyx":1029
+ /* "lxml/objectify.pyx":1104
* Find the name of the corresponding PyType for a Python object.
* """
* return _pytypename(obj) # <<<<<<<<<<<<<<
* cdef _registerPyTypes():
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1104, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1024
+ /* "lxml/objectify.pyx":1099
* return u"str" if python._isString(obj) else _typename(obj)
*
* def pytypename(obj): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1031
+/* "lxml/objectify.pyx":1106
* return _pytypename(obj)
*
* cdef _registerPyTypes(): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_registerPyTypes", 0);
- /* "lxml/objectify.pyx":1032
+ /* "lxml/objectify.pyx":1107
*
* cdef _registerPyTypes():
* pytype = PyType(u'int', int, IntElement) # <<<<<<<<<<<<<<
* pytype.xmlSchemaTypes = (u"integer", u"int", u"short", u"byte", u"unsignedShort",
* u"unsignedByte", u"nonPositiveInteger",
*/
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1032, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1107, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_n_u_int);
__Pyx_GIVEREF(__pyx_n_u_int);
__Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
__Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
- __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1032, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1107, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1033
+ /* "lxml/objectify.pyx":1108
* cdef _registerPyTypes():
* pytype = PyType(u'int', int, IntElement)
* pytype.xmlSchemaTypes = (u"integer", u"int", u"short", u"byte", u"unsignedShort", # <<<<<<<<<<<<<<
* u"unsignedByte", u"nonPositiveInteger",
* u"negativeInteger", u"long", u"nonNegativeInteger",
*/
- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__5) < 0) __PYX_ERR(0, 1033, __pyx_L1_error)
+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__5) < 0) __PYX_ERR(0, 1108, __pyx_L1_error)
- /* "lxml/objectify.pyx":1037
+ /* "lxml/objectify.pyx":1112
* u"negativeInteger", u"long", u"nonNegativeInteger",
* u"unsignedLong", u"unsignedInt", u"positiveInteger",)
* pytype.register() # <<<<<<<<<<<<<<
*
* # 'long' type just for backwards compatibility
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1037, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1112, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
}
__pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1037, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1112, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1040
+ /* "lxml/objectify.pyx":1115
*
* # 'long' type just for backwards compatibility
* pytype = PyType(u'long', None, IntElement) # <<<<<<<<<<<<<<
* pytype.register()
*
*/
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1040, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_n_u_long);
__Pyx_GIVEREF(__pyx_n_u_long);
__Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
__Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1040, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1041
+ /* "lxml/objectify.pyx":1116
* # 'long' type just for backwards compatibility
* pytype = PyType(u'long', None, IntElement)
* pytype.register() # <<<<<<<<<<<<<<
*
* pytype = PyType(u'float', float, FloatElement, repr)
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1116, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1041, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1116, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1043
+ /* "lxml/objectify.pyx":1118
* pytype.register()
*
* pytype = PyType(u'float', float, FloatElement, repr) # <<<<<<<<<<<<<<
* pytype.xmlSchemaTypes = (u"double", u"float")
* pytype.register()
*/
- __pyx_t_1 = __Pyx_GetBuiltinName(__pyx_n_s_repr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1043, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_GetBuiltinName(__pyx_n_s_repr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1043, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_n_u_float);
__Pyx_GIVEREF(__pyx_n_u_float);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1043, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1044
+ /* "lxml/objectify.pyx":1119
*
* pytype = PyType(u'float', float, FloatElement, repr)
* pytype.xmlSchemaTypes = (u"double", u"float") # <<<<<<<<<<<<<<
* pytype.register()
*
*/
- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__6) < 0) __PYX_ERR(0, 1044, __pyx_L1_error)
+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__6) < 0) __PYX_ERR(0, 1119, __pyx_L1_error)
- /* "lxml/objectify.pyx":1045
+ /* "lxml/objectify.pyx":1120
* pytype = PyType(u'float', float, FloatElement, repr)
* pytype.xmlSchemaTypes = (u"double", u"float")
* pytype.register() # <<<<<<<<<<<<<<
*
* pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1045, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1120, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1045, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1120, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1047
+ /* "lxml/objectify.pyx":1122
* pytype.register()
*
* pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool) # <<<<<<<<<<<<<<
* pytype.xmlSchemaTypes = (u"boolean",)
* pytype.register()
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_checkBool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1047, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_checkBool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_lower_bool); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1047, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_lower_bool); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1122, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1047, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1122, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_n_u_bool);
__Pyx_GIVEREF(__pyx_n_u_bool);
PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_2);
__pyx_t_1 = 0;
__pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1047, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1122, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_2));
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1048
+ /* "lxml/objectify.pyx":1123
*
* pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
* pytype.xmlSchemaTypes = (u"boolean",) # <<<<<<<<<<<<<<
* pytype.register()
*
*/
- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__7) < 0) __PYX_ERR(0, 1048, __pyx_L1_error)
+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__7) < 0) __PYX_ERR(0, 1123, __pyx_L1_error)
- /* "lxml/objectify.pyx":1049
+ /* "lxml/objectify.pyx":1124
* pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
* pytype.xmlSchemaTypes = (u"boolean",)
* pytype.register() # <<<<<<<<<<<<<<
*
* pytype = PyType(u'str', None, StringElement)
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1049, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1124, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1049, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1124, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1051
+ /* "lxml/objectify.pyx":1126
* pytype.register()
*
* pytype = PyType(u'str', None, StringElement) # <<<<<<<<<<<<<<
* pytype.xmlSchemaTypes = (u"string", u"normalizedString", u"token", u"language",
* u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
*/
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1051, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1126, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_n_u_str);
__Pyx_GIVEREF(__pyx_n_u_str);
__Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
__Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1051, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1126, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3));
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1052
+ /* "lxml/objectify.pyx":1127
*
* pytype = PyType(u'str', None, StringElement)
* pytype.xmlSchemaTypes = (u"string", u"normalizedString", u"token", u"language", # <<<<<<<<<<<<<<
* u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
* u"NMTOKEN", )
*/
- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__8) < 0) __PYX_ERR(0, 1052, __pyx_L1_error)
+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__8) < 0) __PYX_ERR(0, 1127, __pyx_L1_error)
- /* "lxml/objectify.pyx":1055
+ /* "lxml/objectify.pyx":1130
* u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
* u"NMTOKEN", )
* pytype.register() # <<<<<<<<<<<<<<
*
* # since lxml 2.0
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1130, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1130, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1058
+ /* "lxml/objectify.pyx":1133
*
* # since lxml 2.0
* pytype = PyType(u'NoneType', None, NoneElement) # <<<<<<<<<<<<<<
* pytype.register()
*
*/
- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1058, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_n_u_NoneType);
__Pyx_GIVEREF(__pyx_n_u_NoneType);
__Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
__Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
- __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1058, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_2));
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1059
+ /* "lxml/objectify.pyx":1134
* # since lxml 2.0
* pytype = PyType(u'NoneType', None, NoneElement)
* pytype.register() # <<<<<<<<<<<<<<
*
* # backwards compatibility
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1059, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1059, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1062
+ /* "lxml/objectify.pyx":1137
*
* # backwards compatibility
* pytype = PyType(u'none', None, NoneElement) # <<<<<<<<<<<<<<
* pytype.register()
*
*/
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1062, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_n_u_none);
__Pyx_GIVEREF(__pyx_n_u_none);
__Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
__Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1062, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3));
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1063
+ /* "lxml/objectify.pyx":1138
* # backwards compatibility
* pytype = PyType(u'none', None, NoneElement)
* pytype.register() # <<<<<<<<<<<<<<
*
* # non-registered PyType for inner tree elements
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1063, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
}
__pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1063, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1031
+ /* "lxml/objectify.pyx":1106
* return _pytypename(obj)
*
* cdef _registerPyTypes(): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1070
+/* "lxml/objectify.pyx":1145
* _registerPyTypes()
*
* def getRegisteredTypes(): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("getRegisteredTypes", 0);
- /* "lxml/objectify.pyx":1085
+ /* "lxml/objectify.pyx":1160
* end of the type list.
* """
* cdef list types = [] # <<<<<<<<<<<<<<
* cdef set known = set()
* for check, pytype in _TYPE_CHECKS:
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1085, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_types = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1086
+ /* "lxml/objectify.pyx":1161
* """
* cdef list types = []
* cdef set known = set() # <<<<<<<<<<<<<<
* for check, pytype in _TYPE_CHECKS:
* name = pytype.name
*/
- __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
+ __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_known = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1087
+ /* "lxml/objectify.pyx":1162
* cdef list types = []
* cdef set known = set()
* for check, pytype in _TYPE_CHECKS: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 1087, __pyx_L1_error)
+ __PYX_ERR(0, 1162, __pyx_L1_error)
}
__pyx_t_1 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
for (;;) {
if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1087, __pyx_L1_error)
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1162, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1087, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1087, __pyx_L1_error)
+ __PYX_ERR(0, 1162, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1087, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1087, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1087, __pyx_L1_error)
+ __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 1087, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 1162, __pyx_L1_error)
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L6_unpacking_done;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1087, __pyx_L1_error)
+ __PYX_ERR(0, 1162, __pyx_L1_error)
__pyx_L6_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_check, __pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_5);
__pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1088
+ /* "lxml/objectify.pyx":1163
* cdef set known = set()
* for check, pytype in _TYPE_CHECKS:
* name = pytype.name # <<<<<<<<<<<<<<
* if name not in known:
* known.add(name)
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1088, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1089
+ /* "lxml/objectify.pyx":1164
* for check, pytype in _TYPE_CHECKS:
* name = pytype.name
* if name not in known: # <<<<<<<<<<<<<<
* known.add(name)
* types.append(pytype)
*/
- __pyx_t_8 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1089, __pyx_L1_error)
+ __pyx_t_8 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1164, __pyx_L1_error)
__pyx_t_9 = (__pyx_t_8 != 0);
if (__pyx_t_9) {
- /* "lxml/objectify.pyx":1090
+ /* "lxml/objectify.pyx":1165
* name = pytype.name
* if name not in known:
* known.add(name) # <<<<<<<<<<<<<<
* types.append(pytype)
* for pytype in _PYTYPE_DICT.values():
*/
- __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1090, __pyx_L1_error)
+ __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1165, __pyx_L1_error)
- /* "lxml/objectify.pyx":1091
+ /* "lxml/objectify.pyx":1166
* if name not in known:
* known.add(name)
* types.append(pytype) # <<<<<<<<<<<<<<
* for pytype in _PYTYPE_DICT.values():
* name = pytype.name
*/
- __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1091, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1166, __pyx_L1_error)
- /* "lxml/objectify.pyx":1089
+ /* "lxml/objectify.pyx":1164
* for check, pytype in _TYPE_CHECKS:
* name = pytype.name
* if name not in known: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1087
+ /* "lxml/objectify.pyx":1162
* cdef list types = []
* cdef set known = set()
* for check, pytype in _TYPE_CHECKS: # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1092
+ /* "lxml/objectify.pyx":1167
* known.add(name)
* types.append(pytype)
* for pytype in _PYTYPE_DICT.values(): # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
- __PYX_ERR(0, 1092, __pyx_L1_error)
+ __PYX_ERR(0, 1167, __pyx_L1_error)
}
- __pyx_t_1 = __Pyx_PyDict_Values(__pyx_v_4lxml_9objectify__PYTYPE_DICT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_Values(__pyx_v_4lxml_9objectify__PYTYPE_DICT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
__pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;
__pyx_t_11 = NULL;
} else {
- __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1167, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_3))) {
if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1167, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1167, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(0, 1092, __pyx_L1_error)
+ else __PYX_ERR(0, 1167, __pyx_L1_error)
}
break;
}
__Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1093
+ /* "lxml/objectify.pyx":1168
* types.append(pytype)
* for pytype in _PYTYPE_DICT.values():
* name = pytype.name # <<<<<<<<<<<<<<
* if name not in known:
* known.add(name)
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1094
+ /* "lxml/objectify.pyx":1169
* for pytype in _PYTYPE_DICT.values():
* name = pytype.name
* if name not in known: # <<<<<<<<<<<<<<
* known.add(name)
* types.append(pytype)
*/
- __pyx_t_9 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1094, __pyx_L1_error)
+ __pyx_t_9 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1169, __pyx_L1_error)
__pyx_t_8 = (__pyx_t_9 != 0);
if (__pyx_t_8) {
- /* "lxml/objectify.pyx":1095
+ /* "lxml/objectify.pyx":1170
* name = pytype.name
* if name not in known:
* known.add(name) # <<<<<<<<<<<<<<
* types.append(pytype)
* return types
*/
- __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1095, __pyx_L1_error)
+ __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1170, __pyx_L1_error)
- /* "lxml/objectify.pyx":1096
+ /* "lxml/objectify.pyx":1171
* if name not in known:
* known.add(name)
* types.append(pytype) # <<<<<<<<<<<<<<
* return types
*
*/
- __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1096, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1171, __pyx_L1_error)
- /* "lxml/objectify.pyx":1094
+ /* "lxml/objectify.pyx":1169
* for pytype in _PYTYPE_DICT.values():
* name = pytype.name
* if name not in known: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1092
+ /* "lxml/objectify.pyx":1167
* known.add(name)
* types.append(pytype)
* for pytype in _PYTYPE_DICT.values(): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1097
+ /* "lxml/objectify.pyx":1172
* known.add(name)
* types.append(pytype)
* return types # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_types;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1070
+ /* "lxml/objectify.pyx":1145
* _registerPyTypes()
*
* def getRegisteredTypes(): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1099
+/* "lxml/objectify.pyx":1174
* return types
*
* cdef PyType _guessPyType(value, PyType defaulttype): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_guessPyType", 0);
- /* "lxml/objectify.pyx":1100
+ /* "lxml/objectify.pyx":1175
*
* cdef PyType _guessPyType(value, PyType defaulttype):
* if value is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1101
+ /* "lxml/objectify.pyx":1176
* cdef PyType _guessPyType(value, PyType defaulttype):
* if value is None:
* return None # <<<<<<<<<<<<<<
__pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None); __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "lxml/objectify.pyx":1100
+ /* "lxml/objectify.pyx":1175
*
* cdef PyType _guessPyType(value, PyType defaulttype):
* if value is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1102
+ /* "lxml/objectify.pyx":1177
* if value is None:
* return None
* for type_check, tested_pytype in _TYPE_CHECKS: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 1102, __pyx_L1_error)
+ __PYX_ERR(0, 1177, __pyx_L1_error)
}
__pyx_t_3 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
for (;;) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1102, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1177, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1102, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1177, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1102, __pyx_L1_error)
+ __PYX_ERR(0, 1177, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx_t_7);
#else
- __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1102, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1177, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1102, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1177, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1102, __pyx_L1_error)
+ __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1177, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
__Pyx_GOTREF(__pyx_t_6);
index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_7);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1102, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1177, __pyx_L1_error)
__pyx_t_9 = NULL;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L7_unpacking_done;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1102, __pyx_L1_error)
+ __PYX_ERR(0, 1177, __pyx_L1_error)
__pyx_L7_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_type_check, __pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_tested_pytype, __pyx_t_7);
__pyx_t_7 = 0;
- /* "lxml/objectify.pyx":1103
+ /* "lxml/objectify.pyx":1178
* return None
* for type_check, tested_pytype in _TYPE_CHECKS:
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_12);
/*try:*/ {
- /* "lxml/objectify.pyx":1104
+ /* "lxml/objectify.pyx":1179
* for type_check, tested_pytype in _TYPE_CHECKS:
* try:
* type_check(value) # <<<<<<<<<<<<<<
}
__pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1104, __pyx_L8_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1179, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1105
+ /* "lxml/objectify.pyx":1180
* try:
* type_check(value)
* return <PyType>tested_pytype # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L12_try_return;
- /* "lxml/objectify.pyx":1103
+ /* "lxml/objectify.pyx":1178
* return None
* for type_check, tested_pytype in _TYPE_CHECKS:
* try: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "lxml/objectify.pyx":1106
+ /* "lxml/objectify.pyx":1181
* type_check(value)
* return <PyType>tested_pytype
* except IGNORABLE_ERRORS: # <<<<<<<<<<<<<<
goto __pyx_L10_except_error;
__pyx_L10_except_error:;
- /* "lxml/objectify.pyx":1103
+ /* "lxml/objectify.pyx":1178
* return None
* for type_check, tested_pytype in _TYPE_CHECKS:
* try: # <<<<<<<<<<<<<<
__Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
}
- /* "lxml/objectify.pyx":1102
+ /* "lxml/objectify.pyx":1177
* if value is None:
* return None
* for type_check, tested_pytype in _TYPE_CHECKS: # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1109
+ /* "lxml/objectify.pyx":1184
* # could not be parsed as the specified type => ignore
* pass
* return defaulttype # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_defaulttype;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1099
+ /* "lxml/objectify.pyx":1174
* return types
*
* cdef PyType _guessPyType(value, PyType defaulttype): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1111
+/* "lxml/objectify.pyx":1186
* return defaulttype
*
* cdef object _guessElementClass(tree.xmlNode* c_node): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_guessElementClass", 0);
- /* "lxml/objectify.pyx":1112
+ /* "lxml/objectify.pyx":1187
*
* cdef object _guessElementClass(tree.xmlNode* c_node):
* value = textOf(c_node) # <<<<<<<<<<<<<<
* if value is None:
* return None
*/
- __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1112, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_value = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1113
+ /* "lxml/objectify.pyx":1188
* cdef object _guessElementClass(tree.xmlNode* c_node):
* value = textOf(c_node)
* if value is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1114
+ /* "lxml/objectify.pyx":1189
* value = textOf(c_node)
* if value is None:
* return None # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "lxml/objectify.pyx":1113
+ /* "lxml/objectify.pyx":1188
* cdef object _guessElementClass(tree.xmlNode* c_node):
* value = textOf(c_node)
* if value is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1115
+ /* "lxml/objectify.pyx":1190
* if value is None:
* return None
* if value == '': # <<<<<<<<<<<<<<
* return StringElement
*
*/
- __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_value, __pyx_kp_s_, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1115, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_value, __pyx_kp_s_, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1190, __pyx_L1_error)
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1116
+ /* "lxml/objectify.pyx":1191
* return None
* if value == '':
* return StringElement # <<<<<<<<<<<<<<
__pyx_r = ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement);
goto __pyx_L0;
- /* "lxml/objectify.pyx":1115
+ /* "lxml/objectify.pyx":1190
* if value is None:
* return None
* if value == '': # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1118
+ /* "lxml/objectify.pyx":1193
* return StringElement
*
* for type_check, pytype in _TYPE_CHECKS: # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 1118, __pyx_L1_error)
+ __PYX_ERR(0, 1193, __pyx_L1_error)
}
__pyx_t_1 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
for (;;) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1118, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1193, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1118, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1118, __pyx_L1_error)
+ __PYX_ERR(0, 1193, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx_t_7);
#else
- __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1118, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1118, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1118, __pyx_L1_error)
+ __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
__Pyx_GOTREF(__pyx_t_6);
index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L7_unpacking_failed;
__Pyx_GOTREF(__pyx_t_7);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1118, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1193, __pyx_L1_error)
__pyx_t_9 = NULL;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L8_unpacking_done;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1118, __pyx_L1_error)
+ __PYX_ERR(0, 1193, __pyx_L1_error)
__pyx_L8_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_type_check, __pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_7);
__pyx_t_7 = 0;
- /* "lxml/objectify.pyx":1119
+ /* "lxml/objectify.pyx":1194
*
* for type_check, pytype in _TYPE_CHECKS:
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_12);
/*try:*/ {
- /* "lxml/objectify.pyx":1120
+ /* "lxml/objectify.pyx":1195
* for type_check, pytype in _TYPE_CHECKS:
* try:
* type_check(value) # <<<<<<<<<<<<<<
}
__pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1120, __pyx_L9_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1195, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1121
+ /* "lxml/objectify.pyx":1196
* try:
* type_check(value)
* return (<PyType>pytype)._type # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L13_try_return;
- /* "lxml/objectify.pyx":1119
+ /* "lxml/objectify.pyx":1194
*
* for type_check, pytype in _TYPE_CHECKS:
* try: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "lxml/objectify.pyx":1122
+ /* "lxml/objectify.pyx":1197
* type_check(value)
* return (<PyType>pytype)._type
* except IGNORABLE_ERRORS: # <<<<<<<<<<<<<<
goto __pyx_L11_except_error;
__pyx_L11_except_error:;
- /* "lxml/objectify.pyx":1119
+ /* "lxml/objectify.pyx":1194
*
* for type_check, pytype in _TYPE_CHECKS:
* try: # <<<<<<<<<<<<<<
__Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
}
- /* "lxml/objectify.pyx":1118
+ /* "lxml/objectify.pyx":1193
* return StringElement
*
* for type_check, pytype in _TYPE_CHECKS: # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1124
+ /* "lxml/objectify.pyx":1199
* except IGNORABLE_ERRORS:
* pass
* return None # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "lxml/objectify.pyx":1111
+ /* "lxml/objectify.pyx":1186
* return defaulttype
*
* cdef object _guessElementClass(tree.xmlNode* c_node): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1137
+/* "lxml/objectify.pyx":1212
* cdef bint _annotate
*
* def __call__(self, *children, **attrib): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__call__", 0);
- /* "lxml/objectify.pyx":1144
+ /* "lxml/objectify.pyx":1219
* cdef bint has_children
* cdef bint has_string_value
* if self._element_factory is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1145
+ /* "lxml/objectify.pyx":1220
* cdef bint has_string_value
* if self._element_factory is None:
* element = _makeElement(self._tag, None, attrib, self._nsmap) # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = __pyx_v_self->_nsmap;
__Pyx_INCREF(__pyx_t_4);
- __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_t_3, Py_None, __pyx_v_attrib, __pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1145, __pyx_L1_error)
+ __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_t_3, Py_None, __pyx_v_attrib, __pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1220, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_element = ((struct LxmlElement *)__pyx_t_5);
__pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1144
+ /* "lxml/objectify.pyx":1219
* cdef bint has_children
* cdef bint has_string_value
* if self._element_factory is None: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "lxml/objectify.pyx":1147
+ /* "lxml/objectify.pyx":1222
* element = _makeElement(self._tag, None, attrib, self._nsmap)
* else:
* element = self._element_factory(self._tag, attrib, self._nsmap) # <<<<<<<<<<<<<<
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_4)) {
PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_self->_tag, __pyx_v_attrib, __pyx_v_self->_nsmap};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1147, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1222, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_5);
} else
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_self->_tag, __pyx_v_attrib, __pyx_v_self->_nsmap};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1147, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1222, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_5);
} else
#endif
{
- __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1147, __pyx_L1_error)
+ __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1222, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_v_self->_nsmap);
__Pyx_GIVEREF(__pyx_v_self->_nsmap);
PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_self->_nsmap);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1147, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1222, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1147, __pyx_L1_error)
+ if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1222, __pyx_L1_error)
__pyx_v_element = ((struct LxmlElement *)__pyx_t_5);
__pyx_t_5 = 0;
}
__pyx_L3:;
- /* "lxml/objectify.pyx":1149
+ /* "lxml/objectify.pyx":1224
* element = self._element_factory(self._tag, attrib, self._nsmap)
*
* pytype_name = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_v_pytype_name = Py_None;
- /* "lxml/objectify.pyx":1150
+ /* "lxml/objectify.pyx":1225
*
* pytype_name = None
* has_children = False # <<<<<<<<<<<<<<
*/
__pyx_v_has_children = 0;
- /* "lxml/objectify.pyx":1151
+ /* "lxml/objectify.pyx":1226
* pytype_name = None
* has_children = False
* has_string_value = False # <<<<<<<<<<<<<<
*/
__pyx_v_has_string_value = 0;
- /* "lxml/objectify.pyx":1152
+ /* "lxml/objectify.pyx":1227
* has_children = False
* has_string_value = False
* for child in children: # <<<<<<<<<<<<<<
for (;;) {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1152, __pyx_L1_error)
+ __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1227, __pyx_L1_error)
#else
- __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1152, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1227, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
__Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1153
+ /* "lxml/objectify.pyx":1228
* has_string_value = False
* for child in children:
* if child is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1154
+ /* "lxml/objectify.pyx":1229
* for child in children:
* if child is None:
* if len(children) == 1: # <<<<<<<<<<<<<<
* cetree.setAttributeValue(
* element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
*/
- __pyx_t_9 = PyTuple_GET_SIZE(__pyx_v_children); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1154, __pyx_L1_error)
+ __pyx_t_9 = PyTuple_GET_SIZE(__pyx_v_children); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1229, __pyx_L1_error)
__pyx_t_1 = ((__pyx_t_9 == 1) != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1156
+ /* "lxml/objectify.pyx":1231
* if len(children) == 1:
* cetree.setAttributeValue(
* element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true") # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR;
__Pyx_INCREF(__pyx_t_4);
- /* "lxml/objectify.pyx":1155
+ /* "lxml/objectify.pyx":1230
* if child is None:
* if len(children) == 1:
* cetree.setAttributeValue( # <<<<<<<<<<<<<<
* element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
* elif python._isString(child):
*/
- __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_4, __pyx_n_u_true); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1155, __pyx_L1_error)
+ __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_4, __pyx_n_u_true); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1230, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1154
+ /* "lxml/objectify.pyx":1229
* for child in children:
* if child is None:
* if len(children) == 1: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1153
+ /* "lxml/objectify.pyx":1228
* has_string_value = False
* for child in children:
* if child is None: # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "lxml/objectify.pyx":1157
+ /* "lxml/objectify.pyx":1232
* cetree.setAttributeValue(
* element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
* elif python._isString(child): # <<<<<<<<<<<<<<
__pyx_t_1 = (_isString(__pyx_v_child) != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1158
+ /* "lxml/objectify.pyx":1233
* element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
* elif python._isString(child):
* _add_text(element, child) # <<<<<<<<<<<<<<
* has_string_value = True
* elif isinstance(child, _Element):
*/
- __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1158, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1233, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1159
+ /* "lxml/objectify.pyx":1234
* elif python._isString(child):
* _add_text(element, child)
* has_string_value = True # <<<<<<<<<<<<<<
*/
__pyx_v_has_string_value = 1;
- /* "lxml/objectify.pyx":1157
+ /* "lxml/objectify.pyx":1232
* cetree.setAttributeValue(
* element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
* elif python._isString(child): # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "lxml/objectify.pyx":1160
+ /* "lxml/objectify.pyx":1235
* _add_text(element, child)
* has_string_value = True
* elif isinstance(child, _Element): # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1161
+ /* "lxml/objectify.pyx":1236
* has_string_value = True
* elif isinstance(child, _Element):
* cetree.appendChildToElement(element, <_Element>child) # <<<<<<<<<<<<<<
* has_children = True
* elif isinstance(child, _ObjectifyElementMakerCaller):
*/
- __pyx_t_6 = appendChildToElement(__pyx_v_element, ((struct LxmlElement *)__pyx_v_child)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1161, __pyx_L1_error)
+ __pyx_t_6 = appendChildToElement(__pyx_v_element, ((struct LxmlElement *)__pyx_v_child)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1236, __pyx_L1_error)
- /* "lxml/objectify.pyx":1162
+ /* "lxml/objectify.pyx":1237
* elif isinstance(child, _Element):
* cetree.appendChildToElement(element, <_Element>child)
* has_children = True # <<<<<<<<<<<<<<
*/
__pyx_v_has_children = 1;
- /* "lxml/objectify.pyx":1160
+ /* "lxml/objectify.pyx":1235
* _add_text(element, child)
* has_string_value = True
* elif isinstance(child, _Element): # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "lxml/objectify.pyx":1163
+ /* "lxml/objectify.pyx":1238
* cetree.appendChildToElement(element, <_Element>child)
* has_children = True
* elif isinstance(child, _ObjectifyElementMakerCaller): # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1164
+ /* "lxml/objectify.pyx":1239
* has_children = True
* elif isinstance(child, _ObjectifyElementMakerCaller):
* elementMaker = <_ObjectifyElementMakerCaller>child # <<<<<<<<<<<<<<
__Pyx_XDECREF_SET(__pyx_v_elementMaker, ((struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller *)__pyx_t_4));
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1165
+ /* "lxml/objectify.pyx":1240
* elif isinstance(child, _ObjectifyElementMakerCaller):
* elementMaker = <_ObjectifyElementMakerCaller>child
* if elementMaker._element_factory is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1166
+ /* "lxml/objectify.pyx":1241
* elementMaker = <_ObjectifyElementMakerCaller>child
* if elementMaker._element_factory is None:
* cetree.makeSubElement(element, elementMaker._tag, # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_elementMaker->_tag;
__Pyx_INCREF(__pyx_t_4);
- /* "lxml/objectify.pyx":1167
+ /* "lxml/objectify.pyx":1242
* if elementMaker._element_factory is None:
* cetree.makeSubElement(element, elementMaker._tag,
* None, None, None, None) # <<<<<<<<<<<<<<
* else:
* childElement = elementMaker._element_factory(
*/
- __pyx_t_7 = ((PyObject *)makeSubElement(__pyx_v_element, __pyx_t_4, Py_None, Py_None, Py_None, Py_None)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1166, __pyx_L1_error)
+ __pyx_t_7 = ((PyObject *)makeSubElement(__pyx_v_element, __pyx_t_4, Py_None, Py_None, Py_None, Py_None)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1241, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "lxml/objectify.pyx":1165
+ /* "lxml/objectify.pyx":1240
* elif isinstance(child, _ObjectifyElementMakerCaller):
* elementMaker = <_ObjectifyElementMakerCaller>child
* if elementMaker._element_factory is None: # <<<<<<<<<<<<<<
goto __pyx_L8;
}
- /* "lxml/objectify.pyx":1169
+ /* "lxml/objectify.pyx":1244
* None, None, None, None)
* else:
* childElement = elementMaker._element_factory( # <<<<<<<<<<<<<<
*/
/*else*/ {
- /* "lxml/objectify.pyx":1170
+ /* "lxml/objectify.pyx":1245
* else:
* childElement = elementMaker._element_factory(
* elementMaker._tag) # <<<<<<<<<<<<<<
}
__pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_elementMaker->_tag) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_elementMaker->_tag);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1169, __pyx_L1_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1244, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1169
+ /* "lxml/objectify.pyx":1244
* None, None, None, None)
* else:
* childElement = elementMaker._element_factory( # <<<<<<<<<<<<<<
* elementMaker._tag)
* cetree.appendChildToElement(element, childElement)
*/
- if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1169, __pyx_L1_error)
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1244, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_childElement, ((struct LxmlElement *)__pyx_t_7));
__pyx_t_7 = 0;
- /* "lxml/objectify.pyx":1171
+ /* "lxml/objectify.pyx":1246
* childElement = elementMaker._element_factory(
* elementMaker._tag)
* cetree.appendChildToElement(element, childElement) # <<<<<<<<<<<<<<
* has_children = True
* elif isinstance(child, dict):
*/
- __pyx_t_6 = appendChildToElement(__pyx_v_element, __pyx_v_childElement); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1171, __pyx_L1_error)
+ __pyx_t_6 = appendChildToElement(__pyx_v_element, __pyx_v_childElement); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1246, __pyx_L1_error)
}
__pyx_L8:;
- /* "lxml/objectify.pyx":1172
+ /* "lxml/objectify.pyx":1247
* elementMaker._tag)
* cetree.appendChildToElement(element, childElement)
* has_children = True # <<<<<<<<<<<<<<
*/
__pyx_v_has_children = 1;
- /* "lxml/objectify.pyx":1163
+ /* "lxml/objectify.pyx":1238
* cetree.appendChildToElement(element, <_Element>child)
* has_children = True
* elif isinstance(child, _ObjectifyElementMakerCaller): # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "lxml/objectify.pyx":1173
+ /* "lxml/objectify.pyx":1248
* cetree.appendChildToElement(element, childElement)
* has_children = True
* elif isinstance(child, dict): # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1174
+ /* "lxml/objectify.pyx":1249
* has_children = True
* elif isinstance(child, dict):
* for name, value in child.items(): # <<<<<<<<<<<<<<
* # keyword arguments in attrib take precedence
* if name in attrib:
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
}
__pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
__pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4); __pyx_t_9 = 0;
__pyx_t_10 = NULL;
} else {
- __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1249, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_4))) {
if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1249, __pyx_L1_error)
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
} else {
if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1249, __pyx_L1_error)
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(0, 1174, __pyx_L1_error)
+ else __PYX_ERR(0, 1249, __pyx_L1_error)
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1174, __pyx_L1_error)
+ __PYX_ERR(0, 1249, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_11);
#else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
#endif
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_12 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1174, __pyx_L1_error)
+ __pyx_t_12 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext;
__Pyx_GOTREF(__pyx_t_3);
index = 1; __pyx_t_11 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L11_unpacking_failed;
__Pyx_GOTREF(__pyx_t_11);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) __PYX_ERR(0, 1174, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) __PYX_ERR(0, 1249, __pyx_L1_error)
__pyx_t_13 = NULL;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L12_unpacking_done;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_13 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1174, __pyx_L1_error)
+ __PYX_ERR(0, 1249, __pyx_L1_error)
__pyx_L12_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
__Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_11);
__pyx_t_11 = 0;
- /* "lxml/objectify.pyx":1176
+ /* "lxml/objectify.pyx":1251
* for name, value in child.items():
* # keyword arguments in attrib take precedence
* if name in attrib: # <<<<<<<<<<<<<<
* continue
* pytype = _PYTYPE_DICT.get(_typename(value))
*/
- __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_attrib, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1176, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_attrib, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1251, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1177
+ /* "lxml/objectify.pyx":1252
* # keyword arguments in attrib take precedence
* if name in attrib:
* continue # <<<<<<<<<<<<<<
*/
goto __pyx_L9_continue;
- /* "lxml/objectify.pyx":1176
+ /* "lxml/objectify.pyx":1251
* for name, value in child.items():
* # keyword arguments in attrib take precedence
* if name in attrib: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1178
+ /* "lxml/objectify.pyx":1253
* if name in attrib:
* continue
* pytype = _PYTYPE_DICT.get(_typename(value)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1178, __pyx_L1_error)
+ __PYX_ERR(0, 1253, __pyx_L1_error)
}
- __pyx_t_7 = __pyx_f_4lxml_9objectify__typename(__pyx_v_value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1178, __pyx_L1_error)
+ __pyx_t_7 = __pyx_f_4lxml_9objectify__typename(__pyx_v_value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1253, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_11 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1178, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1253, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_11);
__pyx_t_11 = 0;
- /* "lxml/objectify.pyx":1179
+ /* "lxml/objectify.pyx":1254
* continue
* pytype = _PYTYPE_DICT.get(_typename(value))
* if pytype is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1180
+ /* "lxml/objectify.pyx":1255
* pytype = _PYTYPE_DICT.get(_typename(value))
* if pytype is not None:
* value = (<PyType>pytype).stringify(value) # <<<<<<<<<<<<<<
}
__pyx_t_11 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1180, __pyx_L1_error)
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1255, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF_SET(__pyx_v_value, __pyx_t_11);
__pyx_t_11 = 0;
- /* "lxml/objectify.pyx":1179
+ /* "lxml/objectify.pyx":1254
* continue
* pytype = _PYTYPE_DICT.get(_typename(value))
* if pytype is not None: # <<<<<<<<<<<<<<
goto __pyx_L14;
}
- /* "lxml/objectify.pyx":1181
+ /* "lxml/objectify.pyx":1256
* if pytype is not None:
* value = (<PyType>pytype).stringify(value)
* elif not python._isString(value): # <<<<<<<<<<<<<<
__pyx_t_1 = ((!(_isString(__pyx_v_value) != 0)) != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1182
+ /* "lxml/objectify.pyx":1257
* value = (<PyType>pytype).stringify(value)
* elif not python._isString(value):
* value = unicode(value) # <<<<<<<<<<<<<<
* cetree.setAttributeValue(element, name, value)
* else:
*/
- __pyx_t_11 = __Pyx_PyObject_Unicode(__pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1182, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_Unicode(__pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1257, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF_SET(__pyx_v_value, __pyx_t_11);
__pyx_t_11 = 0;
- /* "lxml/objectify.pyx":1181
+ /* "lxml/objectify.pyx":1256
* if pytype is not None:
* value = (<PyType>pytype).stringify(value)
* elif not python._isString(value): # <<<<<<<<<<<<<<
}
__pyx_L14:;
- /* "lxml/objectify.pyx":1183
+ /* "lxml/objectify.pyx":1258
* elif not python._isString(value):
* value = unicode(value)
* cetree.setAttributeValue(element, name, value) # <<<<<<<<<<<<<<
* else:
* if pytype_name is not None:
*/
- __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1183, __pyx_L1_error)
+ __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1258, __pyx_L1_error)
- /* "lxml/objectify.pyx":1174
+ /* "lxml/objectify.pyx":1249
* has_children = True
* elif isinstance(child, dict):
* for name, value in child.items(): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1173
+ /* "lxml/objectify.pyx":1248
* cetree.appendChildToElement(element, childElement)
* has_children = True
* elif isinstance(child, dict): # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "lxml/objectify.pyx":1185
+ /* "lxml/objectify.pyx":1260
* cetree.setAttributeValue(element, name, value)
* else:
* if pytype_name is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1187
+ /* "lxml/objectify.pyx":1262
* if pytype_name is not None:
* # concatenation always makes the result a string
* has_string_value = True # <<<<<<<<<<<<<<
*/
__pyx_v_has_string_value = 1;
- /* "lxml/objectify.pyx":1185
+ /* "lxml/objectify.pyx":1260
* cetree.setAttributeValue(element, name, value)
* else:
* if pytype_name is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1188
+ /* "lxml/objectify.pyx":1263
* # concatenation always makes the result a string
* has_string_value = True
* pytype_name = _typename(child) # <<<<<<<<<<<<<<
* pytype = _PYTYPE_DICT.get(_typename(child))
* if pytype is not None:
*/
- __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1188, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1263, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_pytype_name, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1189
+ /* "lxml/objectify.pyx":1264
* has_string_value = True
* pytype_name = _typename(child)
* pytype = _PYTYPE_DICT.get(_typename(child)) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1189, __pyx_L1_error)
+ __PYX_ERR(0, 1264, __pyx_L1_error)
}
- __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1189, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_11 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1189, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_11);
__pyx_t_11 = 0;
- /* "lxml/objectify.pyx":1190
+ /* "lxml/objectify.pyx":1265
* pytype_name = _typename(child)
* pytype = _PYTYPE_DICT.get(_typename(child))
* if pytype is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1191
+ /* "lxml/objectify.pyx":1266
* pytype = _PYTYPE_DICT.get(_typename(child))
* if pytype is not None:
* _add_text(element, (<PyType>pytype).stringify(child)) # <<<<<<<<<<<<<<
}
__pyx_t_11 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_v_child) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_child);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1191, __pyx_L1_error)
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1266, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1191, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1266, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1190
+ /* "lxml/objectify.pyx":1265
* pytype_name = _typename(child)
* pytype = _PYTYPE_DICT.get(_typename(child))
* if pytype is not None: # <<<<<<<<<<<<<<
goto __pyx_L16;
}
- /* "lxml/objectify.pyx":1193
+ /* "lxml/objectify.pyx":1268
* _add_text(element, (<PyType>pytype).stringify(child))
* else:
* has_string_value = True # <<<<<<<<<<<<<<
/*else*/ {
__pyx_v_has_string_value = 1;
- /* "lxml/objectify.pyx":1194
+ /* "lxml/objectify.pyx":1269
* else:
* has_string_value = True
* child = unicode(child) # <<<<<<<<<<<<<<
* _add_text(element, child)
*
*/
- __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1194, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1269, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_child, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1195
+ /* "lxml/objectify.pyx":1270
* has_string_value = True
* child = unicode(child)
* _add_text(element, child) # <<<<<<<<<<<<<<
*
* if self._annotate and not has_children:
*/
- __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1195, __pyx_L1_error)
+ __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1270, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
}
__pyx_L6:;
- /* "lxml/objectify.pyx":1152
+ /* "lxml/objectify.pyx":1227
* has_children = False
* has_string_value = False
* for child in children: # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1197
+ /* "lxml/objectify.pyx":1272
* _add_text(element, child)
*
* if self._annotate and not has_children: # <<<<<<<<<<<<<<
__pyx_L18_bool_binop_done:;
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1198
+ /* "lxml/objectify.pyx":1273
*
* if self._annotate and not has_children:
* if has_string_value: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_has_string_value != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1199
+ /* "lxml/objectify.pyx":1274
* if self._annotate and not has_children:
* if has_string_value:
* cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str") # <<<<<<<<<<<<<<
* elif pytype_name is not None:
* cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1199, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1274, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_n_u_str); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1199, __pyx_L1_error)
+ __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_n_u_str); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1274, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1198
+ /* "lxml/objectify.pyx":1273
*
* if self._annotate and not has_children:
* if has_string_value: # <<<<<<<<<<<<<<
goto __pyx_L20;
}
- /* "lxml/objectify.pyx":1200
+ /* "lxml/objectify.pyx":1275
* if has_string_value:
* cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
* elif pytype_name is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1201
+ /* "lxml/objectify.pyx":1276
* cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
* elif pytype_name is not None:
* cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name) # <<<<<<<<<<<<<<
*
* return element
*/
- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1201, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_v_pytype_name); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1201, __pyx_L1_error)
+ __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_v_pytype_name); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1276, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1200
+ /* "lxml/objectify.pyx":1275
* if has_string_value:
* cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
* elif pytype_name is not None: # <<<<<<<<<<<<<<
}
__pyx_L20:;
- /* "lxml/objectify.pyx":1197
+ /* "lxml/objectify.pyx":1272
* _add_text(element, child)
*
* if self._annotate and not has_children: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1203
+ /* "lxml/objectify.pyx":1278
* cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)
*
* return element # <<<<<<<<<<<<<<
__pyx_r = ((PyObject *)__pyx_v_element);
goto __pyx_L0;
- /* "lxml/objectify.pyx":1137
+ /* "lxml/objectify.pyx":1212
* cdef bint _annotate
*
* def __call__(self, *children, **attrib): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1205
+/* "lxml/objectify.pyx":1280
* return element
*
* cdef _add_text(_Element elem, text): # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("_add_text", 0);
__Pyx_INCREF(__pyx_v_text);
- /* "lxml/objectify.pyx":1209
+ /* "lxml/objectify.pyx":1284
* # tail text, depending on the current tree state
* cdef tree.xmlNode* c_child
* c_child = cetree.findChildBackwards(elem._c_node, 0) # <<<<<<<<<<<<<<
*/
__pyx_v_c_child = findChildBackwards(__pyx_v_elem->_c_node, 0);
- /* "lxml/objectify.pyx":1210
+ /* "lxml/objectify.pyx":1285
* cdef tree.xmlNode* c_child
* c_child = cetree.findChildBackwards(elem._c_node, 0)
* if c_child is not NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1211
+ /* "lxml/objectify.pyx":1286
* c_child = cetree.findChildBackwards(elem._c_node, 0)
* if c_child is not NULL:
* old = cetree.tailOf(c_child) # <<<<<<<<<<<<<<
* if old is not None:
* text = old + text
*/
- __pyx_t_2 = tailOf(__pyx_v_c_child); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1211, __pyx_L1_error)
+ __pyx_t_2 = tailOf(__pyx_v_c_child); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_old = __pyx_t_2;
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1212
+ /* "lxml/objectify.pyx":1287
* if c_child is not NULL:
* old = cetree.tailOf(c_child)
* if old is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_1 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1213
+ /* "lxml/objectify.pyx":1288
* old = cetree.tailOf(c_child)
* if old is not None:
* text = old + text # <<<<<<<<<<<<<<
* cetree.setTailText(c_child, text)
* else:
*/
- __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1213, __pyx_L1_error)
+ __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1288, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF_SET(__pyx_v_text, __pyx_t_2);
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1212
+ /* "lxml/objectify.pyx":1287
* if c_child is not NULL:
* old = cetree.tailOf(c_child)
* if old is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1214
+ /* "lxml/objectify.pyx":1289
* if old is not None:
* text = old + text
* cetree.setTailText(c_child, text) # <<<<<<<<<<<<<<
* else:
* old = cetree.textOf(elem._c_node)
*/
- __pyx_t_4 = setTailText(__pyx_v_c_child, __pyx_v_text); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1214, __pyx_L1_error)
+ __pyx_t_4 = setTailText(__pyx_v_c_child, __pyx_v_text); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1289, __pyx_L1_error)
- /* "lxml/objectify.pyx":1210
+ /* "lxml/objectify.pyx":1285
* cdef tree.xmlNode* c_child
* c_child = cetree.findChildBackwards(elem._c_node, 0)
* if c_child is not NULL: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "lxml/objectify.pyx":1216
+ /* "lxml/objectify.pyx":1291
* cetree.setTailText(c_child, text)
* else:
* old = cetree.textOf(elem._c_node) # <<<<<<<<<<<<<<
* text = old + text
*/
/*else*/ {
- __pyx_t_2 = textOf(__pyx_v_elem->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1216, __pyx_L1_error)
+ __pyx_t_2 = textOf(__pyx_v_elem->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_old = __pyx_t_2;
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1217
+ /* "lxml/objectify.pyx":1292
* else:
* old = cetree.textOf(elem._c_node)
* if old is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_3 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1218
+ /* "lxml/objectify.pyx":1293
* old = cetree.textOf(elem._c_node)
* if old is not None:
* text = old + text # <<<<<<<<<<<<<<
* cetree.setNodeText(elem._c_node, text)
*
*/
- __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1218, __pyx_L1_error)
+ __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1293, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF_SET(__pyx_v_text, __pyx_t_2);
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1217
+ /* "lxml/objectify.pyx":1292
* else:
* old = cetree.textOf(elem._c_node)
* if old is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1219
+ /* "lxml/objectify.pyx":1294
* if old is not None:
* text = old + text
* cetree.setNodeText(elem._c_node, text) # <<<<<<<<<<<<<<
*
* cdef class ElementMaker:
*/
- __pyx_t_4 = setNodeText(__pyx_v_elem->_c_node, __pyx_v_text); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1219, __pyx_L1_error)
+ __pyx_t_4 = setNodeText(__pyx_v_elem->_c_node, __pyx_v_text); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1294, __pyx_L1_error)
}
__pyx_L3:;
- /* "lxml/objectify.pyx":1205
+ /* "lxml/objectify.pyx":1280
* return element
*
* cdef _add_text(_Element elem, text): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1252
+/* "lxml/objectify.pyx":1327
* cdef bint _annotate
* cdef dict _cache
* def __init__(self, *, namespace=None, nsmap=None, annotate=True, # <<<<<<<<<<<<<<
values[1] = ((PyObject *)Py_None);
values[2] = ((PyObject *)Py_True);
- /* "lxml/objectify.pyx":1253
+ /* "lxml/objectify.pyx":1328
* cdef dict _cache
* def __init__(self, *, namespace=None, nsmap=None, annotate=True,
* makeelement=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(0, 1252, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(0, 1327, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1252, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1327, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.ElementMaker.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_4lxml_9objectify_12ElementMaker___init__(((struct __pyx_obj_4lxml_9objectify_ElementMaker *)__pyx_v_self), __pyx_v_namespace, __pyx_v_nsmap, __pyx_v_annotate, __pyx_v_makeelement);
- /* "lxml/objectify.pyx":1252
+ /* "lxml/objectify.pyx":1327
* cdef bint _annotate
* cdef dict _cache
* def __init__(self, *, namespace=None, nsmap=None, annotate=True, # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("__init__", 0);
__Pyx_INCREF(__pyx_v_nsmap);
- /* "lxml/objectify.pyx":1254
+ /* "lxml/objectify.pyx":1329
* def __init__(self, *, namespace=None, nsmap=None, annotate=True,
* makeelement=None):
* if nsmap is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1255
+ /* "lxml/objectify.pyx":1330
* makeelement=None):
* if nsmap is None:
* nsmap = _DEFAULT_NSMAP if annotate else {} # <<<<<<<<<<<<<<
* self._nsmap = nsmap
* self._namespace = None if namespace is None else u"{%s}" % namespace
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1255, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1330, __pyx_L1_error)
if (__pyx_t_2) {
__Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
__pyx_t_3 = __pyx_v_4lxml_9objectify__DEFAULT_NSMAP;
} else {
- __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1255, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1330, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
__Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1254
+ /* "lxml/objectify.pyx":1329
* def __init__(self, *, namespace=None, nsmap=None, annotate=True,
* makeelement=None):
* if nsmap is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1256
+ /* "lxml/objectify.pyx":1331
* if nsmap is None:
* nsmap = _DEFAULT_NSMAP if annotate else {}
* self._nsmap = nsmap # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_nsmap);
__pyx_v_self->_nsmap = __pyx_v_nsmap;
- /* "lxml/objectify.pyx":1257
+ /* "lxml/objectify.pyx":1332
* nsmap = _DEFAULT_NSMAP if annotate else {}
* self._nsmap = nsmap
* self._namespace = None if namespace is None else u"{%s}" % namespace # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_t_3 = Py_None;
} else {
- __pyx_t_4 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_namespace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1257, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_namespace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
__pyx_v_self->_namespace = __pyx_t_3;
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1258
+ /* "lxml/objectify.pyx":1333
* self._nsmap = nsmap
* self._namespace = None if namespace is None else u"{%s}" % namespace
* self._annotate = annotate # <<<<<<<<<<<<<<
* if makeelement is not None:
* if not callable(makeelement):
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1258, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1333, __pyx_L1_error)
__pyx_v_self->_annotate = __pyx_t_2;
- /* "lxml/objectify.pyx":1259
+ /* "lxml/objectify.pyx":1334
* self._namespace = None if namespace is None else u"{%s}" % namespace
* self._annotate = annotate
* if makeelement is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1260
+ /* "lxml/objectify.pyx":1335
* self._annotate = annotate
* if makeelement is not None:
* if not callable(makeelement): # <<<<<<<<<<<<<<
* raise TypeError(
* f"argument of 'makeelement' parameter must be callable, got {type(makeelement)}")
*/
- __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_makeelement); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1260, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_makeelement); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1335, __pyx_L1_error)
__pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
if (unlikely(__pyx_t_2)) {
- /* "lxml/objectify.pyx":1262
+ /* "lxml/objectify.pyx":1337
* if not callable(makeelement):
* raise TypeError(
* f"argument of 'makeelement' parameter must be callable, got {type(makeelement)}") # <<<<<<<<<<<<<<
* self._makeelement = makeelement
* else:
*/
- __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_makeelement)), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1262, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_makeelement)), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1337, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_argument_of_makeelement_paramete, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1262, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_argument_of_makeelement_paramete, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1337, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1261
+ /* "lxml/objectify.pyx":1336
* if makeelement is not None:
* if not callable(makeelement):
* raise TypeError( # <<<<<<<<<<<<<<
* f"argument of 'makeelement' parameter must be callable, got {type(makeelement)}")
* self._makeelement = makeelement
*/
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1261, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1336, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(0, 1261, __pyx_L1_error)
+ __PYX_ERR(0, 1336, __pyx_L1_error)
- /* "lxml/objectify.pyx":1260
+ /* "lxml/objectify.pyx":1335
* self._annotate = annotate
* if makeelement is not None:
* if not callable(makeelement): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1263
+ /* "lxml/objectify.pyx":1338
* raise TypeError(
* f"argument of 'makeelement' parameter must be callable, got {type(makeelement)}")
* self._makeelement = makeelement # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_makeelement);
__pyx_v_self->_makeelement = __pyx_v_makeelement;
- /* "lxml/objectify.pyx":1259
+ /* "lxml/objectify.pyx":1334
* self._namespace = None if namespace is None else u"{%s}" % namespace
* self._annotate = annotate
* if makeelement is not None: # <<<<<<<<<<<<<<
goto __pyx_L4;
}
- /* "lxml/objectify.pyx":1265
+ /* "lxml/objectify.pyx":1340
* self._makeelement = makeelement
* else:
* self._makeelement = None # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "lxml/objectify.pyx":1266
+ /* "lxml/objectify.pyx":1341
* else:
* self._makeelement = None
* self._cache = {} # <<<<<<<<<<<<<<
*
* @cython.final
*/
- __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1266, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1341, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_cache);
__pyx_v_self->_cache = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1252
+ /* "lxml/objectify.pyx":1327
* cdef bint _annotate
* cdef dict _cache
* def __init__(self, *, namespace=None, nsmap=None, annotate=True, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1269
+/* "lxml/objectify.pyx":1344
*
* @cython.final
* cdef _build_element_maker(self, tag, bint caching): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_build_element_maker", 0);
- /* "lxml/objectify.pyx":1271
+ /* "lxml/objectify.pyx":1346
* cdef _build_element_maker(self, tag, bint caching):
* cdef _ObjectifyElementMakerCaller element_maker
* element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller) # <<<<<<<<<<<<<<
* if self._namespace is not None and tag[0] != u"{":
* element_maker._tag = self._namespace + tag
*/
- __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_9objectify__ObjectifyElementMakerCaller(((PyTypeObject *)__pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1271, __pyx_L1_error)
+ __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_9objectify__ObjectifyElementMakerCaller(((PyTypeObject *)__pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1346, __pyx_L1_error)
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__pyx_v_element_maker = ((struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1272
+ /* "lxml/objectify.pyx":1347
* cdef _ObjectifyElementMakerCaller element_maker
* element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)
* if self._namespace is not None and tag[0] != u"{": # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_t_4;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tag, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1272, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tag, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1347, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_kp_u__9, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1272, __pyx_L1_error)
+ __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_kp_u__9, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1347, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_2 = __pyx_t_4;
__pyx_L4_bool_binop_done:;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1273
+ /* "lxml/objectify.pyx":1348
* element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)
* if self._namespace is not None and tag[0] != u"{":
* element_maker._tag = self._namespace + tag # <<<<<<<<<<<<<<
* else:
* element_maker._tag = tag
*/
- __pyx_t_1 = PyNumber_Add(__pyx_v_self->_namespace, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1273, __pyx_L1_error)
+ __pyx_t_1 = PyNumber_Add(__pyx_v_self->_namespace, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1348, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_element_maker->_tag);
__pyx_v_element_maker->_tag = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1272
+ /* "lxml/objectify.pyx":1347
* cdef _ObjectifyElementMakerCaller element_maker
* element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)
* if self._namespace is not None and tag[0] != u"{": # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "lxml/objectify.pyx":1275
+ /* "lxml/objectify.pyx":1350
* element_maker._tag = self._namespace + tag
* else:
* element_maker._tag = tag # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "lxml/objectify.pyx":1276
+ /* "lxml/objectify.pyx":1351
* else:
* element_maker._tag = tag
* element_maker._nsmap = self._nsmap # <<<<<<<<<<<<<<
__pyx_v_element_maker->_nsmap = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1277
+ /* "lxml/objectify.pyx":1352
* element_maker._tag = tag
* element_maker._nsmap = self._nsmap
* element_maker._annotate = self._annotate # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_self->_annotate;
__pyx_v_element_maker->_annotate = __pyx_t_2;
- /* "lxml/objectify.pyx":1278
+ /* "lxml/objectify.pyx":1353
* element_maker._nsmap = self._nsmap
* element_maker._annotate = self._annotate
* element_maker._element_factory = self._makeelement # <<<<<<<<<<<<<<
__pyx_v_element_maker->_element_factory = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1279
+ /* "lxml/objectify.pyx":1354
* element_maker._annotate = self._annotate
* element_maker._element_factory = self._makeelement
* if caching: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_caching != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1280
+ /* "lxml/objectify.pyx":1355
* element_maker._element_factory = self._makeelement
* if caching:
* if len(self._cache) > 200: # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_t_1);
if (unlikely(__pyx_t_1 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- __PYX_ERR(0, 1280, __pyx_L1_error)
+ __PYX_ERR(0, 1355, __pyx_L1_error)
}
- __pyx_t_5 = PyDict_Size(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1280, __pyx_L1_error)
+ __pyx_t_5 = PyDict_Size(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1355, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_2 = ((__pyx_t_5 > 0xC8) != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1281
+ /* "lxml/objectify.pyx":1356
* if caching:
* if len(self._cache) > 200:
* self._cache.clear() # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_cache == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear");
- __PYX_ERR(0, 1281, __pyx_L1_error)
+ __PYX_ERR(0, 1356, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyDict_Clear(__pyx_v_self->_cache); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1281, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_Clear(__pyx_v_self->_cache); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1356, __pyx_L1_error)
- /* "lxml/objectify.pyx":1280
+ /* "lxml/objectify.pyx":1355
* element_maker._element_factory = self._makeelement
* if caching:
* if len(self._cache) > 200: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1282
+ /* "lxml/objectify.pyx":1357
* if len(self._cache) > 200:
* self._cache.clear()
* self._cache[tag] = element_maker # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_cache == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 1282, __pyx_L1_error)
+ __PYX_ERR(0, 1357, __pyx_L1_error)
}
- if (unlikely(PyDict_SetItem(__pyx_v_self->_cache, __pyx_v_tag, ((PyObject *)__pyx_v_element_maker)) < 0)) __PYX_ERR(0, 1282, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_self->_cache, __pyx_v_tag, ((PyObject *)__pyx_v_element_maker)) < 0)) __PYX_ERR(0, 1357, __pyx_L1_error)
- /* "lxml/objectify.pyx":1279
+ /* "lxml/objectify.pyx":1354
* element_maker._annotate = self._annotate
* element_maker._element_factory = self._makeelement
* if caching: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1283
+ /* "lxml/objectify.pyx":1358
* self._cache.clear()
* self._cache[tag] = element_maker
* return element_maker # <<<<<<<<<<<<<<
__pyx_r = ((PyObject *)__pyx_v_element_maker);
goto __pyx_L0;
- /* "lxml/objectify.pyx":1269
+ /* "lxml/objectify.pyx":1344
*
* @cython.final
* cdef _build_element_maker(self, tag, bint caching): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1285
+/* "lxml/objectify.pyx":1360
* return element_maker
*
* def __getattr__(self, tag): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__getattr__", 0);
- /* "lxml/objectify.pyx":1286
+ /* "lxml/objectify.pyx":1361
*
* def __getattr__(self, tag):
* element_maker = self._cache.get(tag) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_cache == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1286, __pyx_L1_error)
+ __PYX_ERR(0, 1361, __pyx_L1_error)
}
- __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1286, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_element_maker = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1287
+ /* "lxml/objectify.pyx":1362
* def __getattr__(self, tag):
* element_maker = self._cache.get(tag)
* if element_maker is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1288
+ /* "lxml/objectify.pyx":1363
* element_maker = self._cache.get(tag)
* if element_maker is None:
* if is_special_method(tag): # <<<<<<<<<<<<<<
}
__pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_tag) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_tag);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1288, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1363, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1288, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1363, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1289
+ /* "lxml/objectify.pyx":1364
* if element_maker is None:
* if is_special_method(tag):
* return object.__getattr__(self, tag) # <<<<<<<<<<<<<<
* return element_maker
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_getattr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1289, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_getattr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
__pyx_t_6 = 0;
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_4)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_tag};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1364, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_tag};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1364, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1289, __pyx_L1_error)
+ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (__pyx_t_5) {
__Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
__Pyx_INCREF(__pyx_v_tag);
__Pyx_GIVEREF(__pyx_v_tag);
PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_tag);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1288
+ /* "lxml/objectify.pyx":1363
* element_maker = self._cache.get(tag)
* if element_maker is None:
* if is_special_method(tag): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1290
+ /* "lxml/objectify.pyx":1365
* if is_special_method(tag):
* return object.__getattr__(self, tag)
* return self._build_element_maker(tag, caching=True) # <<<<<<<<<<<<<<
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(__pyx_v_self, __pyx_v_tag, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1290, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(__pyx_v_self, __pyx_v_tag, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1287
+ /* "lxml/objectify.pyx":1362
* def __getattr__(self, tag):
* element_maker = self._cache.get(tag)
* if element_maker is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1291
+ /* "lxml/objectify.pyx":1366
* return object.__getattr__(self, tag)
* return self._build_element_maker(tag, caching=True)
* return element_maker # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_element_maker;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1285
+ /* "lxml/objectify.pyx":1360
* return element_maker
*
* def __getattr__(self, tag): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1293
+/* "lxml/objectify.pyx":1368
* return element_maker
*
* def __call__(self, tag, *args, **kwargs): # <<<<<<<<<<<<<<
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__call__") < 0)) __PYX_ERR(0, 1293, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__call__") < 0)) __PYX_ERR(0, 1368, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__call__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1293, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__call__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1368, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
__Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__call__", 0);
- /* "lxml/objectify.pyx":1294
+ /* "lxml/objectify.pyx":1369
*
* def __call__(self, tag, *args, **kwargs):
* element_maker = self._cache.get(tag) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_self->_cache == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1294, __pyx_L1_error)
+ __PYX_ERR(0, 1369, __pyx_L1_error)
}
- __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1294, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1369, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_element_maker = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1295
+ /* "lxml/objectify.pyx":1370
* def __call__(self, tag, *args, **kwargs):
* element_maker = self._cache.get(tag)
* if element_maker is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1297
+ /* "lxml/objectify.pyx":1372
* if element_maker is None:
* element_maker = self._build_element_maker(
* tag, caching=not is_special_method(tag)) # <<<<<<<<<<<<<<
}
__pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_tag) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_tag);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1297, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1372, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1297, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1372, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1296
+ /* "lxml/objectify.pyx":1371
* element_maker = self._cache.get(tag)
* if element_maker is None:
* element_maker = self._build_element_maker( # <<<<<<<<<<<<<<
* tag, caching=not is_special_method(tag))
* return element_maker(*args, **kwargs)
*/
- __pyx_t_1 = __pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(__pyx_v_self, __pyx_v_tag, (!__pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1296, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(__pyx_v_self, __pyx_v_tag, (!__pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF_SET(__pyx_v_element_maker, __pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1295
+ /* "lxml/objectify.pyx":1370
* def __call__(self, tag, *args, **kwargs):
* element_maker = self._cache.get(tag)
* if element_maker is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1298
+ /* "lxml/objectify.pyx":1373
* element_maker = self._build_element_maker(
* tag, caching=not is_special_method(tag))
* return element_maker(*args, **kwargs) # <<<<<<<<<<<<<<
* ################################################################################
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_element_maker, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1298, __pyx_L1_error)
+ __pyx_t_1 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1373, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_element_maker, __pyx_v_args, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1373, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1293
+ /* "lxml/objectify.pyx":1368
* return element_maker
*
* def __call__(self, tag, *args, **kwargs): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1305
+/* "lxml/objectify.pyx":1380
* cdef bint __RECURSIVE_STR = 0 # default: off
*
* def enable_recursive_str(on=True): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "enable_recursive_str") < 0)) __PYX_ERR(0, 1305, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "enable_recursive_str") < 0)) __PYX_ERR(0, 1380, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("enable_recursive_str", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1305, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("enable_recursive_str", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1380, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.enable_recursive_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("enable_recursive_str", 0);
- /* "lxml/objectify.pyx":1312
+ /* "lxml/objectify.pyx":1387
* """
* global __RECURSIVE_STR
* __RECURSIVE_STR = on # <<<<<<<<<<<<<<
*
* def dump(_Element element not None):
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_on); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1312, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_on); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1387, __pyx_L1_error)
__pyx_v_4lxml_9objectify___RECURSIVE_STR = __pyx_t_1;
- /* "lxml/objectify.pyx":1305
+ /* "lxml/objectify.pyx":1380
* cdef bint __RECURSIVE_STR = 0 # default: off
*
* def enable_recursive_str(on=True): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1314
+/* "lxml/objectify.pyx":1389
* __RECURSIVE_STR = on
*
* def dump(_Element element not None): # <<<<<<<<<<<<<<
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("dump (wrapper)", 0);
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_8includes_11etreepublic__Element, 0, "element", 0))) __PYX_ERR(0, 1314, __pyx_L1_error)
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_8includes_11etreepublic__Element, 0, "element", 0))) __PYX_ERR(0, 1389, __pyx_L1_error)
__pyx_r = __pyx_pf_4lxml_9objectify_14dump(__pyx_self, ((struct LxmlElement *)__pyx_v_element));
/* function exit code */
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("dump", 0);
- /* "lxml/objectify.pyx":1319
+ /* "lxml/objectify.pyx":1394
* Return a recursively generated string representation of an element.
* """
* return _dump(element, 0) # <<<<<<<<<<<<<<
* cdef object _dump(_Element element, int indent):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__dump(__pyx_v_element, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1319, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__dump(__pyx_v_element, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1394, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1314
+ /* "lxml/objectify.pyx":1389
* __RECURSIVE_STR = on
*
* def dump(_Element element not None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1321
+/* "lxml/objectify.pyx":1396
* return _dump(element, 0)
*
* cdef object _dump(_Element element, int indent): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_dump", 0);
- /* "lxml/objectify.pyx":1322
+ /* "lxml/objectify.pyx":1397
*
* cdef object _dump(_Element element, int indent):
* indentstr = u" " * indent # <<<<<<<<<<<<<<
* if isinstance(element, ObjectifiedDataElement):
* value = repr(element)
*/
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_indent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1322, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_indent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1397, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyNumber_Multiply(__pyx_kp_u__10, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1322, __pyx_L1_error)
+ __pyx_t_2 = PyNumber_Multiply(__pyx_kp_u__10, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1397, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1322, __pyx_L1_error)
+ if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1397, __pyx_L1_error)
__pyx_v_indentstr = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1323
+ /* "lxml/objectify.pyx":1398
* cdef object _dump(_Element element, int indent):
* indentstr = u" " * indent
* if isinstance(element, ObjectifiedDataElement): # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_t_3 != 0);
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1324
+ /* "lxml/objectify.pyx":1399
* indentstr = u" " * indent
* if isinstance(element, ObjectifiedDataElement):
* value = repr(element) # <<<<<<<<<<<<<<
* else:
* value = textOf(element._c_node)
*/
- __pyx_t_2 = PyObject_Repr(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1324, __pyx_L1_error)
+ __pyx_t_2 = PyObject_Repr(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1399, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_value = __pyx_t_2;
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1323
+ /* "lxml/objectify.pyx":1398
* cdef object _dump(_Element element, int indent):
* indentstr = u" " * indent
* if isinstance(element, ObjectifiedDataElement): # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "lxml/objectify.pyx":1326
+ /* "lxml/objectify.pyx":1401
* value = repr(element)
* else:
* value = textOf(element._c_node) # <<<<<<<<<<<<<<
* if not value.strip():
*/
/*else*/ {
- __pyx_t_2 = textOf(__pyx_v_element->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __pyx_L1_error)
+ __pyx_t_2 = textOf(__pyx_v_element->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_value = __pyx_t_2;
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1327
+ /* "lxml/objectify.pyx":1402
* else:
* value = textOf(element._c_node)
* if value is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_4 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1328
+ /* "lxml/objectify.pyx":1403
* value = textOf(element._c_node)
* if value is not None:
* if not value.strip(): # <<<<<<<<<<<<<<
* value = None
* else:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1328, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1403, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
}
__pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1328, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1403, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1328, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1403, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_4 = ((!__pyx_t_3) != 0);
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1329
+ /* "lxml/objectify.pyx":1404
* if value is not None:
* if not value.strip():
* value = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__Pyx_DECREF_SET(__pyx_v_value, Py_None);
- /* "lxml/objectify.pyx":1328
+ /* "lxml/objectify.pyx":1403
* value = textOf(element._c_node)
* if value is not None:
* if not value.strip(): # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "lxml/objectify.pyx":1331
+ /* "lxml/objectify.pyx":1406
* value = None
* else:
* value = repr(value) # <<<<<<<<<<<<<<
* xsi_ns = u"{%s}" % XML_SCHEMA_INSTANCE_NS
*/
/*else*/ {
- __pyx_t_2 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1331, __pyx_L1_error)
+ __pyx_t_2 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1406, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
__pyx_t_2 = 0;
}
__pyx_L5:;
- /* "lxml/objectify.pyx":1327
+ /* "lxml/objectify.pyx":1402
* else:
* value = textOf(element._c_node)
* if value is not None: # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "lxml/objectify.pyx":1332
+ /* "lxml/objectify.pyx":1407
* else:
* value = repr(value)
* result = f"{indentstr}{element.tag} = {value} [{_typename(element)}]\n" # <<<<<<<<<<<<<<
* xsi_ns = u"{%s}" % XML_SCHEMA_INSTANCE_NS
* pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
*/
- __pyx_t_2 = PyTuple_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1332, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = 0;
__pyx_t_7 = 127;
- __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_indentstr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_indentstr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_7;
__pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1332, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_7;
__pyx_t_6 += 3;
__Pyx_GIVEREF(__pyx_kp_u__11);
PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__11);
- __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1332, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_7;
__pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
__pyx_t_6 += 2;
__Pyx_GIVEREF(__pyx_kp_u__12);
PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__12);
- __pyx_t_5 = __pyx_f_4lxml_9objectify__typename(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1332, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_9objectify__typename(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_7;
__pyx_t_6 += 2;
__Pyx_GIVEREF(__pyx_kp_u__13);
PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u__13);
- __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 7, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 7, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_result = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1333
+ /* "lxml/objectify.pyx":1408
* value = repr(value)
* result = f"{indentstr}{element.tag} = {value} [{_typename(element)}]\n"
* xsi_ns = u"{%s}" % XML_SCHEMA_INSTANCE_NS # <<<<<<<<<<<<<<
* pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
* for name, value in sorted(cetree.iterattributes(element, 3)):
*/
- __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1333, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1408, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_xsi_ns = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1334
+ /* "lxml/objectify.pyx":1409
* result = f"{indentstr}{element.tag} = {value} [{_typename(element)}]\n"
* xsi_ns = u"{%s}" % XML_SCHEMA_INSTANCE_NS
* pytype_ns = u"{%s}" % PYTYPE_NAMESPACE # <<<<<<<<<<<<<<
* for name, value in sorted(cetree.iterattributes(element, 3)):
* if u'{' in name:
*/
- __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1409, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_pytype_ns = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1335
+ /* "lxml/objectify.pyx":1410
* xsi_ns = u"{%s}" % XML_SCHEMA_INSTANCE_NS
* pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
* for name, value in sorted(cetree.iterattributes(element, 3)): # <<<<<<<<<<<<<<
* if u'{' in name:
* if name == PYTYPE_ATTRIBUTE:
*/
- __pyx_t_2 = iterattributes(__pyx_v_element, 3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1335, __pyx_L1_error)
+ __pyx_t_2 = iterattributes(__pyx_v_element, 3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1410, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_5 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1335, __pyx_L1_error)
+ __pyx_t_5 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1410, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_1 = ((PyObject*)__pyx_t_5);
__pyx_t_5 = 0;
- __pyx_t_8 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 1335, __pyx_L1_error)
+ __pyx_t_8 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 1410, __pyx_L1_error)
if (unlikely(__pyx_t_1 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(0, 1335, __pyx_L1_error)
+ __PYX_ERR(0, 1410, __pyx_L1_error)
}
__pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
for (;;) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1335, __pyx_L1_error)
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1410, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1335, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1410, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1335, __pyx_L1_error)
+ __PYX_ERR(0, 1410, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx_t_9);
#else
- __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1335, __pyx_L1_error)
+ __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1410, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1335, __pyx_L1_error)
+ __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1410, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1335, __pyx_L1_error)
+ __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1410, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
__Pyx_GOTREF(__pyx_t_2);
index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L8_unpacking_failed;
__Pyx_GOTREF(__pyx_t_9);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(0, 1335, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(0, 1410, __pyx_L1_error)
__pyx_t_11 = NULL;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L9_unpacking_done;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_11 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1335, __pyx_L1_error)
+ __PYX_ERR(0, 1410, __pyx_L1_error)
__pyx_L9_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_2);
__Pyx_DECREF_SET(__pyx_v_value, __pyx_t_9);
__pyx_t_9 = 0;
- /* "lxml/objectify.pyx":1336
+ /* "lxml/objectify.pyx":1411
* pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
* for name, value in sorted(cetree.iterattributes(element, 3)):
* if u'{' in name: # <<<<<<<<<<<<<<
* if name == PYTYPE_ATTRIBUTE:
* if value == TREE_PYTYPE_NAME:
*/
- __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__9, __pyx_v_name, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1336, __pyx_L1_error)
+ __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__9, __pyx_v_name, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1411, __pyx_L1_error)
__pyx_t_3 = (__pyx_t_4 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1337
+ /* "lxml/objectify.pyx":1412
* for name, value in sorted(cetree.iterattributes(element, 3)):
* if u'{' in name:
* if name == PYTYPE_ATTRIBUTE: # <<<<<<<<<<<<<<
* if value == TREE_PYTYPE_NAME:
* continue
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1412, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = PyObject_RichCompare(__pyx_v_name, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1337, __pyx_L1_error)
+ __pyx_t_9 = PyObject_RichCompare(__pyx_v_name, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1412, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1337, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1412, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1338
+ /* "lxml/objectify.pyx":1413
* if u'{' in name:
* if name == PYTYPE_ATTRIBUTE:
* if value == TREE_PYTYPE_NAME: # <<<<<<<<<<<<<<
* continue
* else:
*/
- __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_value, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1338, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_value, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1413, __pyx_L1_error)
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1339
+ /* "lxml/objectify.pyx":1414
* if name == PYTYPE_ATTRIBUTE:
* if value == TREE_PYTYPE_NAME:
* continue # <<<<<<<<<<<<<<
*/
goto __pyx_L6_continue;
- /* "lxml/objectify.pyx":1338
+ /* "lxml/objectify.pyx":1413
* if u'{' in name:
* if name == PYTYPE_ATTRIBUTE:
* if value == TREE_PYTYPE_NAME: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1341
+ /* "lxml/objectify.pyx":1416
* continue
* else:
* name = name.replace(pytype_ns, u'py:') # <<<<<<<<<<<<<<
* result += f"{indentstr} * {name} = {value!r}\n"
*/
/*else*/ {
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1341, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1416, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = NULL;
__pyx_t_12 = 0;
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_1)) {
PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_pytype_ns, __pyx_kp_u_py};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1341, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1416, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_9);
} else
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_pytype_ns, __pyx_kp_u_py};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1341, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1416, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_9);
} else
#endif
{
- __pyx_t_10 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1341, __pyx_L1_error)
+ __pyx_t_10 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1416, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (__pyx_t_2) {
__Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); __pyx_t_2 = NULL;
__Pyx_INCREF(__pyx_kp_u_py);
__Pyx_GIVEREF(__pyx_kp_u_py);
PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_12, __pyx_kp_u_py);
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1341, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1416, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__pyx_t_9 = 0;
}
- /* "lxml/objectify.pyx":1337
+ /* "lxml/objectify.pyx":1412
* for name, value in sorted(cetree.iterattributes(element, 3)):
* if u'{' in name:
* if name == PYTYPE_ATTRIBUTE: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1342
+ /* "lxml/objectify.pyx":1417
* else:
* name = name.replace(pytype_ns, u'py:')
* name = name.replace(xsi_ns, u'xsi:') # <<<<<<<<<<<<<<
* result += f"{indentstr} * {name} = {value!r}\n"
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1342, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1417, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_10 = NULL;
__pyx_t_12 = 0;
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_1)) {
PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_xsi_ns, __pyx_kp_u_xsi};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1342, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1417, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_GOTREF(__pyx_t_9);
} else
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_xsi_ns, __pyx_kp_u_xsi};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1342, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1417, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_GOTREF(__pyx_t_9);
} else
#endif
{
- __pyx_t_2 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1342, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1417, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__pyx_t_10) {
__Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10); __pyx_t_10 = NULL;
__Pyx_INCREF(__pyx_kp_u_xsi);
__Pyx_GIVEREF(__pyx_kp_u_xsi);
PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_12, __pyx_kp_u_xsi);
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1342, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1417, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__Pyx_DECREF_SET(__pyx_v_name, __pyx_t_9);
__pyx_t_9 = 0;
- /* "lxml/objectify.pyx":1336
+ /* "lxml/objectify.pyx":1411
* pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
* for name, value in sorted(cetree.iterattributes(element, 3)):
* if u'{' in name: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1343
+ /* "lxml/objectify.pyx":1418
* name = name.replace(pytype_ns, u'py:')
* name = name.replace(xsi_ns, u'xsi:')
* result += f"{indentstr} * {name} = {value!r}\n" # <<<<<<<<<<<<<<
*
* indent += 1
*/
- __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1343, __pyx_L1_error)
+ __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_13 = 0;
__pyx_t_7 = 127;
- __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_indentstr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1343, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_indentstr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_7;
__pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
__pyx_t_13 += 4;
__Pyx_GIVEREF(__pyx_kp_u__14);
PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_kp_u__14);
- __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1343, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_7;
__pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
__pyx_t_13 += 3;
__Pyx_GIVEREF(__pyx_kp_u__11);
PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_kp_u__11);
- __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1343, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_7;
__pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
__pyx_t_13 += 1;
__Pyx_GIVEREF(__pyx_kp_u__15);
PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_kp_u__15);
- __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 6, __pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1343, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 6, __pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_result, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1343, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_result, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF_SET(__pyx_v_result, __pyx_t_9);
__pyx_t_9 = 0;
- /* "lxml/objectify.pyx":1335
+ /* "lxml/objectify.pyx":1410
* xsi_ns = u"{%s}" % XML_SCHEMA_INSTANCE_NS
* pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
* for name, value in sorted(cetree.iterattributes(element, 3)): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1345
+ /* "lxml/objectify.pyx":1420
* result += f"{indentstr} * {name} = {value!r}\n"
*
* indent += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_indent = (__pyx_v_indent + 1);
- /* "lxml/objectify.pyx":1346
+ /* "lxml/objectify.pyx":1421
*
* indent += 1
* for child in element.iterchildren(): # <<<<<<<<<<<<<<
* result += _dump(child, indent)
* if indent == 1:
*/
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1346, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1421, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
}
__pyx_t_5 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1346, __pyx_L1_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1421, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
__pyx_t_9 = __pyx_t_5; __Pyx_INCREF(__pyx_t_9); __pyx_t_6 = 0;
__pyx_t_14 = NULL;
} else {
- __pyx_t_6 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1346, __pyx_L1_error)
+ __pyx_t_6 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1421, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_14 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1346, __pyx_L1_error)
+ __pyx_t_14 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1421, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_9))) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_9)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1346, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1421, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_9, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1346, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_9, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1421, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
} else {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1346, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1421, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_9, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1346, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_9, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1421, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(0, 1346, __pyx_L1_error)
+ else __PYX_ERR(0, 1421, __pyx_L1_error)
}
break;
}
__Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_5);
__pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1347
+ /* "lxml/objectify.pyx":1422
* indent += 1
* for child in element.iterchildren():
* result += _dump(child, indent) # <<<<<<<<<<<<<<
* if indent == 1:
* return result[:-1] # strip last '\n'
*/
- if (!(likely(((__pyx_v_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_child, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1347, __pyx_L1_error)
- __pyx_t_5 = __pyx_f_4lxml_9objectify__dump(((struct LxmlElement *)__pyx_v_child), __pyx_v_indent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1347, __pyx_L1_error)
+ if (!(likely(((__pyx_v_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_child, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1422, __pyx_L1_error)
+ __pyx_t_5 = __pyx_f_4lxml_9objectify__dump(((struct LxmlElement *)__pyx_v_child), __pyx_v_indent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1422, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1347, __pyx_L1_error)
+ __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1422, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1346
+ /* "lxml/objectify.pyx":1421
*
* indent += 1
* for child in element.iterchildren(): # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- /* "lxml/objectify.pyx":1348
+ /* "lxml/objectify.pyx":1423
* for child in element.iterchildren():
* result += _dump(child, indent)
* if indent == 1: # <<<<<<<<<<<<<<
__pyx_t_3 = ((__pyx_v_indent == 1) != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1349
+ /* "lxml/objectify.pyx":1424
* result += _dump(child, indent)
* if indent == 1:
* return result[:-1] # strip last '\n' # <<<<<<<<<<<<<<
* return result
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = __Pyx_PyObject_GetSlice(__pyx_v_result, 0, -1L, NULL, NULL, &__pyx_slice__16, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1349, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_GetSlice(__pyx_v_result, 0, -1L, NULL, NULL, &__pyx_slice__16, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1424, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_r = __pyx_t_9;
__pyx_t_9 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1348
+ /* "lxml/objectify.pyx":1423
* for child in element.iterchildren():
* result += _dump(child, indent)
* if indent == 1: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1351
+ /* "lxml/objectify.pyx":1426
* return result[:-1] # strip last '\n'
* else:
* return result # <<<<<<<<<<<<<<
goto __pyx_L0;
}
- /* "lxml/objectify.pyx":1321
+ /* "lxml/objectify.pyx":1396
* return _dump(element, 0)
*
* cdef object _dump(_Element element, int indent): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1357
+/* "lxml/objectify.pyx":1432
* # Pickle support for objectified ElementTree
*
* def __unpickleElementTree(data): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__unpickleElementTree", 0);
- /* "lxml/objectify.pyx":1358
+ /* "lxml/objectify.pyx":1433
*
* def __unpickleElementTree(data):
* return etree.ElementTree(fromstring(data)) # <<<<<<<<<<<<<<
* cdef _setupPickle(elementTreeReduceFunction):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1358, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1433, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1358, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1433, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
}
__pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_data);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1358, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1433, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = NULL;
__pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1358, __pyx_L1_error)
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1433, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1357
+ /* "lxml/objectify.pyx":1432
* # Pickle support for objectified ElementTree
*
* def __unpickleElementTree(data): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1360
+/* "lxml/objectify.pyx":1435
* return etree.ElementTree(fromstring(data))
*
* cdef _setupPickle(elementTreeReduceFunction): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_setupPickle", 0);
- /* "lxml/objectify.pyx":1361
+ /* "lxml/objectify.pyx":1436
*
* cdef _setupPickle(elementTreeReduceFunction):
* if python.IS_PYTHON2: # <<<<<<<<<<<<<<
__pyx_t_1 = (IS_PYTHON2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1362
+ /* "lxml/objectify.pyx":1437
* cdef _setupPickle(elementTreeReduceFunction):
* if python.IS_PYTHON2:
* import copy_reg as copyreg # <<<<<<<<<<<<<<
* else:
* import copyreg
*/
- __pyx_t_2 = __Pyx_Import(__pyx_n_s_copy_reg, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1362, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_copy_reg, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1437, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_copyreg = __pyx_t_2;
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1361
+ /* "lxml/objectify.pyx":1436
*
* cdef _setupPickle(elementTreeReduceFunction):
* if python.IS_PYTHON2: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "lxml/objectify.pyx":1364
+ /* "lxml/objectify.pyx":1439
* import copy_reg as copyreg
* else:
* import copyreg # <<<<<<<<<<<<<<
* elementTreeReduceFunction, __unpickleElementTree)
*/
/*else*/ {
- __pyx_t_2 = __Pyx_Import(__pyx_n_s_copyreg, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1364, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_copyreg, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1439, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_copyreg = __pyx_t_2;
__pyx_t_2 = 0;
}
__pyx_L3:;
- /* "lxml/objectify.pyx":1365
+ /* "lxml/objectify.pyx":1440
* else:
* import copyreg
* copyreg.pickle(etree._ElementTree, # <<<<<<<<<<<<<<
* elementTreeReduceFunction, __unpickleElementTree)
*
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_copyreg, __pyx_n_s_pickle); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1365, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_copyreg, __pyx_n_s_pickle); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1440, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1365, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1440, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- /* "lxml/objectify.pyx":1366
+ /* "lxml/objectify.pyx":1441
* import copyreg
* copyreg.pickle(etree._ElementTree,
* elementTreeReduceFunction, __unpickleElementTree) # <<<<<<<<<<<<<<
*
* def pickleReduceElementTree(obj):
*/
- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1366, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1441, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = NULL;
__pyx_t_7 = 0;
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_4, __pyx_v_elementTreeReduceFunction, __pyx_t_5};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1365, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1440, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_4, __pyx_v_elementTreeReduceFunction, __pyx_t_5};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1365, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1440, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
{
- __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1365, __pyx_L1_error)
+ __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1440, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (__pyx_t_6) {
__Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5);
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1365, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1440, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1360
+ /* "lxml/objectify.pyx":1435
* return etree.ElementTree(fromstring(data))
*
* cdef _setupPickle(elementTreeReduceFunction): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1368
+/* "lxml/objectify.pyx":1443
* elementTreeReduceFunction, __unpickleElementTree)
*
* def pickleReduceElementTree(obj): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("pickleReduceElementTree", 0);
- /* "lxml/objectify.pyx":1369
+ /* "lxml/objectify.pyx":1444
*
* def pickleReduceElementTree(obj):
* return __unpickleElementTree, (etree.tostring(obj),) # <<<<<<<<<<<<<<
* _setupPickle(pickleReduceElementTree)
*/
__Pyx_XDECREF(__pyx_r);
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1369, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1444, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1369, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1444, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_obj) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_obj);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1369, __pyx_L1_error)
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1444, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1369, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1444, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
__pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1369, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1444, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1368
+ /* "lxml/objectify.pyx":1443
* elementTreeReduceFunction, __unpickleElementTree)
*
* def pickleReduceElementTree(obj): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1383
+/* "lxml/objectify.pyx":1458
* cdef object empty_data_class
* cdef object tree_class
* def __init__(self, tree_class=None, empty_data_class=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1383, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1458, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1383, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1458, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.ObjectifyElementClassLookup.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_INCREF(__pyx_v_tree_class);
__Pyx_INCREF(__pyx_v_empty_data_class);
- /* "lxml/objectify.pyx":1392
+ /* "lxml/objectify.pyx":1467
* empty data elements (defaults to StringElement).
* """
* self._lookup_function = _lookupElementClass # <<<<<<<<<<<<<<
*/
__pyx_v_self->__pyx_base._lookup_function = __pyx_f_4lxml_9objectify__lookupElementClass;
- /* "lxml/objectify.pyx":1393
+ /* "lxml/objectify.pyx":1468
* """
* self._lookup_function = _lookupElementClass
* if tree_class is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1394
+ /* "lxml/objectify.pyx":1469
* self._lookup_function = _lookupElementClass
* if tree_class is None:
* tree_class = ObjectifiedElement # <<<<<<<<<<<<<<
__Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
__Pyx_DECREF_SET(__pyx_v_tree_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
- /* "lxml/objectify.pyx":1393
+ /* "lxml/objectify.pyx":1468
* """
* self._lookup_function = _lookupElementClass
* if tree_class is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1395
+ /* "lxml/objectify.pyx":1470
* if tree_class is None:
* tree_class = ObjectifiedElement
* self.tree_class = tree_class # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->tree_class);
__pyx_v_self->tree_class = __pyx_v_tree_class;
- /* "lxml/objectify.pyx":1396
+ /* "lxml/objectify.pyx":1471
* tree_class = ObjectifiedElement
* self.tree_class = tree_class
* if empty_data_class is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1397
+ /* "lxml/objectify.pyx":1472
* self.tree_class = tree_class
* if empty_data_class is None:
* empty_data_class = StringElement # <<<<<<<<<<<<<<
__Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
__Pyx_DECREF_SET(__pyx_v_empty_data_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
- /* "lxml/objectify.pyx":1396
+ /* "lxml/objectify.pyx":1471
* tree_class = ObjectifiedElement
* self.tree_class = tree_class
* if empty_data_class is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1398
+ /* "lxml/objectify.pyx":1473
* if empty_data_class is None:
* empty_data_class = StringElement
* self.empty_data_class = empty_data_class # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->empty_data_class);
__pyx_v_self->empty_data_class = __pyx_v_empty_data_class;
- /* "lxml/objectify.pyx":1383
+ /* "lxml/objectify.pyx":1458
* cdef object empty_data_class
* cdef object tree_class
* def __init__(self, tree_class=None, empty_data_class=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1400
+/* "lxml/objectify.pyx":1475
* self.empty_data_class = empty_data_class
*
* cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_lookupElementClass", 0);
- /* "lxml/objectify.pyx":1402
+ /* "lxml/objectify.pyx":1477
* cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node):
* cdef ObjectifyElementClassLookup lookup
* lookup = <ObjectifyElementClassLookup>state # <<<<<<<<<<<<<<
__pyx_v_lookup = ((struct __pyx_obj_4lxml_9objectify_ObjectifyElementClassLookup *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1404
+ /* "lxml/objectify.pyx":1479
* lookup = <ObjectifyElementClassLookup>state
* # if element has children => no data class
* if cetree.hasChild(c_node): # <<<<<<<<<<<<<<
__pyx_t_2 = (hasChild(__pyx_v_c_node) != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1405
+ /* "lxml/objectify.pyx":1480
* # if element has children => no data class
* if cetree.hasChild(c_node):
* return lookup.tree_class # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_lookup->tree_class;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1404
+ /* "lxml/objectify.pyx":1479
* lookup = <ObjectifyElementClassLookup>state
* # if element has children => no data class
* if cetree.hasChild(c_node): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1408
+ /* "lxml/objectify.pyx":1483
*
* # if element is defined as xsi:nil, return NoneElement class
* if u"true" == cetree.attributeValueFromNsName( # <<<<<<<<<<<<<<
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil"):
* return NoneElement
*/
- __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"nil")))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1408, __pyx_L1_error)
+ __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"nil")))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1483, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_n_u_true, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1408, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_n_u_true, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1483, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1410
+ /* "lxml/objectify.pyx":1485
* if u"true" == cetree.attributeValueFromNsName(
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil"):
* return NoneElement # <<<<<<<<<<<<<<
__pyx_r = ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement);
goto __pyx_L0;
- /* "lxml/objectify.pyx":1408
+ /* "lxml/objectify.pyx":1483
*
* # if element is defined as xsi:nil, return NoneElement class
* if u"true" == cetree.attributeValueFromNsName( # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1413
+ /* "lxml/objectify.pyx":1488
*
* # check for Python type hint
* value = cetree.attributeValueFromNsName( # <<<<<<<<<<<<<<
* c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
* if value is not None:
*/
- __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1413, __pyx_L1_error)
+ __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1488, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_value = __pyx_t_1;
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1415
+ /* "lxml/objectify.pyx":1490
* value = cetree.attributeValueFromNsName(
* c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
* if value is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1416
+ /* "lxml/objectify.pyx":1491
* c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
* if value is not None:
* if value == TREE_PYTYPE_NAME: # <<<<<<<<<<<<<<
* return lookup.tree_class
* py_type = <PyType>_PYTYPE_DICT.get(value)
*/
- __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_value, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1416, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_value, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1491, __pyx_L1_error)
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1417
+ /* "lxml/objectify.pyx":1492
* if value is not None:
* if value == TREE_PYTYPE_NAME:
* return lookup.tree_class # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_lookup->tree_class;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1416
+ /* "lxml/objectify.pyx":1491
* c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
* if value is not None:
* if value == TREE_PYTYPE_NAME: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1418
+ /* "lxml/objectify.pyx":1493
* if value == TREE_PYTYPE_NAME:
* return lookup.tree_class
* py_type = <PyType>_PYTYPE_DICT.get(value) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1418, __pyx_L1_error)
+ __PYX_ERR(0, 1493, __pyx_L1_error)
}
- __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1418, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1493, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
__Pyx_INCREF(__pyx_t_4);
__pyx_v_py_type = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1419
+ /* "lxml/objectify.pyx":1494
* return lookup.tree_class
* py_type = <PyType>_PYTYPE_DICT.get(value)
* if py_type is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1420
+ /* "lxml/objectify.pyx":1495
* py_type = <PyType>_PYTYPE_DICT.get(value)
* if py_type is not None:
* return py_type._type # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_py_type->_type;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1419
+ /* "lxml/objectify.pyx":1494
* return lookup.tree_class
* py_type = <PyType>_PYTYPE_DICT.get(value)
* if py_type is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1415
+ /* "lxml/objectify.pyx":1490
* value = cetree.attributeValueFromNsName(
* c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
* if value is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1424
+ /* "lxml/objectify.pyx":1499
*
* # check for XML Schema type hint
* value = cetree.attributeValueFromNsName( # <<<<<<<<<<<<<<
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
*
*/
- __pyx_t_4 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"type")))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1424, __pyx_L1_error)
+ __pyx_t_4 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"type")))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1499, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1427
+ /* "lxml/objectify.pyx":1502
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
*
* if value is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1428
+ /* "lxml/objectify.pyx":1503
*
* if value is not None:
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1428, __pyx_L1_error)
+ __PYX_ERR(0, 1503, __pyx_L1_error)
}
- __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1428, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1503, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = __pyx_t_4;
__Pyx_INCREF(__pyx_t_1);
__pyx_v_schema_type = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1429
+ /* "lxml/objectify.pyx":1504
* if value is not None:
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
* if schema_type is None and u':' in value: # <<<<<<<<<<<<<<
__pyx_t_3 = __pyx_t_5;
goto __pyx_L10_bool_binop_done;
}
- __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1429, __pyx_L1_error)
+ __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1504, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_5 != 0);
__pyx_t_3 = __pyx_t_2;
__pyx_L10_bool_binop_done:;
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1430
+ /* "lxml/objectify.pyx":1505
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
* if schema_type is None and u':' in value:
* prefix, value = value.split(u':', 1) # <<<<<<<<<<<<<<
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
* if schema_type is not None:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1430, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1505, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1430, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1505, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1430, __pyx_L1_error)
+ __PYX_ERR(0, 1505, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_6);
#else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1430, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1505, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1430, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1505, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1430, __pyx_L1_error)
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1505, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
__Pyx_GOTREF(__pyx_t_1);
index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L12_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1430, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1505, __pyx_L1_error)
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L13_unpacking_done;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1430, __pyx_L1_error)
+ __PYX_ERR(0, 1505, __pyx_L1_error)
__pyx_L13_unpacking_done:;
}
__pyx_v_prefix = __pyx_t_1;
__Pyx_DECREF_SET(__pyx_v_value, __pyx_t_6);
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1431
+ /* "lxml/objectify.pyx":1506
* if schema_type is None and u':' in value:
* prefix, value = value.split(u':', 1)
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1431, __pyx_L1_error)
+ __PYX_ERR(0, 1506, __pyx_L1_error)
}
- __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1431, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1506, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6 = __pyx_t_4;
__Pyx_INCREF(__pyx_t_6);
__Pyx_DECREF_SET(__pyx_v_schema_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1429
+ /* "lxml/objectify.pyx":1504
* if value is not None:
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
* if schema_type is None and u':' in value: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1432
+ /* "lxml/objectify.pyx":1507
* prefix, value = value.split(u':', 1)
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
* if schema_type is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1433
+ /* "lxml/objectify.pyx":1508
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
* if schema_type is not None:
* return schema_type._type # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_schema_type->_type;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1432
+ /* "lxml/objectify.pyx":1507
* prefix, value = value.split(u':', 1)
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
* if schema_type is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1427
+ /* "lxml/objectify.pyx":1502
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
*
* if value is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1436
+ /* "lxml/objectify.pyx":1511
*
* # otherwise determine class based on text content type
* el_class = _guessElementClass(c_node) # <<<<<<<<<<<<<<
* if el_class is not None:
* return el_class
*/
- __pyx_t_6 = __pyx_f_4lxml_9objectify__guessElementClass(__pyx_v_c_node); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1436, __pyx_L1_error)
+ __pyx_t_6 = __pyx_f_4lxml_9objectify__guessElementClass(__pyx_v_c_node); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1511, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_v_el_class = __pyx_t_6;
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1437
+ /* "lxml/objectify.pyx":1512
* # otherwise determine class based on text content type
* el_class = _guessElementClass(c_node)
* if el_class is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1438
+ /* "lxml/objectify.pyx":1513
* el_class = _guessElementClass(c_node)
* if el_class is not None:
* return el_class # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_el_class;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1437
+ /* "lxml/objectify.pyx":1512
* # otherwise determine class based on text content type
* el_class = _guessElementClass(c_node)
* if el_class is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1441
+ /* "lxml/objectify.pyx":1516
*
* # if element is a root node => default to tree node
* if c_node.parent is NULL or not tree._isElement(c_node.parent): # <<<<<<<<<<<<<<
__pyx_L17_bool_binop_done:;
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1442
+ /* "lxml/objectify.pyx":1517
* # if element is a root node => default to tree node
* if c_node.parent is NULL or not tree._isElement(c_node.parent):
* return lookup.tree_class # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_lookup->tree_class;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1441
+ /* "lxml/objectify.pyx":1516
*
* # if element is a root node => default to tree node
* if c_node.parent is NULL or not tree._isElement(c_node.parent): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1444
+ /* "lxml/objectify.pyx":1519
* return lookup.tree_class
*
* return lookup.empty_data_class # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_lookup->empty_data_class;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1400
+ /* "lxml/objectify.pyx":1475
* self.empty_data_class = empty_data_class
*
* cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1450
+/* "lxml/objectify.pyx":1525
* # Type annotations
*
* cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_check_type", 0);
- /* "lxml/objectify.pyx":1451
+ /* "lxml/objectify.pyx":1526
*
* cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):
* if pytype is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1452
+ /* "lxml/objectify.pyx":1527
* cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):
* if pytype is None:
* return None # <<<<<<<<<<<<<<
__pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None); __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "lxml/objectify.pyx":1451
+ /* "lxml/objectify.pyx":1526
*
* cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):
* if pytype is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1453
+ /* "lxml/objectify.pyx":1528
* if pytype is None:
* return None
* value = textOf(c_node) # <<<<<<<<<<<<<<
* try:
* pytype.type_check(value)
*/
- __pyx_t_3 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1453, __pyx_L1_error)
+ __pyx_t_3 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1528, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_value = __pyx_t_3;
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1454
+ /* "lxml/objectify.pyx":1529
* return None
* value = textOf(c_node)
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_6);
/*try:*/ {
- /* "lxml/objectify.pyx":1455
+ /* "lxml/objectify.pyx":1530
* value = textOf(c_node)
* try:
* pytype.type_check(value) # <<<<<<<<<<<<<<
}
__pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value);
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1455, __pyx_L4_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1530, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1456
+ /* "lxml/objectify.pyx":1531
* try:
* pytype.type_check(value)
* return pytype # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_pytype;
goto __pyx_L8_try_return;
- /* "lxml/objectify.pyx":1454
+ /* "lxml/objectify.pyx":1529
* return None
* value = textOf(c_node)
* try: # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- /* "lxml/objectify.pyx":1457
+ /* "lxml/objectify.pyx":1532
* pytype.type_check(value)
* return pytype
* except IGNORABLE_ERRORS: # <<<<<<<<<<<<<<
goto __pyx_L6_except_error;
__pyx_L6_except_error:;
- /* "lxml/objectify.pyx":1454
+ /* "lxml/objectify.pyx":1529
* return None
* value = textOf(c_node)
* try: # <<<<<<<<<<<<<<
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
}
- /* "lxml/objectify.pyx":1460
+ /* "lxml/objectify.pyx":1535
* # could not be parsed as the specified type => ignore
* pass
* return None # <<<<<<<<<<<<<<
__pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None); __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "lxml/objectify.pyx":1450
+ /* "lxml/objectify.pyx":1525
* # Type annotations
*
* cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1462
+/* "lxml/objectify.pyx":1537
* return None
*
* def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False, # <<<<<<<<<<<<<<
values[1] = ((PyObject *)((PyObject *)Py_False));
values[2] = ((PyObject *)((PyObject *)Py_False));
- /* "lxml/objectify.pyx":1463
+ /* "lxml/objectify.pyx":1538
*
* def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,
* empty_pytype=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pyannotate") < 0)) __PYX_ERR(0, 1462, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pyannotate") < 0)) __PYX_ERR(0, 1537, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("pyannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1462, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("pyannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1537, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.pyannotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_4lxml_9objectify_20pyannotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_ignore_old, __pyx_v_ignore_xsi, __pyx_v_empty_pytype);
- /* "lxml/objectify.pyx":1462
+ /* "lxml/objectify.pyx":1537
* return None
*
* def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("pyannotate", 0);
- /* "lxml/objectify.pyx":1482
+ /* "lxml/objectify.pyx":1557
* """
* cdef _Element element
* element = cetree.rootNodeOrRaise(element_or_tree) # <<<<<<<<<<<<<<
* _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
*
*/
- __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1482, __pyx_L1_error)
+ __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1557, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1483
+ /* "lxml/objectify.pyx":1558
* cdef _Element element
* element = cetree.rootNodeOrRaise(element_or_tree)
* _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype) # <<<<<<<<<<<<<<
*
* def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1483, __pyx_L1_error)
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1483, __pyx_L1_error)
- __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, 0, 1, __pyx_t_2, __pyx_t_3, Py_None, __pyx_v_empty_pytype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1483, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1558, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1558, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, 0, 1, __pyx_t_2, __pyx_t_3, Py_None, __pyx_v_empty_pytype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1558, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1462
+ /* "lxml/objectify.pyx":1537
* return None
*
* def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1485
+/* "lxml/objectify.pyx":1560
* _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
*
* def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False, # <<<<<<<<<<<<<<
values[1] = ((PyObject *)((PyObject *)Py_False));
values[2] = ((PyObject *)((PyObject *)Py_False));
- /* "lxml/objectify.pyx":1486
+ /* "lxml/objectify.pyx":1561
*
* def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,
* empty_type=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsiannotate") < 0)) __PYX_ERR(0, 1485, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsiannotate") < 0)) __PYX_ERR(0, 1560, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("xsiannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1485, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("xsiannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1560, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.xsiannotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_4lxml_9objectify_22xsiannotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_ignore_old, __pyx_v_ignore_pytype, __pyx_v_empty_type);
- /* "lxml/objectify.pyx":1485
+ /* "lxml/objectify.pyx":1560
* _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
*
* def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("xsiannotate", 0);
- /* "lxml/objectify.pyx":1510
+ /* "lxml/objectify.pyx":1585
* """
* cdef _Element element
* element = cetree.rootNodeOrRaise(element_or_tree) # <<<<<<<<<<<<<<
* _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
*
*/
- __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1510, __pyx_L1_error)
+ __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1585, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1511
+ /* "lxml/objectify.pyx":1586
* cdef _Element element
* element = cetree.rootNodeOrRaise(element_or_tree)
* _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None) # <<<<<<<<<<<<<<
*
* def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1511, __pyx_L1_error)
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_pytype); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1511, __pyx_L1_error)
- __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, 1, 0, __pyx_t_2, __pyx_t_3, __pyx_v_empty_type, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1511, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1586, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_pytype); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1586, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, 1, 0, __pyx_t_2, __pyx_t_3, __pyx_v_empty_type, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1485
+ /* "lxml/objectify.pyx":1560
* _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
*
* def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1513
+/* "lxml/objectify.pyx":1588
* _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
*
* def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False, # <<<<<<<<<<<<<<
values[1] = ((PyObject *)((PyObject *)Py_True));
values[2] = ((PyObject *)((PyObject *)Py_False));
- /* "lxml/objectify.pyx":1514
+ /* "lxml/objectify.pyx":1589
*
* def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,
* empty_pytype=None, empty_type=None, annotate_xsi=0, # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "annotate") < 0)) __PYX_ERR(0, 1513, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "annotate") < 0)) __PYX_ERR(0, 1588, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("annotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1513, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("annotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1588, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.annotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_4lxml_9objectify_24annotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_ignore_old, __pyx_v_ignore_xsi, __pyx_v_empty_pytype, __pyx_v_empty_type, __pyx_v_annotate_xsi, __pyx_v_annotate_pytype);
- /* "lxml/objectify.pyx":1513
+ /* "lxml/objectify.pyx":1588
* _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
*
* def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("annotate", 0);
- /* "lxml/objectify.pyx":1547
+ /* "lxml/objectify.pyx":1622
* """
* cdef _Element element
* element = cetree.rootNodeOrRaise(element_or_tree) # <<<<<<<<<<<<<<
* _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,
* ignore_old, empty_type, empty_pytype)
*/
- __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1547, __pyx_L1_error)
+ __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1622, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1548
+ /* "lxml/objectify.pyx":1623
* cdef _Element element
* element = cetree.rootNodeOrRaise(element_or_tree)
* _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi, # <<<<<<<<<<<<<<
* ignore_old, empty_type, empty_pytype)
*
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1548, __pyx_L1_error)
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_pytype); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1548, __pyx_L1_error)
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1548, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1623, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_pytype); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1623, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1623, __pyx_L1_error)
- /* "lxml/objectify.pyx":1549
+ /* "lxml/objectify.pyx":1624
* element = cetree.rootNodeOrRaise(element_or_tree)
* _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,
* ignore_old, empty_type, empty_pytype) # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1549, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1624, __pyx_L1_error)
- /* "lxml/objectify.pyx":1548
+ /* "lxml/objectify.pyx":1623
* cdef _Element element
* element = cetree.rootNodeOrRaise(element_or_tree)
* _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi, # <<<<<<<<<<<<<<
* ignore_old, empty_type, empty_pytype)
*
*/
- __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_empty_type, __pyx_v_empty_pytype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_empty_type, __pyx_v_empty_pytype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1623, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1513
+ /* "lxml/objectify.pyx":1588
* _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
*
* def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1552
+/* "lxml/objectify.pyx":1627
*
*
* cdef _annotate(_Element element, bint annotate_xsi, bint annotate_pytype, # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_empty_type_name);
__Pyx_INCREF(__pyx_v_empty_pytype_name);
- /* "lxml/objectify.pyx":1559
+ /* "lxml/objectify.pyx":1634
* cdef PyType empty_pytype, StrType, NoneType
*
* if not annotate_xsi and not annotate_pytype: # <<<<<<<<<<<<<<
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1560
+ /* "lxml/objectify.pyx":1635
*
* if not annotate_xsi and not annotate_pytype:
* return # <<<<<<<<<<<<<<
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "lxml/objectify.pyx":1559
+ /* "lxml/objectify.pyx":1634
* cdef PyType empty_pytype, StrType, NoneType
*
* if not annotate_xsi and not annotate_pytype: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1562
+ /* "lxml/objectify.pyx":1637
* return
*
* if empty_type_name is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1563
+ /* "lxml/objectify.pyx":1638
*
* if empty_type_name is not None:
* if isinstance(empty_type_name, bytes): # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1564
+ /* "lxml/objectify.pyx":1639
* if empty_type_name is not None:
* if isinstance(empty_type_name, bytes):
* empty_type_name = (<bytes>empty_type_name).decode("ascii") # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_empty_type_name == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
- __PYX_ERR(0, 1564, __pyx_L1_error)
+ __PYX_ERR(0, 1639, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_type_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1564, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_type_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_empty_type_name, __pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1563
+ /* "lxml/objectify.pyx":1638
*
* if empty_type_name is not None:
* if isinstance(empty_type_name, bytes): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1565
+ /* "lxml/objectify.pyx":1640
* if isinstance(empty_type_name, bytes):
* empty_type_name = (<bytes>empty_type_name).decode("ascii")
* empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1565, __pyx_L1_error)
+ __PYX_ERR(0, 1640, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_empty_type_name, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1565, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_empty_type_name, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1640, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __pyx_t_3;
__Pyx_INCREF(__pyx_t_4);
__pyx_v_empty_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1562
+ /* "lxml/objectify.pyx":1637
* return
*
* if empty_type_name is not None: # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "lxml/objectify.pyx":1566
+ /* "lxml/objectify.pyx":1641
* empty_type_name = (<bytes>empty_type_name).decode("ascii")
* empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
* elif empty_pytype_name is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1567
+ /* "lxml/objectify.pyx":1642
* empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
* elif empty_pytype_name is not None:
* if isinstance(empty_pytype_name, bytes): # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1568
+ /* "lxml/objectify.pyx":1643
* elif empty_pytype_name is not None:
* if isinstance(empty_pytype_name, bytes):
* empty_pytype_name = (<bytes>empty_pytype_name).decode("ascii") # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_empty_pytype_name == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
- __PYX_ERR(0, 1568, __pyx_L1_error)
+ __PYX_ERR(0, 1643, __pyx_L1_error)
}
- __pyx_t_4 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_pytype_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1568, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_pytype_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1643, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_empty_pytype_name, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1567
+ /* "lxml/objectify.pyx":1642
* empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
* elif empty_pytype_name is not None:
* if isinstance(empty_pytype_name, bytes): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1569
+ /* "lxml/objectify.pyx":1644
* if isinstance(empty_pytype_name, bytes):
* empty_pytype_name = (<bytes>empty_pytype_name).decode("ascii")
* empty_pytype = <PyType>_PYTYPE_DICT.get(empty_pytype_name) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1569, __pyx_L1_error)
+ __PYX_ERR(0, 1644, __pyx_L1_error)
}
- __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_empty_pytype_name, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1569, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_empty_pytype_name, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1644, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __pyx_t_4;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_empty_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1566
+ /* "lxml/objectify.pyx":1641
* empty_type_name = (<bytes>empty_type_name).decode("ascii")
* empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
* elif empty_pytype_name is not None: # <<<<<<<<<<<<<<
goto __pyx_L6;
}
- /* "lxml/objectify.pyx":1571
+ /* "lxml/objectify.pyx":1646
* empty_pytype = <PyType>_PYTYPE_DICT.get(empty_pytype_name)
* else:
* empty_pytype = None # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "lxml/objectify.pyx":1573
+ /* "lxml/objectify.pyx":1648
* empty_pytype = None
*
* StrType = <PyType>_PYTYPE_DICT.get(u'str') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1573, __pyx_L1_error)
+ __PYX_ERR(0, 1648, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_str, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1573, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_str, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1648, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __pyx_t_3;
__Pyx_INCREF(__pyx_t_4);
__pyx_v_StrType = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1574
+ /* "lxml/objectify.pyx":1649
*
* StrType = <PyType>_PYTYPE_DICT.get(u'str')
* NoneType = <PyType>_PYTYPE_DICT.get(u'NoneType') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1574, __pyx_L1_error)
+ __PYX_ERR(0, 1649, __pyx_L1_error)
}
- __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_NoneType, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1574, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_NoneType, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1649, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __pyx_t_4;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_NoneType = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1576
+ /* "lxml/objectify.pyx":1651
* NoneType = <PyType>_PYTYPE_DICT.get(u'NoneType')
*
* doc = element._doc # <<<<<<<<<<<<<<
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1577
+ /* "lxml/objectify.pyx":1652
*
* doc = element._doc
* c_node = element._c_node # <<<<<<<<<<<<<<
__pyx_t_5 = __pyx_v_element->_c_node;
__pyx_v_c_node = __pyx_t_5;
- /* "lxml/objectify.pyx":1578
+ /* "lxml/objectify.pyx":1653
* doc = element._doc
* c_node = element._c_node
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1) # <<<<<<<<<<<<<<
*/
BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);
- /* "lxml/objectify.pyx":1579
+ /* "lxml/objectify.pyx":1654
* c_node = element._c_node
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
* if c_node.type == tree.XML_ELEMENT_NODE: # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1580
+ /* "lxml/objectify.pyx":1655
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
* if c_node.type == tree.XML_ELEMENT_NODE:
* _annotate_element(c_node, doc, annotate_xsi, annotate_pytype, # <<<<<<<<<<<<<<
* ignore_xsi, ignore_pytype,
* empty_type_name, empty_pytype, StrType, NoneType)
*/
- __pyx_t_6 = __pyx_f_4lxml_9objectify__annotate_element(__pyx_v_c_node, __pyx_v_doc, __pyx_v_annotate_xsi, __pyx_v_annotate_pytype, __pyx_v_ignore_xsi, __pyx_v_ignore_pytype, __pyx_v_empty_type_name, __pyx_v_empty_pytype, __pyx_v_StrType, __pyx_v_NoneType); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1580, __pyx_L1_error)
+ __pyx_t_6 = __pyx_f_4lxml_9objectify__annotate_element(__pyx_v_c_node, __pyx_v_doc, __pyx_v_annotate_xsi, __pyx_v_annotate_pytype, __pyx_v_ignore_xsi, __pyx_v_ignore_pytype, __pyx_v_empty_type_name, __pyx_v_empty_pytype, __pyx_v_StrType, __pyx_v_NoneType); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1655, __pyx_L1_error)
- /* "lxml/objectify.pyx":1579
+ /* "lxml/objectify.pyx":1654
* c_node = element._c_node
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
* if c_node.type == tree.XML_ELEMENT_NODE: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1583
+ /* "lxml/objectify.pyx":1658
* ignore_xsi, ignore_pytype,
* empty_type_name, empty_pytype, StrType, NoneType)
* tree.END_FOR_EACH_ELEMENT_FROM(c_node) # <<<<<<<<<<<<<<
*/
END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
- /* "lxml/objectify.pyx":1552
+ /* "lxml/objectify.pyx":1627
*
*
* cdef _annotate(_Element element, bint annotate_xsi, bint annotate_pytype, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1585
+/* "lxml/objectify.pyx":1660
* tree.END_FOR_EACH_ELEMENT_FROM(c_node)
*
* cdef int _annotate_element(tree.xmlNode* c_node, _Document doc, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_annotate_element", 0);
- /* "lxml/objectify.pyx":1591
+ /* "lxml/objectify.pyx":1666
* PyType StrType, PyType NoneType) except -1:
* cdef tree.xmlNs* c_ns
* cdef PyType pytype = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_v_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None);
- /* "lxml/objectify.pyx":1592
+ /* "lxml/objectify.pyx":1667
* cdef tree.xmlNs* c_ns
* cdef PyType pytype = None
* typename = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_v_typename = Py_None;
- /* "lxml/objectify.pyx":1593
+ /* "lxml/objectify.pyx":1668
* cdef PyType pytype = None
* typename = None
* istree = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_istree = 0;
- /* "lxml/objectify.pyx":1596
+ /* "lxml/objectify.pyx":1671
*
* # if element is defined as xsi:nil, represent it as None
* if cetree.attributeValueFromNsName( # <<<<<<<<<<<<<<
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil") == "true":
* pytype = NoneType
*/
- __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"nil")))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1596, __pyx_L1_error)
+ __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"nil")))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1671, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_true, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1597, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_true, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1672, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1598
+ /* "lxml/objectify.pyx":1673
* if cetree.attributeValueFromNsName(
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil") == "true":
* pytype = NoneType # <<<<<<<<<<<<<<
__Pyx_INCREF(((PyObject *)__pyx_v_NoneType));
__Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_NoneType);
- /* "lxml/objectify.pyx":1596
+ /* "lxml/objectify.pyx":1671
*
* # if element is defined as xsi:nil, represent it as None
* if cetree.attributeValueFromNsName( # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1600
+ /* "lxml/objectify.pyx":1675
* pytype = NoneType
*
* if pytype is None and not ignore_xsi: # <<<<<<<<<<<<<<
__pyx_L5_bool_binop_done:;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1602
+ /* "lxml/objectify.pyx":1677
* if pytype is None and not ignore_xsi:
* # check that old xsi type value is valid
* typename = cetree.attributeValueFromNsName( # <<<<<<<<<<<<<<
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
* if typename is not None:
*/
- __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"type")))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1602, __pyx_L1_error)
+ __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"type")))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1677, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1604
+ /* "lxml/objectify.pyx":1679
* typename = cetree.attributeValueFromNsName(
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
* if typename is not None: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_t_2 != 0);
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1605
+ /* "lxml/objectify.pyx":1680
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
* if typename is not None:
* pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1605, __pyx_L1_error)
+ __PYX_ERR(0, 1680, __pyx_L1_error)
}
- __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1605, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1680, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = __pyx_t_1;
__Pyx_INCREF(__pyx_t_5);
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_5));
__pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1606
+ /* "lxml/objectify.pyx":1681
* if typename is not None:
* pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
* if pytype is None and u':' in typename: # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_t_3;
goto __pyx_L9_bool_binop_done;
}
- __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v_typename, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1606, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v_typename, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1681, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_3 != 0);
__pyx_t_4 = __pyx_t_2;
__pyx_L9_bool_binop_done:;
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1607
+ /* "lxml/objectify.pyx":1682
* pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
* if pytype is None and u':' in typename:
* prefix, typename = typename.split(u':', 1) # <<<<<<<<<<<<<<
* pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
* if pytype is not None and pytype is not StrType:
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_typename, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1607, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_typename, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1607, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1607, __pyx_L1_error)
+ __PYX_ERR(0, 1682, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_6);
#else
- __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1607, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1607, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
__Pyx_GOTREF(__pyx_t_5);
index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L11_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1607, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1682, __pyx_L1_error)
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L12_unpacking_done;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1607, __pyx_L1_error)
+ __PYX_ERR(0, 1682, __pyx_L1_error)
__pyx_L12_unpacking_done:;
}
__pyx_v_prefix = __pyx_t_5;
__Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_6);
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1608
+ /* "lxml/objectify.pyx":1683
* if pytype is None and u':' in typename:
* prefix, typename = typename.split(u':', 1)
* pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1608, __pyx_L1_error)
+ __PYX_ERR(0, 1683, __pyx_L1_error)
}
- __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1608, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_6 = __pyx_t_1;
__Pyx_INCREF(__pyx_t_6);
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1606
+ /* "lxml/objectify.pyx":1681
* if typename is not None:
* pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
* if pytype is None and u':' in typename: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1609
+ /* "lxml/objectify.pyx":1684
* prefix, typename = typename.split(u':', 1)
* pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
* if pytype is not None and pytype is not StrType: # <<<<<<<<<<<<<<
__pyx_L14_bool_binop_done:;
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1613
+ /* "lxml/objectify.pyx":1688
* # anyway, so just accept it if given as type
* # information
* pytype = _check_type(c_node, pytype) # <<<<<<<<<<<<<<
* if pytype is None:
* typename = None
*/
- __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__check_type(__pyx_v_c_node, __pyx_v_pytype)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1613, __pyx_L1_error)
+ __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__check_type(__pyx_v_c_node, __pyx_v_pytype)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1688, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1614
+ /* "lxml/objectify.pyx":1689
* # information
* pytype = _check_type(c_node, pytype)
* if pytype is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_4 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1615
+ /* "lxml/objectify.pyx":1690
* pytype = _check_type(c_node, pytype)
* if pytype is None:
* typename = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__Pyx_DECREF_SET(__pyx_v_typename, Py_None);
- /* "lxml/objectify.pyx":1614
+ /* "lxml/objectify.pyx":1689
* # information
* pytype = _check_type(c_node, pytype)
* if pytype is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1609
+ /* "lxml/objectify.pyx":1684
* prefix, typename = typename.split(u':', 1)
* pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
* if pytype is not None and pytype is not StrType: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1604
+ /* "lxml/objectify.pyx":1679
* typename = cetree.attributeValueFromNsName(
* c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
* if typename is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1600
+ /* "lxml/objectify.pyx":1675
* pytype = NoneType
*
* if pytype is None and not ignore_xsi: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1617
+ /* "lxml/objectify.pyx":1692
* typename = None
*
* if pytype is None and not ignore_pytype: # <<<<<<<<<<<<<<
__pyx_L18_bool_binop_done:;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1619
+ /* "lxml/objectify.pyx":1694
* if pytype is None and not ignore_pytype:
* # check that old pytype value is valid
* old_pytypename = cetree.attributeValueFromNsName( # <<<<<<<<<<<<<<
* c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
* if old_pytypename is not None:
*/
- __pyx_t_6 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1619, __pyx_L1_error)
+ __pyx_t_6 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1694, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_v_old_pytypename = __pyx_t_6;
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1621
+ /* "lxml/objectify.pyx":1696
* old_pytypename = cetree.attributeValueFromNsName(
* c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
* if old_pytypename is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1622
+ /* "lxml/objectify.pyx":1697
* c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
* if old_pytypename is not None:
* if old_pytypename == TREE_PYTYPE_NAME: # <<<<<<<<<<<<<<
* if not cetree.hasChild(c_node):
* # only case where we should keep it,
*/
- __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_old_pytypename, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1622, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_old_pytypename, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1697, __pyx_L1_error)
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1623
+ /* "lxml/objectify.pyx":1698
* if old_pytypename is not None:
* if old_pytypename == TREE_PYTYPE_NAME:
* if not cetree.hasChild(c_node): # <<<<<<<<<<<<<<
__pyx_t_3 = ((!(hasChild(__pyx_v_c_node) != 0)) != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1626
+ /* "lxml/objectify.pyx":1701
* # only case where we should keep it,
* # everything else is clear enough
* pytype = TREE_PYTYPE # <<<<<<<<<<<<<<
__Pyx_INCREF(((PyObject *)__pyx_v_4lxml_9objectify_TREE_PYTYPE));
__Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_4lxml_9objectify_TREE_PYTYPE);
- /* "lxml/objectify.pyx":1623
+ /* "lxml/objectify.pyx":1698
* if old_pytypename is not None:
* if old_pytypename == TREE_PYTYPE_NAME:
* if not cetree.hasChild(c_node): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1622
+ /* "lxml/objectify.pyx":1697
* c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
* if old_pytypename is not None:
* if old_pytypename == TREE_PYTYPE_NAME: # <<<<<<<<<<<<<<
goto __pyx_L21;
}
- /* "lxml/objectify.pyx":1628
+ /* "lxml/objectify.pyx":1703
* pytype = TREE_PYTYPE
* else:
* if old_pytypename == 'none': # <<<<<<<<<<<<<<
* old_pytypename = "NoneType"
*/
/*else*/ {
- __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_old_pytypename, __pyx_n_s_none, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1628, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_old_pytypename, __pyx_n_s_none, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1703, __pyx_L1_error)
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1630
+ /* "lxml/objectify.pyx":1705
* if old_pytypename == 'none':
* # transition from lxml 1.x
* old_pytypename = "NoneType" # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_n_s_NoneType);
__Pyx_DECREF_SET(__pyx_v_old_pytypename, __pyx_n_s_NoneType);
- /* "lxml/objectify.pyx":1628
+ /* "lxml/objectify.pyx":1703
* pytype = TREE_PYTYPE
* else:
* if old_pytypename == 'none': # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1631
+ /* "lxml/objectify.pyx":1706
* # transition from lxml 1.x
* old_pytypename = "NoneType"
* pytype = <PyType>_PYTYPE_DICT.get(old_pytypename) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1631, __pyx_L1_error)
+ __PYX_ERR(0, 1706, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_old_pytypename, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1631, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_old_pytypename, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1706, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_1 = __pyx_t_6;
__Pyx_INCREF(__pyx_t_1);
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1632
+ /* "lxml/objectify.pyx":1707
* old_pytypename = "NoneType"
* pytype = <PyType>_PYTYPE_DICT.get(old_pytypename)
* if pytype is not None and pytype is not StrType: # <<<<<<<<<<<<<<
__pyx_L25_bool_binop_done:;
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1636
+ /* "lxml/objectify.pyx":1711
* # default anyway, so just accept it if given as
* # type information
* pytype = _check_type(c_node, pytype) # <<<<<<<<<<<<<<
*
* if pytype is None:
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_9objectify__check_type(__pyx_v_c_node, __pyx_v_pytype)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1636, __pyx_L1_error)
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_9objectify__check_type(__pyx_v_c_node, __pyx_v_pytype)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1711, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1632
+ /* "lxml/objectify.pyx":1707
* old_pytypename = "NoneType"
* pytype = <PyType>_PYTYPE_DICT.get(old_pytypename)
* if pytype is not None and pytype is not StrType: # <<<<<<<<<<<<<<
}
__pyx_L21:;
- /* "lxml/objectify.pyx":1621
+ /* "lxml/objectify.pyx":1696
* old_pytypename = cetree.attributeValueFromNsName(
* c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
* if old_pytypename is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1617
+ /* "lxml/objectify.pyx":1692
* typename = None
*
* if pytype is None and not ignore_pytype: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1638
+ /* "lxml/objectify.pyx":1713
* pytype = _check_type(c_node, pytype)
*
* if pytype is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1640
+ /* "lxml/objectify.pyx":1715
* if pytype is None:
* # try to guess type
* if not cetree.hasChild(c_node): # <<<<<<<<<<<<<<
__pyx_t_2 = ((!(hasChild(__pyx_v_c_node) != 0)) != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1642
+ /* "lxml/objectify.pyx":1717
* if not cetree.hasChild(c_node):
* # element has no children => data class
* pytype = _guessPyType(textOf(c_node), StrType) # <<<<<<<<<<<<<<
* else:
* istree = 1
*/
- __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1642, __pyx_L1_error)
+ __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1717, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__guessPyType(__pyx_t_1, __pyx_v_StrType)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1642, __pyx_L1_error)
+ __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__guessPyType(__pyx_t_1, __pyx_v_StrType)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1717, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1640
+ /* "lxml/objectify.pyx":1715
* if pytype is None:
* # try to guess type
* if not cetree.hasChild(c_node): # <<<<<<<<<<<<<<
goto __pyx_L28;
}
- /* "lxml/objectify.pyx":1644
+ /* "lxml/objectify.pyx":1719
* pytype = _guessPyType(textOf(c_node), StrType)
* else:
* istree = 1 # <<<<<<<<<<<<<<
}
__pyx_L28:;
- /* "lxml/objectify.pyx":1638
+ /* "lxml/objectify.pyx":1713
* pytype = _check_type(c_node, pytype)
*
* if pytype is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1646
+ /* "lxml/objectify.pyx":1721
* istree = 1
*
* if pytype is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1648
+ /* "lxml/objectify.pyx":1723
* if pytype is None:
* # use default type for empty elements
* if cetree.hasText(c_node): # <<<<<<<<<<<<<<
__pyx_t_3 = (hasText(__pyx_v_c_node) != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1649
+ /* "lxml/objectify.pyx":1724
* # use default type for empty elements
* if cetree.hasText(c_node):
* pytype = StrType # <<<<<<<<<<<<<<
__Pyx_INCREF(((PyObject *)__pyx_v_StrType));
__Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_StrType);
- /* "lxml/objectify.pyx":1648
+ /* "lxml/objectify.pyx":1723
* if pytype is None:
* # use default type for empty elements
* if cetree.hasText(c_node): # <<<<<<<<<<<<<<
goto __pyx_L30;
}
- /* "lxml/objectify.pyx":1651
+ /* "lxml/objectify.pyx":1726
* pytype = StrType
* else:
* pytype = empty_pytype # <<<<<<<<<<<<<<
__Pyx_INCREF(((PyObject *)__pyx_v_empty_pytype));
__Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_empty_pytype);
- /* "lxml/objectify.pyx":1652
+ /* "lxml/objectify.pyx":1727
* else:
* pytype = empty_pytype
* if typename is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1653
+ /* "lxml/objectify.pyx":1728
* pytype = empty_pytype
* if typename is None:
* typename = empty_type_name # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_empty_type_name);
__Pyx_DECREF_SET(__pyx_v_typename, __pyx_v_empty_type_name);
- /* "lxml/objectify.pyx":1652
+ /* "lxml/objectify.pyx":1727
* else:
* pytype = empty_pytype
* if typename is None: # <<<<<<<<<<<<<<
}
__pyx_L30:;
- /* "lxml/objectify.pyx":1646
+ /* "lxml/objectify.pyx":1721
* istree = 1
*
* if pytype is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1655
+ /* "lxml/objectify.pyx":1730
* typename = empty_type_name
*
* if pytype is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1656
+ /* "lxml/objectify.pyx":1731
*
* if pytype is not None:
* if typename is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1657
+ /* "lxml/objectify.pyx":1732
* if pytype is not None:
* if typename is None:
* if not istree: # <<<<<<<<<<<<<<
__pyx_t_2 = ((!(__pyx_v_istree != 0)) != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1658
+ /* "lxml/objectify.pyx":1733
* if typename is None:
* if not istree:
* if pytype._schema_types: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_pytype->_schema_types != Py_None)&&(PyList_GET_SIZE(__pyx_v_pytype->_schema_types) != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1661
+ /* "lxml/objectify.pyx":1736
* # pytype->xsi:type is a 1:n mapping
* # simply take the first
* typename = pytype._schema_types[0] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_pytype->_schema_types == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 1661, __pyx_L1_error)
+ __PYX_ERR(0, 1736, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1661, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1736, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_6);
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1658
+ /* "lxml/objectify.pyx":1733
* if typename is None:
* if not istree:
* if pytype._schema_types: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1657
+ /* "lxml/objectify.pyx":1732
* if pytype is not None:
* if typename is None:
* if not istree: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1656
+ /* "lxml/objectify.pyx":1731
*
* if pytype is not None:
* if typename is None: # <<<<<<<<<<<<<<
goto __pyx_L33;
}
- /* "lxml/objectify.pyx":1662
+ /* "lxml/objectify.pyx":1737
* # simply take the first
* typename = pytype._schema_types[0]
* elif typename not in pytype._schema_types: # <<<<<<<<<<<<<<
* typename = pytype._schema_types[0]
*
*/
- __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_typename, __pyx_v_pytype->_schema_types, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1662, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_typename, __pyx_v_pytype->_schema_types, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1737, __pyx_L1_error)
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1663
+ /* "lxml/objectify.pyx":1738
* typename = pytype._schema_types[0]
* elif typename not in pytype._schema_types:
* typename = pytype._schema_types[0] # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_pytype->_schema_types == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(0, 1663, __pyx_L1_error)
+ __PYX_ERR(0, 1738, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1663, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1738, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_6);
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1662
+ /* "lxml/objectify.pyx":1737
* # simply take the first
* typename = pytype._schema_types[0]
* elif typename not in pytype._schema_types: # <<<<<<<<<<<<<<
}
__pyx_L33:;
- /* "lxml/objectify.pyx":1655
+ /* "lxml/objectify.pyx":1730
* typename = empty_type_name
*
* if pytype is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1665
+ /* "lxml/objectify.pyx":1740
* typename = pytype._schema_types[0]
*
* if annotate_xsi: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_annotate_xsi != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1666
+ /* "lxml/objectify.pyx":1741
*
* if annotate_xsi:
* if typename is None or istree: # <<<<<<<<<<<<<<
__pyx_L38_bool_binop_done:;
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1667
+ /* "lxml/objectify.pyx":1742
* if annotate_xsi:
* if typename is None or istree:
* cetree.delAttributeFromNsName( # <<<<<<<<<<<<<<
*/
(void)(delAttributeFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"type")))));
- /* "lxml/objectify.pyx":1666
+ /* "lxml/objectify.pyx":1741
*
* if annotate_xsi:
* if typename is None or istree: # <<<<<<<<<<<<<<
goto __pyx_L37;
}
- /* "lxml/objectify.pyx":1671
+ /* "lxml/objectify.pyx":1746
* else:
* # update or create attribute
* typename_utf8 = cetree.utf8(typename) # <<<<<<<<<<<<<<
* doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
*/
/*else*/ {
- __pyx_t_6 = utf8(__pyx_v_typename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1671, __pyx_L1_error)
+ __pyx_t_6 = utf8(__pyx_v_typename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1746, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_v_typename_utf8 = __pyx_t_6;
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1672
+ /* "lxml/objectify.pyx":1747
* # update or create attribute
* typename_utf8 = cetree.utf8(typename)
* c_ns = cetree.findOrBuildNodeNsPrefix( # <<<<<<<<<<<<<<
*/
__pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_NS, ((unsigned char *)((unsigned char *)((char const *)"xsd"))));
- /* "lxml/objectify.pyx":1674
+ /* "lxml/objectify.pyx":1749
* c_ns = cetree.findOrBuildNodeNsPrefix(
* doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
* if c_ns is not NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = ((__pyx_v_c_ns != NULL) != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1675
+ /* "lxml/objectify.pyx":1750
* doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
* if c_ns is not NULL:
* if b':' in typename_utf8: # <<<<<<<<<<<<<<
* prefix, name = typename_utf8.split(b':', 1)
* if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
*/
- __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__17, __pyx_v_typename_utf8, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1675, __pyx_L1_error)
+ __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__17, __pyx_v_typename_utf8, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1750, __pyx_L1_error)
__pyx_t_4 = (__pyx_t_3 != 0);
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1676
+ /* "lxml/objectify.pyx":1751
* if c_ns is not NULL:
* if b':' in typename_utf8:
* prefix, name = typename_utf8.split(b':', 1) # <<<<<<<<<<<<<<
* if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
* typename_utf8 = name
*/
- __pyx_t_6 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyBytes_Type_split, __pyx_v_typename_utf8, __pyx_kp_b__17, __pyx_int_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1676, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyBytes_Type_split, __pyx_v_typename_utf8, __pyx_kp_b__17, __pyx_int_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
PyObject* sequence = __pyx_t_6;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1676, __pyx_L1_error)
+ __PYX_ERR(0, 1751, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_5);
#else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1676, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1676, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1676, __pyx_L1_error)
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
__Pyx_GOTREF(__pyx_t_1);
index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L42_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1676, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1751, __pyx_L1_error)
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L43_unpacking_done;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1676, __pyx_L1_error)
+ __PYX_ERR(0, 1751, __pyx_L1_error)
__pyx_L43_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_1);
__pyx_v_name = __pyx_t_5;
__pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1677
+ /* "lxml/objectify.pyx":1752
* if b':' in typename_utf8:
* prefix, name = typename_utf8.split(b':', 1)
* if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0': # <<<<<<<<<<<<<<
__pyx_L45_bool_binop_done:;
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1678
+ /* "lxml/objectify.pyx":1753
* prefix, name = typename_utf8.split(b':', 1)
* if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
* typename_utf8 = name # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_name);
__Pyx_DECREF_SET(__pyx_v_typename_utf8, __pyx_v_name);
- /* "lxml/objectify.pyx":1677
+ /* "lxml/objectify.pyx":1752
* if b':' in typename_utf8:
* prefix, name = typename_utf8.split(b':', 1)
* if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0': # <<<<<<<<<<<<<<
goto __pyx_L44;
}
- /* "lxml/objectify.pyx":1679
+ /* "lxml/objectify.pyx":1754
* if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
* typename_utf8 = name
* elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0: # <<<<<<<<<<<<<<
__pyx_t_4 = ((xmlStrcmp((const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix), __pyx_v_c_ns->prefix) != 0) != 0);
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1680
+ /* "lxml/objectify.pyx":1755
* typename_utf8 = name
* elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
* typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name # <<<<<<<<<<<<<<
* elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':
* typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + typename_utf8
*/
- __pyx_t_6 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1680, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1755, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1680, __pyx_L1_error)
+ __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1755, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1680, __pyx_L1_error)
+ __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1755, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF_SET(__pyx_v_typename_utf8, __pyx_t_6);
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1679
+ /* "lxml/objectify.pyx":1754
* if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
* typename_utf8 = name
* elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0: # <<<<<<<<<<<<<<
}
__pyx_L44:;
- /* "lxml/objectify.pyx":1675
+ /* "lxml/objectify.pyx":1750
* doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
* if c_ns is not NULL:
* if b':' in typename_utf8: # <<<<<<<<<<<<<<
goto __pyx_L41;
}
- /* "lxml/objectify.pyx":1681
+ /* "lxml/objectify.pyx":1756
* elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
* typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
* elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0': # <<<<<<<<<<<<<<
__pyx_L47_bool_binop_done:;
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1682
+ /* "lxml/objectify.pyx":1757
* typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
* elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':
* typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + typename_utf8 # <<<<<<<<<<<<<<
* c_ns = cetree.findOrBuildNodeNsPrefix(
* doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
*/
- __pyx_t_6 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1682, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1757, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1682, __pyx_L1_error)
+ __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1757, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_typename_utf8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1682, __pyx_L1_error)
+ __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_typename_utf8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1757, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF_SET(__pyx_v_typename_utf8, __pyx_t_6);
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1681
+ /* "lxml/objectify.pyx":1756
* elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
* typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
* elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0': # <<<<<<<<<<<<<<
}
__pyx_L41:;
- /* "lxml/objectify.pyx":1674
+ /* "lxml/objectify.pyx":1749
* c_ns = cetree.findOrBuildNodeNsPrefix(
* doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
* if c_ns is not NULL: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1683
+ /* "lxml/objectify.pyx":1758
* elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':
* typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + typename_utf8
* c_ns = cetree.findOrBuildNodeNsPrefix( # <<<<<<<<<<<<<<
*/
__pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"xsi"))));
- /* "lxml/objectify.pyx":1685
+ /* "lxml/objectify.pyx":1760
* c_ns = cetree.findOrBuildNodeNsPrefix(
* doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
* tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"type", _xcstr(typename_utf8)) # <<<<<<<<<<<<<<
}
__pyx_L37:;
- /* "lxml/objectify.pyx":1665
+ /* "lxml/objectify.pyx":1740
* typename = pytype._schema_types[0]
*
* if annotate_xsi: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1687
+ /* "lxml/objectify.pyx":1762
* tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"type", _xcstr(typename_utf8))
*
* if annotate_pytype: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_v_annotate_pytype != 0);
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1688
+ /* "lxml/objectify.pyx":1763
*
* if annotate_pytype:
* if pytype is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_4 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1690
+ /* "lxml/objectify.pyx":1765
* if pytype is None:
* # delete attribute if it exists
* cetree.delAttributeFromNsName( # <<<<<<<<<<<<<<
*/
(void)(delAttributeFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME));
- /* "lxml/objectify.pyx":1688
+ /* "lxml/objectify.pyx":1763
*
* if annotate_pytype:
* if pytype is None: # <<<<<<<<<<<<<<
goto __pyx_L50;
}
- /* "lxml/objectify.pyx":1694
+ /* "lxml/objectify.pyx":1769
* else:
* # update or create attribute
* c_ns = cetree.findOrBuildNodeNsPrefix( # <<<<<<<<<<<<<<
*/
/*else*/ {
- /* "lxml/objectify.pyx":1695
+ /* "lxml/objectify.pyx":1770
* # update or create attribute
* c_ns = cetree.findOrBuildNodeNsPrefix(
* doc, c_node, _PYTYPE_NAMESPACE, <unsigned char*>'py') # <<<<<<<<<<<<<<
*/
__pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, ((unsigned char *)((unsigned char *)((char const *)"py"))));
- /* "lxml/objectify.pyx":1696
+ /* "lxml/objectify.pyx":1771
* c_ns = cetree.findOrBuildNodeNsPrefix(
* doc, c_node, _PYTYPE_NAMESPACE, <unsigned char*>'py')
* pytype_name = cetree.utf8(pytype.name) # <<<<<<<<<<<<<<
*/
__pyx_t_6 = __pyx_v_pytype->name;
__Pyx_INCREF(__pyx_t_6);
- __pyx_t_5 = utf8(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1696, __pyx_L1_error)
+ __pyx_t_5 = utf8(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1771, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_pytype_name = ((PyObject*)__pyx_t_5);
__pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1697
+ /* "lxml/objectify.pyx":1772
* doc, c_node, _PYTYPE_NAMESPACE, <unsigned char*>'py')
* pytype_name = cetree.utf8(pytype.name)
* tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME, # <<<<<<<<<<<<<<
*/
(void)(xmlSetNsProp(__pyx_v_c_node, __pyx_v_c_ns, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_pytype_name)));
- /* "lxml/objectify.pyx":1699
+ /* "lxml/objectify.pyx":1774
* tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME,
* _xcstr(pytype_name))
* if pytype is NoneType: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_t_3 != 0);
if (__pyx_t_4) {
- /* "lxml/objectify.pyx":1700
+ /* "lxml/objectify.pyx":1775
* _xcstr(pytype_name))
* if pytype is NoneType:
* c_ns = cetree.findOrBuildNodeNsPrefix( # <<<<<<<<<<<<<<
*/
__pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"xsi"))));
- /* "lxml/objectify.pyx":1702
+ /* "lxml/objectify.pyx":1777
* c_ns = cetree.findOrBuildNodeNsPrefix(
* doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
* tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"nil", <unsigned char*>"true") # <<<<<<<<<<<<<<
*/
(void)(xmlSetNsProp(__pyx_v_c_node, __pyx_v_c_ns, ((unsigned char *)((unsigned char *)((char const *)"nil"))), ((unsigned char *)((unsigned char *)((char const *)"true")))));
- /* "lxml/objectify.pyx":1699
+ /* "lxml/objectify.pyx":1774
* tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME,
* _xcstr(pytype_name))
* if pytype is NoneType: # <<<<<<<<<<<<<<
}
__pyx_L50:;
- /* "lxml/objectify.pyx":1687
+ /* "lxml/objectify.pyx":1762
* tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"type", _xcstr(typename_utf8))
*
* if annotate_pytype: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1704
+ /* "lxml/objectify.pyx":1779
* tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"nil", <unsigned char*>"true")
*
* return 0 # <<<<<<<<<<<<<<
__pyx_r = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1585
+ /* "lxml/objectify.pyx":1660
* tree.END_FOR_EACH_ELEMENT_FROM(c_node)
*
* cdef int _annotate_element(tree.xmlNode* c_node, _Document doc, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1709
+/* "lxml/objectify.pyx":1784
* cdef object _cleanup_namespaces = etree.cleanup_namespaces
*
* def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True, # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "deannotate") < 0)) __PYX_ERR(0, 1709, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "deannotate") < 0)) __PYX_ERR(0, 1784, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
goto __pyx_L5_argtuple_error;
}
__pyx_v_element_or_tree = values[0];
if (values[1]) {
- __pyx_v_pytype = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pytype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1709, __pyx_L3_error)
+ __pyx_v_pytype = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pytype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1784, __pyx_L3_error)
} else {
__pyx_v_pytype = ((int)((int)1));
}
if (values[2]) {
- __pyx_v_xsi = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_xsi == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1709, __pyx_L3_error)
+ __pyx_v_xsi = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_xsi == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1784, __pyx_L3_error)
} else {
__pyx_v_xsi = ((int)((int)1));
}
if (values[3]) {
- __pyx_v_xsi_nil = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_xsi_nil == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1710, __pyx_L3_error)
+ __pyx_v_xsi_nil = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_xsi_nil == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1785, __pyx_L3_error)
} else {
- /* "lxml/objectify.pyx":1710
+ /* "lxml/objectify.pyx":1785
*
* def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,
* bint xsi_nil=False, bint cleanup_namespaces=False): # <<<<<<<<<<<<<<
__pyx_v_xsi_nil = ((int)((int)0));
}
if (values[4]) {
- __pyx_v_cleanup_namespaces = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_cleanup_namespaces == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1710, __pyx_L3_error)
+ __pyx_v_cleanup_namespaces = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_cleanup_namespaces == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1785, __pyx_L3_error)
} else {
__pyx_v_cleanup_namespaces = ((int)((int)0));
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("deannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1709, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("deannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1784, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.deannotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_4lxml_9objectify_26deannotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_pytype, __pyx_v_xsi, __pyx_v_xsi_nil, __pyx_v_cleanup_namespaces);
- /* "lxml/objectify.pyx":1709
+ /* "lxml/objectify.pyx":1784
* cdef object _cleanup_namespaces = etree.cleanup_namespaces
*
* def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("deannotate", 0);
- /* "lxml/objectify.pyx":1726
+ /* "lxml/objectify.pyx":1801
* the tree, pass the option ``cleanup_namespaces=True``.
* """
* cdef list attribute_names = [] # <<<<<<<<<<<<<<
*
* if pytype:
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1726, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1801, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_attribute_names = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1728
+ /* "lxml/objectify.pyx":1803
* cdef list attribute_names = []
*
* if pytype: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_pytype != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1729
+ /* "lxml/objectify.pyx":1804
*
* if pytype:
* attribute_names.append(PYTYPE_ATTRIBUTE) # <<<<<<<<<<<<<<
* if xsi:
* attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1729, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1729, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1804, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1728
+ /* "lxml/objectify.pyx":1803
* cdef list attribute_names = []
*
* if pytype: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1730
+ /* "lxml/objectify.pyx":1805
* if pytype:
* attribute_names.append(PYTYPE_ATTRIBUTE)
* if xsi: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_xsi != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1731
+ /* "lxml/objectify.pyx":1806
* attribute_names.append(PYTYPE_ATTRIBUTE)
* if xsi:
* attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR) # <<<<<<<<<<<<<<
*/
__pyx_t_1 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR;
__Pyx_INCREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1731, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1806, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1730
+ /* "lxml/objectify.pyx":1805
* if pytype:
* attribute_names.append(PYTYPE_ATTRIBUTE)
* if xsi: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1732
+ /* "lxml/objectify.pyx":1807
* if xsi:
* attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
* if xsi_nil: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_xsi_nil != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1733
+ /* "lxml/objectify.pyx":1808
* attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
* if xsi_nil:
* attribute_names.append(XML_SCHEMA_INSTANCE_NIL_ATTR) # <<<<<<<<<<<<<<
*/
__pyx_t_1 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR;
__Pyx_INCREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1733, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1808, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1732
+ /* "lxml/objectify.pyx":1807
* if xsi:
* attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
* if xsi_nil: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1735
+ /* "lxml/objectify.pyx":1810
* attribute_names.append(XML_SCHEMA_INSTANCE_NIL_ATTR)
*
* _strip_attributes(element_or_tree, *attribute_names) # <<<<<<<<<<<<<<
* if cleanup_namespaces:
* _cleanup_namespaces(element_or_tree)
*/
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1735, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1810, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_element_or_tree);
__Pyx_GIVEREF(__pyx_v_element_or_tree);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_element_or_tree);
- __pyx_t_4 = PySequence_Tuple(__pyx_v_attribute_names); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1735, __pyx_L1_error)
+ __pyx_t_4 = PySequence_Tuple(__pyx_v_attribute_names); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1810, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1735, __pyx_L1_error)
+ __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1810, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__strip_attributes, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1735, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__strip_attributes, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1810, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1736
+ /* "lxml/objectify.pyx":1811
*
* _strip_attributes(element_or_tree, *attribute_names)
* if cleanup_namespaces: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_cleanup_namespaces != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1737
+ /* "lxml/objectify.pyx":1812
* _strip_attributes(element_or_tree, *attribute_names)
* if cleanup_namespaces:
* _cleanup_namespaces(element_or_tree) # <<<<<<<<<<<<<<
}
__pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_1, __pyx_v_element_or_tree) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_element_or_tree);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1737, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1812, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1736
+ /* "lxml/objectify.pyx":1811
*
* _strip_attributes(element_or_tree, *attribute_names)
* if cleanup_namespaces: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1709
+ /* "lxml/objectify.pyx":1784
* cdef object _cleanup_namespaces = etree.cleanup_namespaces
*
* def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True, # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1749
+/* "lxml/objectify.pyx":1824
* objectify_parser = __DEFAULT_PARSER
*
* def set_default_parser(new_parser = None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_default_parser") < 0)) __PYX_ERR(0, 1749, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_default_parser") < 0)) __PYX_ERR(0, 1824, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("set_default_parser", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1749, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("set_default_parser", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1824, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.set_default_parser", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("set_default_parser", 0);
- /* "lxml/objectify.pyx":1760
+ /* "lxml/objectify.pyx":1835
* """
* global objectify_parser
* if new_parser is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1761
+ /* "lxml/objectify.pyx":1836
* global objectify_parser
* if new_parser is None:
* objectify_parser = __DEFAULT_PARSER # <<<<<<<<<<<<<<
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_4lxml_9objectify___DEFAULT_PARSER);
__Pyx_GIVEREF(__pyx_v_4lxml_9objectify___DEFAULT_PARSER);
- /* "lxml/objectify.pyx":1760
+ /* "lxml/objectify.pyx":1835
* """
* global objectify_parser
* if new_parser is None: # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "lxml/objectify.pyx":1762
+ /* "lxml/objectify.pyx":1837
* if new_parser is None:
* objectify_parser = __DEFAULT_PARSER
* elif isinstance(new_parser, etree.XMLParser): # <<<<<<<<<<<<<<
* objectify_parser = new_parser
* else:
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1762, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1837, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyObject_IsInstance(__pyx_v_new_parser, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1762, __pyx_L1_error)
+ __pyx_t_2 = PyObject_IsInstance(__pyx_v_new_parser, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1837, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_1 = (__pyx_t_2 != 0);
if (likely(__pyx_t_1)) {
- /* "lxml/objectify.pyx":1763
+ /* "lxml/objectify.pyx":1838
* objectify_parser = __DEFAULT_PARSER
* elif isinstance(new_parser, etree.XMLParser):
* objectify_parser = new_parser # <<<<<<<<<<<<<<
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_new_parser);
__Pyx_GIVEREF(__pyx_v_new_parser);
- /* "lxml/objectify.pyx":1762
+ /* "lxml/objectify.pyx":1837
* if new_parser is None:
* objectify_parser = __DEFAULT_PARSER
* elif isinstance(new_parser, etree.XMLParser): # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "lxml/objectify.pyx":1765
+ /* "lxml/objectify.pyx":1840
* objectify_parser = new_parser
* else:
* raise TypeError, u"parser must inherit from lxml.etree.XMLParser" # <<<<<<<<<<<<<<
*/
/*else*/ {
__Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_parser_must_inherit_from_lxml_et, 0, 0);
- __PYX_ERR(0, 1765, __pyx_L1_error)
+ __PYX_ERR(0, 1840, __pyx_L1_error)
}
__pyx_L3:;
- /* "lxml/objectify.pyx":1749
+ /* "lxml/objectify.pyx":1824
* objectify_parser = __DEFAULT_PARSER
*
* def set_default_parser(new_parser = None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1767
+/* "lxml/objectify.pyx":1842
* raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
*
* def makeparser(**kw): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("makeparser", 0);
- /* "lxml/objectify.pyx":1777
+ /* "lxml/objectify.pyx":1852
* ``remove_blank_text`` boolean keyword option yourself.
* """
* if 'remove_blank_text' not in kw: # <<<<<<<<<<<<<<
* kw['remove_blank_text'] = True
* parser = etree.XMLParser(**kw)
*/
- __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_remove_blank_text, __pyx_v_kw, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1777, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_remove_blank_text, __pyx_v_kw, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1852, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1778
+ /* "lxml/objectify.pyx":1853
* """
* if 'remove_blank_text' not in kw:
* kw['remove_blank_text'] = True # <<<<<<<<<<<<<<
* parser = etree.XMLParser(**kw)
* parser.set_element_class_lookup( ObjectifyElementClassLookup() )
*/
- if (unlikely(PyDict_SetItem(__pyx_v_kw, __pyx_n_s_remove_blank_text, Py_True) < 0)) __PYX_ERR(0, 1778, __pyx_L1_error)
+ if (unlikely(PyDict_SetItem(__pyx_v_kw, __pyx_n_s_remove_blank_text, Py_True) < 0)) __PYX_ERR(0, 1853, __pyx_L1_error)
- /* "lxml/objectify.pyx":1777
+ /* "lxml/objectify.pyx":1852
* ``remove_blank_text`` boolean keyword option yourself.
* """
* if 'remove_blank_text' not in kw: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1779
+ /* "lxml/objectify.pyx":1854
* if 'remove_blank_text' not in kw:
* kw['remove_blank_text'] = True
* parser = etree.XMLParser(**kw) # <<<<<<<<<<<<<<
* parser.set_element_class_lookup( ObjectifyElementClassLookup() )
* return parser
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1779, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1854, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_v_kw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1779, __pyx_L1_error)
+ __pyx_t_4 = PyDict_Copy(__pyx_v_kw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1854, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1854, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_parser = __pyx_t_4;
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_parser = __pyx_t_5;
+ __pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1780
+ /* "lxml/objectify.pyx":1855
* kw['remove_blank_text'] = True
* parser = etree.XMLParser(**kw)
* parser.set_element_class_lookup( ObjectifyElementClassLookup() ) # <<<<<<<<<<<<<<
* return parser
*
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_parser, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1780, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_parser, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1855, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1780, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5);
+ __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1780, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1855, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1781
+ /* "lxml/objectify.pyx":1856
* parser = etree.XMLParser(**kw)
* parser.set_element_class_lookup( ObjectifyElementClassLookup() )
* return parser # <<<<<<<<<<<<<<
__pyx_r = __pyx_v_parser;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1767
+ /* "lxml/objectify.pyx":1842
* raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
*
* def makeparser(**kw): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1783
+/* "lxml/objectify.pyx":1858
* return parser
*
* cdef _Element _makeElement(tag, text, attrib, nsmap): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_makeElement", 0);
- /* "lxml/objectify.pyx":1784
+ /* "lxml/objectify.pyx":1859
*
* cdef _Element _makeElement(tag, text, attrib, nsmap):
* return cetree.makeElement(tag, None, objectify_parser, text, None, attrib, nsmap) # <<<<<<<<<<<<<<
__Pyx_XDECREF(((PyObject *)__pyx_r));
__pyx_t_1 = __pyx_v_4lxml_9objectify_objectify_parser;
__Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = ((PyObject *)makeElement(__pyx_v_tag, ((struct LxmlDocument *)Py_None), __pyx_t_1, __pyx_v_text, Py_None, __pyx_v_attrib, __pyx_v_nsmap)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1784, __pyx_L1_error)
+ __pyx_t_2 = ((PyObject *)makeElement(__pyx_v_tag, ((struct LxmlDocument *)Py_None), __pyx_t_1, __pyx_v_text, Py_None, __pyx_v_attrib, __pyx_v_nsmap)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1859, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = ((struct LxmlElement *)__pyx_t_2);
__pyx_t_2 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1783
+ /* "lxml/objectify.pyx":1858
* return parser
*
* cdef _Element _makeElement(tag, text, attrib, nsmap): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1794
+/* "lxml/objectify.pyx":1869
* SubElement = etree.SubElement
*
* def fromstring(xml, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
if (value) { values[index] = value; kw_args--; }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstring") < 0)) __PYX_ERR(0, 1794, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstring") < 0)) __PYX_ERR(0, 1869, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("fromstring", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1794, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("fromstring", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1869, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.fromstring", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_RefNannySetupContext("fromstring", 0);
__Pyx_INCREF(__pyx_v_parser);
- /* "lxml/objectify.pyx":1806
+ /* "lxml/objectify.pyx":1881
* (DTD, XInclude, ...).
* """
* if parser is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1807
+ /* "lxml/objectify.pyx":1882
* """
* if parser is None:
* parser = objectify_parser # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
__Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
- /* "lxml/objectify.pyx":1806
+ /* "lxml/objectify.pyx":1881
* (DTD, XInclude, ...).
* """
* if parser is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1808
+ /* "lxml/objectify.pyx":1883
* if parser is None:
* parser = objectify_parser
* return _fromstring(xml, parser, base_url=base_url) # <<<<<<<<<<<<<<
* def XML(xml, parser=None, *, base_url=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1808, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_xml);
__Pyx_GIVEREF(__pyx_v_xml);
__Pyx_INCREF(__pyx_v_parser);
__Pyx_GIVEREF(__pyx_v_parser);
PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_parser);
- __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1808, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1808, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1808, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1883, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_5 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1794
+ /* "lxml/objectify.pyx":1869
* SubElement = etree.SubElement
*
* def fromstring(xml, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1810
+/* "lxml/objectify.pyx":1885
* return _fromstring(xml, parser, base_url=base_url)
*
* def XML(xml, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
if (value) { values[index] = value; kw_args--; }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "XML") < 0)) __PYX_ERR(0, 1810, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "XML") < 0)) __PYX_ERR(0, 1885, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("XML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1810, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("XML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1885, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.XML", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_RefNannySetupContext("XML", 0);
__Pyx_INCREF(__pyx_v_parser);
- /* "lxml/objectify.pyx":1822
+ /* "lxml/objectify.pyx":1897
* (DTD, XInclude, ...).
* """
* if parser is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1823
+ /* "lxml/objectify.pyx":1898
* """
* if parser is None:
* parser = objectify_parser # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
__Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
- /* "lxml/objectify.pyx":1822
+ /* "lxml/objectify.pyx":1897
* (DTD, XInclude, ...).
* """
* if parser is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1824
+ /* "lxml/objectify.pyx":1899
* if parser is None:
* parser = objectify_parser
* return _fromstring(xml, parser, base_url=base_url) # <<<<<<<<<<<<<<
* cdef object _parse
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_xml);
__Pyx_GIVEREF(__pyx_v_xml);
__Pyx_INCREF(__pyx_v_parser);
__Pyx_GIVEREF(__pyx_v_parser);
PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_parser);
- __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1824, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1899, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_5 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1810
+ /* "lxml/objectify.pyx":1885
* return _fromstring(xml, parser, base_url=base_url)
*
* def XML(xml, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1829
+/* "lxml/objectify.pyx":1904
* _parse = etree.parse
*
* def parse(f, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
if (value) { values[index] = value; kw_args--; }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "parse") < 0)) __PYX_ERR(0, 1829, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "parse") < 0)) __PYX_ERR(0, 1904, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1829, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1904, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.objectify.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_RefNannySetupContext("parse", 0);
__Pyx_INCREF(__pyx_v_parser);
- /* "lxml/objectify.pyx":1840
+ /* "lxml/objectify.pyx":1915
* up external entities (DTD, XInclude, ...) with relative paths.
* """
* if parser is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1841
+ /* "lxml/objectify.pyx":1916
* """
* if parser is None:
* parser = objectify_parser # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
__Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
- /* "lxml/objectify.pyx":1840
+ /* "lxml/objectify.pyx":1915
* up external entities (DTD, XInclude, ...) with relative paths.
* """
* if parser is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1842
+ /* "lxml/objectify.pyx":1917
* if parser is None:
* parser = objectify_parser
* return _parse(f, parser, base_url=base_url) # <<<<<<<<<<<<<<
* cdef dict _DEFAULT_NSMAP = {
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1842, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1917, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_f);
__Pyx_GIVEREF(__pyx_v_f);
__Pyx_INCREF(__pyx_v_parser);
__Pyx_GIVEREF(__pyx_v_parser);
PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_parser);
- __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1842, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1917, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1842, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__parse, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1842, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1917, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__parse, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1917, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_5 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1829
+ /* "lxml/objectify.pyx":1904
* _parse = etree.parse
*
* def parse(f, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1852
+/* "lxml/objectify.pyx":1927
* E = ElementMaker()
*
* def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes): # <<<<<<<<<<<<<<
if (value) { values[index] = value; kw_args--; }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "Element") < 0)) __PYX_ERR(0, 1852, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "Element") < 0)) __PYX_ERR(0, 1927, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("Element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1852, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("Element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1927, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v__attributes); __pyx_v__attributes = 0;
__Pyx_AddTraceback("lxml.objectify.Element", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_INCREF(__pyx_v__pytype);
__Pyx_INCREF(__pyx_v__attributes);
- /* "lxml/objectify.pyx":1860
+ /* "lxml/objectify.pyx":1935
* NOTE: requires parser based element class lookup activated in lxml.etree!
* """
* if attrib is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1861
+ /* "lxml/objectify.pyx":1936
* """
* if attrib is not None:
* if _attributes: # <<<<<<<<<<<<<<
* attrib = dict(attrib)
* attrib.update(_attributes)
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1861, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1936, __pyx_L1_error)
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1862
+ /* "lxml/objectify.pyx":1937
* if attrib is not None:
* if _attributes:
* attrib = dict(attrib) # <<<<<<<<<<<<<<
* attrib.update(_attributes)
* _attributes = attrib
*/
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_attrib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1862, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_attrib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1937, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_attrib, __pyx_t_3);
__pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1863
+ /* "lxml/objectify.pyx":1938
* if _attributes:
* attrib = dict(attrib)
* attrib.update(_attributes) # <<<<<<<<<<<<<<
* _attributes = attrib
* if _pytype is None:
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1863, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1938, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
}
__pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v__attributes) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v__attributes);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1863, __pyx_L1_error)
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1938, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1861
+ /* "lxml/objectify.pyx":1936
* """
* if attrib is not None:
* if _attributes: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1864
+ /* "lxml/objectify.pyx":1939
* attrib = dict(attrib)
* attrib.update(_attributes)
* _attributes = attrib # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_attrib);
__Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_attrib);
- /* "lxml/objectify.pyx":1860
+ /* "lxml/objectify.pyx":1935
* NOTE: requires parser based element class lookup activated in lxml.etree!
* """
* if attrib is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1865
+ /* "lxml/objectify.pyx":1940
* attrib.update(_attributes)
* _attributes = attrib
* if _pytype is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1866
+ /* "lxml/objectify.pyx":1941
* _attributes = attrib
* if _pytype is None:
* _pytype = TREE_PYTYPE_NAME # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
__Pyx_DECREF_SET(__pyx_v__pytype, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
- /* "lxml/objectify.pyx":1865
+ /* "lxml/objectify.pyx":1940
* attrib.update(_attributes)
* _attributes = attrib
* if _pytype is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1867
+ /* "lxml/objectify.pyx":1942
* if _pytype is None:
* _pytype = TREE_PYTYPE_NAME
* if nsmap is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1868
+ /* "lxml/objectify.pyx":1943
* _pytype = TREE_PYTYPE_NAME
* if nsmap is None:
* nsmap = _DEFAULT_NSMAP # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
__Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
- /* "lxml/objectify.pyx":1867
+ /* "lxml/objectify.pyx":1942
* if _pytype is None:
* _pytype = TREE_PYTYPE_NAME
* if nsmap is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1869
+ /* "lxml/objectify.pyx":1944
* if nsmap is None:
* nsmap = _DEFAULT_NSMAP
* _attributes[PYTYPE_ATTRIBUTE] = _pytype # <<<<<<<<<<<<<<
* return _makeElement(_tag, None, _attributes, nsmap)
*
*/
- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1869, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1944, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_3, __pyx_v__pytype) < 0)) __PYX_ERR(0, 1869, __pyx_L1_error)
+ if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_3, __pyx_v__pytype) < 0)) __PYX_ERR(0, 1944, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "lxml/objectify.pyx":1870
+ /* "lxml/objectify.pyx":1945
* nsmap = _DEFAULT_NSMAP
* _attributes[PYTYPE_ATTRIBUTE] = _pytype
* return _makeElement(_tag, None, _attributes, nsmap) # <<<<<<<<<<<<<<
* def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_v__tag, Py_None, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1870, __pyx_L1_error)
+ __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_v__tag, Py_None, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1945, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1852
+ /* "lxml/objectify.pyx":1927
* E = ElementMaker()
*
* def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes): # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "lxml/objectify.pyx":1872
+/* "lxml/objectify.pyx":1947
* return _makeElement(_tag, None, _attributes, nsmap)
*
* def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None, # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "DataElement") < 0)) __PYX_ERR(0, 1872, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "DataElement") < 0)) __PYX_ERR(0, 1947, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("DataElement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1872, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("DataElement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1947, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v__attributes); __pyx_v__attributes = 0;
__Pyx_AddTraceback("lxml.objectify.DataElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_INCREF(__pyx_v__xsi);
__Pyx_INCREF(__pyx_v__attributes);
- /* "lxml/objectify.pyx":1887
+ /* "lxml/objectify.pyx":1962
* in attrib and/or keyword arguments.
* """
* if nsmap is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1888
+ /* "lxml/objectify.pyx":1963
* """
* if nsmap is None:
* nsmap = _DEFAULT_NSMAP # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
__Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
- /* "lxml/objectify.pyx":1887
+ /* "lxml/objectify.pyx":1962
* in attrib and/or keyword arguments.
* """
* if nsmap is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1889
+ /* "lxml/objectify.pyx":1964
* if nsmap is None:
* nsmap = _DEFAULT_NSMAP
* if attrib is not None and attrib: # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_t_3;
goto __pyx_L5_bool_binop_done;
}
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_attrib); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1889, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_attrib); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1964, __pyx_L1_error)
__pyx_t_2 = __pyx_t_3;
__pyx_L5_bool_binop_done:;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1890
+ /* "lxml/objectify.pyx":1965
* nsmap = _DEFAULT_NSMAP
* if attrib is not None and attrib:
* if _attributes: # <<<<<<<<<<<<<<
* attrib = dict(attrib)
* attrib.update(_attributes)
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1890, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1965, __pyx_L1_error)
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1891
+ /* "lxml/objectify.pyx":1966
* if attrib is not None and attrib:
* if _attributes:
* attrib = dict(attrib) # <<<<<<<<<<<<<<
* attrib.update(_attributes)
* _attributes = attrib
*/
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1891, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1966, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_attrib, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1892
+ /* "lxml/objectify.pyx":1967
* if _attributes:
* attrib = dict(attrib)
* attrib.update(_attributes) # <<<<<<<<<<<<<<
* _attributes = attrib
* if isinstance(_value, ObjectifiedElement):
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1892, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1967, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
}
__pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v__attributes) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v__attributes);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1892, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1967, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1890
+ /* "lxml/objectify.pyx":1965
* nsmap = _DEFAULT_NSMAP
* if attrib is not None and attrib:
* if _attributes: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1893
+ /* "lxml/objectify.pyx":1968
* attrib = dict(attrib)
* attrib.update(_attributes)
* _attributes = attrib # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_attrib);
__Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_attrib);
- /* "lxml/objectify.pyx":1889
+ /* "lxml/objectify.pyx":1964
* if nsmap is None:
* nsmap = _DEFAULT_NSMAP
* if attrib is not None and attrib: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1894
+ /* "lxml/objectify.pyx":1969
* attrib.update(_attributes)
* _attributes = attrib
* if isinstance(_value, ObjectifiedElement): # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1895
+ /* "lxml/objectify.pyx":1970
* _attributes = attrib
* if isinstance(_value, ObjectifiedElement):
* if _pytype is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1896
+ /* "lxml/objectify.pyx":1971
* if isinstance(_value, ObjectifiedElement):
* if _pytype is None:
* if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP: # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_t_1;
goto __pyx_L11_bool_binop_done;
}
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1896, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1971, __pyx_L1_error)
__pyx_t_3 = ((!__pyx_t_1) != 0);
if (__pyx_t_3) {
} else {
__pyx_L11_bool_binop_done:;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1898
+ /* "lxml/objectify.pyx":1973
* if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP:
* # special case: no change!
* return _value.__copy__() # <<<<<<<<<<<<<<
* # reuse existing nsmap unless redefined in nsmap parameter
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1898, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1973, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
}
__pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1898, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1973, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1896
+ /* "lxml/objectify.pyx":1971
* if isinstance(_value, ObjectifiedElement):
* if _pytype is None:
* if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1895
+ /* "lxml/objectify.pyx":1970
* _attributes = attrib
* if isinstance(_value, ObjectifiedElement):
* if _pytype is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1894
+ /* "lxml/objectify.pyx":1969
* attrib.update(_attributes)
* _attributes = attrib
* if isinstance(_value, ObjectifiedElement): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1899
+ /* "lxml/objectify.pyx":1974
* # special case: no change!
* return _value.__copy__()
* if isinstance(_value, ObjectifiedDataElement): # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1901
+ /* "lxml/objectify.pyx":1976
* if isinstance(_value, ObjectifiedDataElement):
* # reuse existing nsmap unless redefined in nsmap parameter
* temp = _value.nsmap # <<<<<<<<<<<<<<
* if temp is not None and temp:
* temp = dict(temp)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_nsmap); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1901, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_nsmap); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1976, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_temp = __pyx_t_4;
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1902
+ /* "lxml/objectify.pyx":1977
* # reuse existing nsmap unless redefined in nsmap parameter
* temp = _value.nsmap
* if temp is not None and temp: # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_t_3;
goto __pyx_L16_bool_binop_done;
}
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1902, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1977, __pyx_L1_error)
__pyx_t_1 = __pyx_t_3;
__pyx_L16_bool_binop_done:;
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1903
+ /* "lxml/objectify.pyx":1978
* temp = _value.nsmap
* if temp is not None and temp:
* temp = dict(temp) # <<<<<<<<<<<<<<
* temp.update(nsmap)
* nsmap = temp
*/
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_temp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1903, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_temp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1978, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1904
+ /* "lxml/objectify.pyx":1979
* if temp is not None and temp:
* temp = dict(temp)
* temp.update(nsmap) # <<<<<<<<<<<<<<
* nsmap = temp
* # reuse existing attributes unless redefined in attrib/_attributes
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1904, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1979, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
}
__pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_nsmap) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_nsmap);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1904, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1979, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1905
+ /* "lxml/objectify.pyx":1980
* temp = dict(temp)
* temp.update(nsmap)
* nsmap = temp # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_temp);
__Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_temp);
- /* "lxml/objectify.pyx":1902
+ /* "lxml/objectify.pyx":1977
* # reuse existing nsmap unless redefined in nsmap parameter
* temp = _value.nsmap
* if temp is not None and temp: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1907
+ /* "lxml/objectify.pyx":1982
* nsmap = temp
* # reuse existing attributes unless redefined in attrib/_attributes
* temp = _value.attrib # <<<<<<<<<<<<<<
* if temp is not None and temp:
* temp = dict(temp)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1907, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1982, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1908
+ /* "lxml/objectify.pyx":1983
* # reuse existing attributes unless redefined in attrib/_attributes
* temp = _value.attrib
* if temp is not None and temp: # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_t_2;
goto __pyx_L19_bool_binop_done;
}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1908, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1983, __pyx_L1_error)
__pyx_t_1 = __pyx_t_2;
__pyx_L19_bool_binop_done:;
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1909
+ /* "lxml/objectify.pyx":1984
* temp = _value.attrib
* if temp is not None and temp:
* temp = dict(temp) # <<<<<<<<<<<<<<
* temp.update(_attributes)
* _attributes = temp
*/
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_temp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1909, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_temp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1984, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1910
+ /* "lxml/objectify.pyx":1985
* if temp is not None and temp:
* temp = dict(temp)
* temp.update(_attributes) # <<<<<<<<<<<<<<
* _attributes = temp
* # reuse existing xsi:type or py:pytype attributes, unless provided as
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1910, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1985, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
}
__pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v__attributes) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v__attributes);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1910, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1985, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1911
+ /* "lxml/objectify.pyx":1986
* temp = dict(temp)
* temp.update(_attributes)
* _attributes = temp # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v_temp);
__Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_temp);
- /* "lxml/objectify.pyx":1908
+ /* "lxml/objectify.pyx":1983
* # reuse existing attributes unless redefined in attrib/_attributes
* temp = _value.attrib
* if temp is not None and temp: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1914
+ /* "lxml/objectify.pyx":1989
* # reuse existing xsi:type or py:pytype attributes, unless provided as
* # arguments
* if _xsi is None and _pytype is None: # <<<<<<<<<<<<<<
__pyx_L22_bool_binop_done:;
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1915
+ /* "lxml/objectify.pyx":1990
* # arguments
* if _xsi is None and _pytype is None:
* _xsi = _attributes.get(XML_SCHEMA_INSTANCE_TYPE_ATTR) # <<<<<<<<<<<<<<
* _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
*
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1915, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1990, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
}
__pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1915, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1990, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF_SET(__pyx_v__xsi, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1916
+ /* "lxml/objectify.pyx":1991
* if _xsi is None and _pytype is None:
* _xsi = _attributes.get(XML_SCHEMA_INSTANCE_TYPE_ATTR)
* _pytype = _attributes.get(PYTYPE_ATTRIBUTE) # <<<<<<<<<<<<<<
*
* if _xsi is not None:
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1916, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1991, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1916, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1991, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1916, __pyx_L1_error)
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1991, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1914
+ /* "lxml/objectify.pyx":1989
* # reuse existing xsi:type or py:pytype attributes, unless provided as
* # arguments
* if _xsi is None and _pytype is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1899
+ /* "lxml/objectify.pyx":1974
* # special case: no change!
* return _value.__copy__()
* if isinstance(_value, ObjectifiedDataElement): # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1918
+ /* "lxml/objectify.pyx":1993
* _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
*
* if _xsi is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1919
+ /* "lxml/objectify.pyx":1994
*
* if _xsi is not None:
* if u':' in _xsi: # <<<<<<<<<<<<<<
* prefix, name = _xsi.split(u':', 1)
* ns = nsmap.get(prefix)
*/
- __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v__xsi, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1919, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v__xsi, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1994, __pyx_L1_error)
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1920
+ /* "lxml/objectify.pyx":1995
* if _xsi is not None:
* if u':' in _xsi:
* prefix, name = _xsi.split(u':', 1) # <<<<<<<<<<<<<<
* ns = nsmap.get(prefix)
* if ns != XML_SCHEMA_NS:
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__xsi, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1920, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__xsi, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1995, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1920, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1995, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1920, __pyx_L1_error)
+ __PYX_ERR(0, 1995, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_6);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1920, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1995, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1920, __pyx_L1_error)
+ __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1995, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1920, __pyx_L1_error)
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1995, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L26_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1920, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1995, __pyx_L1_error)
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L27_unpacking_done;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1920, __pyx_L1_error)
+ __PYX_ERR(0, 1995, __pyx_L1_error)
__pyx_L27_unpacking_done:;
}
__pyx_v_prefix = __pyx_t_4;
__pyx_v_name = __pyx_t_6;
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1921
+ /* "lxml/objectify.pyx":1996
* if u':' in _xsi:
* prefix, name = _xsi.split(u':', 1)
* ns = nsmap.get(prefix) # <<<<<<<<<<<<<<
* if ns != XML_SCHEMA_NS:
* raise ValueError, u"XSD types require the XSD namespace"
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1921, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1996, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
}
__pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_v_prefix) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_prefix);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1921, __pyx_L1_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1996, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_ns = __pyx_t_5;
__pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1922
+ /* "lxml/objectify.pyx":1997
* prefix, name = _xsi.split(u':', 1)
* ns = nsmap.get(prefix)
* if ns != XML_SCHEMA_NS: # <<<<<<<<<<<<<<
* raise ValueError, u"XSD types require the XSD namespace"
* elif nsmap is _DEFAULT_NSMAP:
*/
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_ns, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1922, __pyx_L1_error)
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1922, __pyx_L1_error)
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_ns, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1997, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1997, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(__pyx_t_1)) {
- /* "lxml/objectify.pyx":1923
+ /* "lxml/objectify.pyx":1998
* ns = nsmap.get(prefix)
* if ns != XML_SCHEMA_NS:
* raise ValueError, u"XSD types require the XSD namespace" # <<<<<<<<<<<<<<
* name = _xsi
*/
__Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_XSD_types_require_the_XSD_namesp, 0, 0);
- __PYX_ERR(0, 1923, __pyx_L1_error)
+ __PYX_ERR(0, 1998, __pyx_L1_error)
- /* "lxml/objectify.pyx":1922
+ /* "lxml/objectify.pyx":1997
* prefix, name = _xsi.split(u':', 1)
* ns = nsmap.get(prefix)
* if ns != XML_SCHEMA_NS: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1919
+ /* "lxml/objectify.pyx":1994
*
* if _xsi is not None:
* if u':' in _xsi: # <<<<<<<<<<<<<<
goto __pyx_L25;
}
- /* "lxml/objectify.pyx":1924
+ /* "lxml/objectify.pyx":1999
* if ns != XML_SCHEMA_NS:
* raise ValueError, u"XSD types require the XSD namespace"
* elif nsmap is _DEFAULT_NSMAP: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1925
+ /* "lxml/objectify.pyx":2000
* raise ValueError, u"XSD types require the XSD namespace"
* elif nsmap is _DEFAULT_NSMAP:
* name = _xsi # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v__xsi);
__pyx_v_name = __pyx_v__xsi;
- /* "lxml/objectify.pyx":1926
+ /* "lxml/objectify.pyx":2001
* elif nsmap is _DEFAULT_NSMAP:
* name = _xsi
* _xsi = u'xsd:' + _xsi # <<<<<<<<<<<<<<
* else:
* name = _xsi
*/
- __pyx_t_5 = PyNumber_Add(__pyx_kp_u_xsd, __pyx_v__xsi); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1926, __pyx_L1_error)
+ __pyx_t_5 = PyNumber_Add(__pyx_kp_u_xsd, __pyx_v__xsi); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2001, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF_SET(__pyx_v__xsi, __pyx_t_5);
__pyx_t_5 = 0;
- /* "lxml/objectify.pyx":1924
+ /* "lxml/objectify.pyx":1999
* if ns != XML_SCHEMA_NS:
* raise ValueError, u"XSD types require the XSD namespace"
* elif nsmap is _DEFAULT_NSMAP: # <<<<<<<<<<<<<<
goto __pyx_L25;
}
- /* "lxml/objectify.pyx":1928
+ /* "lxml/objectify.pyx":2003
* _xsi = u'xsd:' + _xsi
* else:
* name = _xsi # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v__xsi);
__pyx_v_name = __pyx_v__xsi;
- /* "lxml/objectify.pyx":1929
+ /* "lxml/objectify.pyx":2004
* else:
* name = _xsi
* for prefix, ns in nsmap.items(): # <<<<<<<<<<<<<<
* if ns == XML_SCHEMA_NS:
* if prefix is not None and prefix:
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2004, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
}
__pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2004, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
__pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0;
__pyx_t_10 = NULL;
} else {
- __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2004, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2004, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
for (;;) {
if (likely(PyList_CheckExact(__pyx_t_6))) {
if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2004, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2004, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
} else {
if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2004, __pyx_L1_error)
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2004, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
}
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
- else __PYX_ERR(0, 1929, __pyx_L1_error)
+ else __PYX_ERR(0, 2004, __pyx_L1_error)
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 1929, __pyx_L1_error)
+ __PYX_ERR(0, 2004, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_7);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2004, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2004, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1929, __pyx_L1_error)
+ __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2004, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_11)->tp_iternext;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L31_unpacking_failed;
__Pyx_GOTREF(__pyx_t_7);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_11), 2) < 0) __PYX_ERR(0, 1929, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_11), 2) < 0) __PYX_ERR(0, 2004, __pyx_L1_error)
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L32_unpacking_done;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 1929, __pyx_L1_error)
+ __PYX_ERR(0, 2004, __pyx_L1_error)
__pyx_L32_unpacking_done:;
}
__Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_7);
__pyx_t_7 = 0;
- /* "lxml/objectify.pyx":1930
+ /* "lxml/objectify.pyx":2005
* name = _xsi
* for prefix, ns in nsmap.items():
* if ns == XML_SCHEMA_NS: # <<<<<<<<<<<<<<
* if prefix is not None and prefix:
* _xsi = prefix + u':' + _xsi
*/
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_ns, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1930, __pyx_L1_error)
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1930, __pyx_L1_error)
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_ns, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2005, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2005, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1931
+ /* "lxml/objectify.pyx":2006
* for prefix, ns in nsmap.items():
* if ns == XML_SCHEMA_NS:
* if prefix is not None and prefix: # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_t_3;
goto __pyx_L35_bool_binop_done;
}
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1931, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2006, __pyx_L1_error)
__pyx_t_2 = __pyx_t_3;
__pyx_L35_bool_binop_done:;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1932
+ /* "lxml/objectify.pyx":2007
* if ns == XML_SCHEMA_NS:
* if prefix is not None and prefix:
* _xsi = prefix + u':' + _xsi # <<<<<<<<<<<<<<
* break
* else:
*/
- __pyx_t_5 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_u__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1932, __pyx_L1_error)
+ __pyx_t_5 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_u__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2007, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_v__xsi); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1932, __pyx_L1_error)
+ __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_v__xsi); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2007, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF_SET(__pyx_v__xsi, __pyx_t_7);
__pyx_t_7 = 0;
- /* "lxml/objectify.pyx":1931
+ /* "lxml/objectify.pyx":2006
* for prefix, ns in nsmap.items():
* if ns == XML_SCHEMA_NS:
* if prefix is not None and prefix: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1933
+ /* "lxml/objectify.pyx":2008
* if prefix is not None and prefix:
* _xsi = prefix + u':' + _xsi
* break # <<<<<<<<<<<<<<
*/
goto __pyx_L30_break;
- /* "lxml/objectify.pyx":1930
+ /* "lxml/objectify.pyx":2005
* name = _xsi
* for prefix, ns in nsmap.items():
* if ns == XML_SCHEMA_NS: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1929
+ /* "lxml/objectify.pyx":2004
* else:
* name = _xsi
* for prefix, ns in nsmap.items(): # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "lxml/objectify.pyx":1935
+ /* "lxml/objectify.pyx":2010
* break
* else:
* raise ValueError, u"XSD types require the XSD namespace" # <<<<<<<<<<<<<<
* if _pytype is None:
*/
__Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_XSD_types_require_the_XSD_namesp, 0, 0);
- __PYX_ERR(0, 1935, __pyx_L1_error)
+ __PYX_ERR(0, 2010, __pyx_L1_error)
}
- /* "lxml/objectify.pyx":1929
+ /* "lxml/objectify.pyx":2004
* else:
* name = _xsi
* for prefix, ns in nsmap.items(): # <<<<<<<<<<<<<<
}
__pyx_L25:;
- /* "lxml/objectify.pyx":1936
+ /* "lxml/objectify.pyx":2011
* else:
* raise ValueError, u"XSD types require the XSD namespace"
* _attributes[XML_SCHEMA_INSTANCE_TYPE_ATTR] = _xsi # <<<<<<<<<<<<<<
* if _pytype is None:
* # allow using unregistered or even wrong xsi:type names
*/
- if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR, __pyx_v__xsi) < 0)) __PYX_ERR(0, 1936, __pyx_L1_error)
+ if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR, __pyx_v__xsi) < 0)) __PYX_ERR(0, 2011, __pyx_L1_error)
- /* "lxml/objectify.pyx":1937
+ /* "lxml/objectify.pyx":2012
* raise ValueError, u"XSD types require the XSD namespace"
* _attributes[XML_SCHEMA_INSTANCE_TYPE_ATTR] = _xsi
* if _pytype is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1939
+ /* "lxml/objectify.pyx":2014
* if _pytype is None:
* # allow using unregistered or even wrong xsi:type names
* py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1939, __pyx_L1_error)
+ __PYX_ERR(0, 2014, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v__xsi, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1939, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v__xsi, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2014, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __pyx_t_6;
__Pyx_INCREF(__pyx_t_7);
__pyx_v_py_type = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_7);
__pyx_t_7 = 0;
- /* "lxml/objectify.pyx":1940
+ /* "lxml/objectify.pyx":2015
* # allow using unregistered or even wrong xsi:type names
* py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)
* if py_type is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1941
+ /* "lxml/objectify.pyx":2016
* py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)
* if py_type is None:
* py_type = <PyType>_SCHEMA_TYPE_DICT.get(name) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1941, __pyx_L1_error)
+ __PYX_ERR(0, 2016, __pyx_L1_error)
}
- __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_name, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1941, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_name, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2016, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_6 = __pyx_t_7;
__Pyx_INCREF(__pyx_t_6);
__Pyx_DECREF_SET(__pyx_v_py_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1940
+ /* "lxml/objectify.pyx":2015
* # allow using unregistered or even wrong xsi:type names
* py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)
* if py_type is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1942
+ /* "lxml/objectify.pyx":2017
* if py_type is None:
* py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
* if py_type is not None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- /* "lxml/objectify.pyx":1943
+ /* "lxml/objectify.pyx":2018
* py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
* if py_type is not None:
* _pytype = py_type.name # <<<<<<<<<<<<<<
__Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_6);
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1942
+ /* "lxml/objectify.pyx":2017
* if py_type is None:
* py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
* if py_type is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1937
+ /* "lxml/objectify.pyx":2012
* raise ValueError, u"XSD types require the XSD namespace"
* _attributes[XML_SCHEMA_INSTANCE_TYPE_ATTR] = _xsi
* if _pytype is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1918
+ /* "lxml/objectify.pyx":1993
* _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
*
* if _xsi is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1945
+ /* "lxml/objectify.pyx":2020
* _pytype = py_type.name
*
* if _pytype is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1946
+ /* "lxml/objectify.pyx":2021
*
* if _pytype is None:
* _pytype = _pytypename(_value) # <<<<<<<<<<<<<<
*
* if _value is None and _pytype != u"str":
*/
- __pyx_t_6 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v__value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1946, __pyx_L1_error)
+ __pyx_t_6 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v__value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2021, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_6);
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1945
+ /* "lxml/objectify.pyx":2020
* _pytype = py_type.name
*
* if _pytype is None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1948
+ /* "lxml/objectify.pyx":2023
* _pytype = _pytypename(_value)
*
* if _value is None and _pytype != u"str": # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_t_1;
goto __pyx_L43_bool_binop_done;
}
- __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_str, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1948, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_str, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 2023, __pyx_L1_error)
__pyx_t_2 = __pyx_t_1;
__pyx_L43_bool_binop_done:;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1949
+ /* "lxml/objectify.pyx":2024
*
* if _value is None and _pytype != u"str":
* _pytype = _pytype or u"NoneType" # <<<<<<<<<<<<<<
* strval = None
* elif python._isString(_value):
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__pytype); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1949, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__pytype); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2024, __pyx_L1_error)
if (!__pyx_t_2) {
} else {
__Pyx_INCREF(__pyx_v__pytype);
__Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_6);
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1950
+ /* "lxml/objectify.pyx":2025
* if _value is None and _pytype != u"str":
* _pytype = _pytype or u"NoneType"
* strval = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_v_strval = Py_None;
- /* "lxml/objectify.pyx":1948
+ /* "lxml/objectify.pyx":2023
* _pytype = _pytypename(_value)
*
* if _value is None and _pytype != u"str": # <<<<<<<<<<<<<<
goto __pyx_L42;
}
- /* "lxml/objectify.pyx":1951
+ /* "lxml/objectify.pyx":2026
* _pytype = _pytype or u"NoneType"
* strval = None
* elif python._isString(_value): # <<<<<<<<<<<<<<
__pyx_t_2 = (_isString(__pyx_v__value) != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1952
+ /* "lxml/objectify.pyx":2027
* strval = None
* elif python._isString(_value):
* strval = _value # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_v__value);
__pyx_v_strval = __pyx_v__value;
- /* "lxml/objectify.pyx":1951
+ /* "lxml/objectify.pyx":2026
* _pytype = _pytype or u"NoneType"
* strval = None
* elif python._isString(_value): # <<<<<<<<<<<<<<
goto __pyx_L42;
}
- /* "lxml/objectify.pyx":1953
+ /* "lxml/objectify.pyx":2028
* elif python._isString(_value):
* strval = _value
* elif isinstance(_value, bool): # <<<<<<<<<<<<<<
*/
__pyx_t_6 = ((PyObject*)&PyBool_Type);
__Pyx_INCREF(__pyx_t_6);
- __pyx_t_2 = PyObject_IsInstance(__pyx_v__value, __pyx_t_6); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1953, __pyx_L1_error)
+ __pyx_t_2 = PyObject_IsInstance(__pyx_v__value, __pyx_t_6); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2028, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1954
+ /* "lxml/objectify.pyx":2029
* strval = _value
* elif isinstance(_value, bool):
* if _value: # <<<<<<<<<<<<<<
* strval = u"true"
* else:
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__value); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1954, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__value); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 2029, __pyx_L1_error)
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1955
+ /* "lxml/objectify.pyx":2030
* elif isinstance(_value, bool):
* if _value:
* strval = u"true" # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_n_u_true);
__pyx_v_strval = __pyx_n_u_true;
- /* "lxml/objectify.pyx":1954
+ /* "lxml/objectify.pyx":2029
* strval = _value
* elif isinstance(_value, bool):
* if _value: # <<<<<<<<<<<<<<
goto __pyx_L47;
}
- /* "lxml/objectify.pyx":1957
+ /* "lxml/objectify.pyx":2032
* strval = u"true"
* else:
* strval = u"false" # <<<<<<<<<<<<<<
}
__pyx_L47:;
- /* "lxml/objectify.pyx":1953
+ /* "lxml/objectify.pyx":2028
* elif python._isString(_value):
* strval = _value
* elif isinstance(_value, bool): # <<<<<<<<<<<<<<
goto __pyx_L42;
}
- /* "lxml/objectify.pyx":1959
+ /* "lxml/objectify.pyx":2034
* strval = u"false"
* else:
* py_type = <PyType>_PYTYPE_DICT.get(_pytype) # <<<<<<<<<<<<<<
/*else*/ {
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1959, __pyx_L1_error)
+ __PYX_ERR(0, 2034, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1959, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2034, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __pyx_t_6;
__Pyx_INCREF(__pyx_t_7);
__Pyx_XDECREF_SET(__pyx_v_py_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_7));
__pyx_t_7 = 0;
- /* "lxml/objectify.pyx":1960
+ /* "lxml/objectify.pyx":2035
* else:
* py_type = <PyType>_PYTYPE_DICT.get(_pytype)
* stringify = unicode if py_type is None else py_type.stringify # <<<<<<<<<<<<<<
__pyx_v_stringify = __pyx_t_7;
__pyx_t_7 = 0;
- /* "lxml/objectify.pyx":1961
+ /* "lxml/objectify.pyx":2036
* py_type = <PyType>_PYTYPE_DICT.get(_pytype)
* stringify = unicode if py_type is None else py_type.stringify
* strval = stringify(_value) # <<<<<<<<<<<<<<
}
__pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v__value) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v__value);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1961, __pyx_L1_error)
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2036, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_strval = __pyx_t_7;
}
__pyx_L42:;
- /* "lxml/objectify.pyx":1963
+ /* "lxml/objectify.pyx":2038
* strval = stringify(_value)
*
* if _pytype is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1964
+ /* "lxml/objectify.pyx":2039
*
* if _pytype is not None:
* if _pytype == u"NoneType" or _pytype == u"none": # <<<<<<<<<<<<<<
* strval = None
* _attributes[XML_SCHEMA_INSTANCE_NIL_ATTR] = u"true"
*/
- __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_NoneType, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1964, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_NoneType, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 2039, __pyx_L1_error)
if (!__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L50_bool_binop_done;
}
- __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_none, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1964, __pyx_L1_error)
+ __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_none, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 2039, __pyx_L1_error)
__pyx_t_2 = __pyx_t_1;
__pyx_L50_bool_binop_done:;
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1965
+ /* "lxml/objectify.pyx":2040
* if _pytype is not None:
* if _pytype == u"NoneType" or _pytype == u"none":
* strval = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__Pyx_DECREF_SET(__pyx_v_strval, Py_None);
- /* "lxml/objectify.pyx":1966
+ /* "lxml/objectify.pyx":2041
* if _pytype == u"NoneType" or _pytype == u"none":
* strval = None
* _attributes[XML_SCHEMA_INSTANCE_NIL_ATTR] = u"true" # <<<<<<<<<<<<<<
* else:
* # check if type information from arguments is valid
*/
- if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR, __pyx_n_u_true) < 0)) __PYX_ERR(0, 1966, __pyx_L1_error)
+ if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR, __pyx_n_u_true) < 0)) __PYX_ERR(0, 2041, __pyx_L1_error)
- /* "lxml/objectify.pyx":1964
+ /* "lxml/objectify.pyx":2039
*
* if _pytype is not None:
* if _pytype == u"NoneType" or _pytype == u"none": # <<<<<<<<<<<<<<
goto __pyx_L49;
}
- /* "lxml/objectify.pyx":1969
+ /* "lxml/objectify.pyx":2044
* else:
* # check if type information from arguments is valid
* py_type = <PyType>_PYTYPE_DICT.get(_pytype) # <<<<<<<<<<<<<<
/*else*/ {
if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
- __PYX_ERR(0, 1969, __pyx_L1_error)
+ __PYX_ERR(0, 2044, __pyx_L1_error)
}
- __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1969, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2044, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_6 = __pyx_t_7;
__Pyx_INCREF(__pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_py_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
__pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1970
+ /* "lxml/objectify.pyx":2045
* # check if type information from arguments is valid
* py_type = <PyType>_PYTYPE_DICT.get(_pytype)
* if py_type is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
- /* "lxml/objectify.pyx":1971
+ /* "lxml/objectify.pyx":2046
* py_type = <PyType>_PYTYPE_DICT.get(_pytype)
* if py_type is not None:
* if py_type.type_check is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
- /* "lxml/objectify.pyx":1972
+ /* "lxml/objectify.pyx":2047
* if py_type is not None:
* if py_type.type_check is not None:
* py_type.type_check(strval) # <<<<<<<<<<<<<<
}
__pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_5, __pyx_v_strval) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_strval);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1972, __pyx_L1_error)
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2047, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1971
+ /* "lxml/objectify.pyx":2046
* py_type = <PyType>_PYTYPE_DICT.get(_pytype)
* if py_type is not None:
* if py_type.type_check is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1973
+ /* "lxml/objectify.pyx":2048
* if py_type.type_check is not None:
* py_type.type_check(strval)
* _attributes[PYTYPE_ATTRIBUTE] = _pytype # <<<<<<<<<<<<<<
*
* return _makeElement(u"value", strval, _attributes, nsmap)
*/
- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1973, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2048, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_6, __pyx_v__pytype) < 0)) __PYX_ERR(0, 1973, __pyx_L1_error)
+ if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_6, __pyx_v__pytype) < 0)) __PYX_ERR(0, 2048, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "lxml/objectify.pyx":1970
+ /* "lxml/objectify.pyx":2045
* # check if type information from arguments is valid
* py_type = <PyType>_PYTYPE_DICT.get(_pytype)
* if py_type is not None: # <<<<<<<<<<<<<<
}
__pyx_L49:;
- /* "lxml/objectify.pyx":1963
+ /* "lxml/objectify.pyx":2038
* strval = stringify(_value)
*
* if _pytype is not None: # <<<<<<<<<<<<<<
*/
}
- /* "lxml/objectify.pyx":1975
+ /* "lxml/objectify.pyx":2050
* _attributes[PYTYPE_ATTRIBUTE] = _pytype
*
* return _makeElement(u"value", strval, _attributes, nsmap) # <<<<<<<<<<<<<<
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_n_u_value, __pyx_v_strval, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1975, __pyx_L1_error)
+ __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_n_u_value, __pyx_v_strval, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2050, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_r = __pyx_t_6;
__pyx_t_6 = 0;
goto __pyx_L0;
- /* "lxml/objectify.pyx":1872
+ /* "lxml/objectify.pyx":1947
* return _makeElement(_tag, None, _attributes, nsmap)
*
* def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None, # <<<<<<<<<<<<<<
static PyMethodDef __pyx_methods_4lxml_9objectify_NumberElement[] = {
{"_setValueParser", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_1_setValueParser, METH_O, __pyx_doc_4lxml_9objectify_13NumberElement__setValueParser},
{"__complex__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_9__complex__, METH_NOARGS, 0},
+ {"__radd__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_25__radd__, METH_O, 0},
+ {"__rsub__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_29__rsub__, METH_O, 0},
+ {"__rmul__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_33__rmul__, METH_O, 0},
+ {"__rdiv__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_37__rdiv__, METH_O, 0},
+ {"__rtruediv__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_41__rtruediv__, METH_O, 0},
+ {"__rfloordiv__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_45__rfloordiv__, METH_O, 0},
+ {"__rmod__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_49__rmod__, METH_O, 0},
+ {"__rdivmod__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_53__rdivmod__, METH_O, 0},
+ {"__rpow__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4lxml_9objectify_13NumberElement_57__rpow__, METH_VARARGS|METH_KEYWORDS, 0},
+ {"__rlshift__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_71__rlshift__, METH_O, 0},
+ {"__rrshift__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_75__rrshift__, METH_O, 0},
+ {"__rand__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_79__rand__, METH_O, 0},
+ {"__ror__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_83__ror__, METH_O, 0},
+ {"__rxor__", (PyCFunction)__pyx_pw_4lxml_9objectify_13NumberElement_87__rxor__, METH_O, 0},
{0, 0, 0, 0}
};
static PyNumberMethods __pyx_tp_as_number_NumberElement = {
__pyx_pw_4lxml_9objectify_13NumberElement_23__add__, /*nb_add*/
- __pyx_pw_4lxml_9objectify_13NumberElement_25__sub__, /*nb_subtract*/
- __pyx_pw_4lxml_9objectify_13NumberElement_27__mul__, /*nb_multiply*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_27__sub__, /*nb_subtract*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_31__mul__, /*nb_multiply*/
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
- __pyx_pw_4lxml_9objectify_13NumberElement_29__div__, /*nb_divide*/
- #endif
- __pyx_pw_4lxml_9objectify_13NumberElement_33__mod__, /*nb_remainder*/
- 0, /*nb_divmod*/
- __pyx_pw_4lxml_9objectify_13NumberElement_35__pow__, /*nb_power*/
- __pyx_pw_4lxml_9objectify_13NumberElement_37__neg__, /*nb_negative*/
- __pyx_pw_4lxml_9objectify_13NumberElement_39__pos__, /*nb_positive*/
- __pyx_pw_4lxml_9objectify_13NumberElement_41__abs__, /*nb_absolute*/
- __pyx_pw_4lxml_9objectify_13NumberElement_43__nonzero__, /*nb_nonzero*/
- __pyx_pw_4lxml_9objectify_13NumberElement_45__invert__, /*nb_invert*/
- __pyx_pw_4lxml_9objectify_13NumberElement_47__lshift__, /*nb_lshift*/
- __pyx_pw_4lxml_9objectify_13NumberElement_49__rshift__, /*nb_rshift*/
- __pyx_pw_4lxml_9objectify_13NumberElement_51__and__, /*nb_and*/
- __pyx_pw_4lxml_9objectify_13NumberElement_55__xor__, /*nb_xor*/
- __pyx_pw_4lxml_9objectify_13NumberElement_53__or__, /*nb_or*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_35__div__, /*nb_divide*/
+ #endif
+ __pyx_pw_4lxml_9objectify_13NumberElement_47__mod__, /*nb_remainder*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_51__divmod__, /*nb_divmod*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_55__pow__, /*nb_power*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_59__neg__, /*nb_negative*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_61__pos__, /*nb_positive*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_63__abs__, /*nb_absolute*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_65__bool__, /*nb_nonzero*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_67__invert__, /*nb_invert*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_69__lshift__, /*nb_lshift*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_73__rshift__, /*nb_rshift*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_77__and__, /*nb_and*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_85__xor__, /*nb_xor*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_81__or__, /*nb_or*/
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
0, /*nb_coerce*/
#endif
0, /*nb_inplace_and*/
0, /*nb_inplace_xor*/
0, /*nb_inplace_or*/
- 0, /*nb_floor_divide*/
- __pyx_pw_4lxml_9objectify_13NumberElement_31__truediv__, /*nb_true_divide*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_43__floordiv__, /*nb_floor_divide*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_39__truediv__, /*nb_true_divide*/
0, /*nb_inplace_floor_divide*/
0, /*nb_inplace_true_divide*/
0, /*nb_index*/
0, /*nb_add*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_25__sub__, /*nb_subtract*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_27__sub__, /*nb_subtract*/
#else
0, /*nb_subtract*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_27__mul__, /*nb_multiply*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_31__mul__, /*nb_multiply*/
#else
0, /*nb_multiply*/
#endif
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_29__div__, /*nb_divide*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_35__div__, /*nb_divide*/
#else
0, /*nb_divide*/
#endif
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_33__mod__, /*nb_remainder*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_47__mod__, /*nb_remainder*/
#else
0, /*nb_remainder*/
#endif
+ #if CYTHON_COMPILING_IN_PYPY
+ __pyx_pw_4lxml_9objectify_13NumberElement_51__divmod__, /*nb_divmod*/
+ #else
0, /*nb_divmod*/
+ #endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_35__pow__, /*nb_power*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_55__pow__, /*nb_power*/
#else
0, /*nb_power*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_37__neg__, /*nb_negative*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_59__neg__, /*nb_negative*/
#else
0, /*nb_negative*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_39__pos__, /*nb_positive*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_61__pos__, /*nb_positive*/
#else
0, /*nb_positive*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_41__abs__, /*nb_absolute*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_63__abs__, /*nb_absolute*/
#else
0, /*nb_absolute*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_43__nonzero__, /*nb_nonzero*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_65__bool__, /*nb_nonzero*/
#else
0, /*nb_nonzero*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_45__invert__, /*nb_invert*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_67__invert__, /*nb_invert*/
#else
0, /*nb_invert*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_47__lshift__, /*nb_lshift*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_69__lshift__, /*nb_lshift*/
#else
0, /*nb_lshift*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_49__rshift__, /*nb_rshift*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_73__rshift__, /*nb_rshift*/
#else
0, /*nb_rshift*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_51__and__, /*nb_and*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_77__and__, /*nb_and*/
#else
0, /*nb_and*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_55__xor__, /*nb_xor*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_85__xor__, /*nb_xor*/
#else
0, /*nb_xor*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_53__or__, /*nb_or*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_81__or__, /*nb_or*/
#else
0, /*nb_or*/
#endif
0, /*nb_inplace_and*/
0, /*nb_inplace_xor*/
0, /*nb_inplace_or*/
+ #if CYTHON_COMPILING_IN_PYPY
+ __pyx_pw_4lxml_9objectify_13NumberElement_43__floordiv__, /*nb_floor_divide*/
+ #else
0, /*nb_floor_divide*/
+ #endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_31__truediv__, /*nb_true_divide*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_39__truediv__, /*nb_true_divide*/
#else
0, /*nb_true_divide*/
#endif
0, /*nb_add*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_25__sub__, /*nb_subtract*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_27__sub__, /*nb_subtract*/
#else
0, /*nb_subtract*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_27__mul__, /*nb_multiply*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_31__mul__, /*nb_multiply*/
#else
0, /*nb_multiply*/
#endif
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_29__div__, /*nb_divide*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_35__div__, /*nb_divide*/
#else
0, /*nb_divide*/
#endif
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_33__mod__, /*nb_remainder*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_47__mod__, /*nb_remainder*/
#else
0, /*nb_remainder*/
#endif
+ #if CYTHON_COMPILING_IN_PYPY
+ __pyx_pw_4lxml_9objectify_13NumberElement_51__divmod__, /*nb_divmod*/
+ #else
0, /*nb_divmod*/
+ #endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_35__pow__, /*nb_power*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_55__pow__, /*nb_power*/
#else
0, /*nb_power*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_37__neg__, /*nb_negative*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_59__neg__, /*nb_negative*/
#else
0, /*nb_negative*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_39__pos__, /*nb_positive*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_61__pos__, /*nb_positive*/
#else
0, /*nb_positive*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_41__abs__, /*nb_absolute*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_63__abs__, /*nb_absolute*/
#else
0, /*nb_absolute*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_43__nonzero__, /*nb_nonzero*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_65__bool__, /*nb_nonzero*/
#else
0, /*nb_nonzero*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_45__invert__, /*nb_invert*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_67__invert__, /*nb_invert*/
#else
0, /*nb_invert*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_47__lshift__, /*nb_lshift*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_69__lshift__, /*nb_lshift*/
#else
0, /*nb_lshift*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_49__rshift__, /*nb_rshift*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_73__rshift__, /*nb_rshift*/
#else
0, /*nb_rshift*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_51__and__, /*nb_and*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_77__and__, /*nb_and*/
#else
0, /*nb_and*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_55__xor__, /*nb_xor*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_85__xor__, /*nb_xor*/
#else
0, /*nb_xor*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_53__or__, /*nb_or*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_81__or__, /*nb_or*/
#else
0, /*nb_or*/
#endif
0, /*nb_inplace_and*/
0, /*nb_inplace_xor*/
0, /*nb_inplace_or*/
+ #if CYTHON_COMPILING_IN_PYPY
+ __pyx_pw_4lxml_9objectify_13NumberElement_43__floordiv__, /*nb_floor_divide*/
+ #else
0, /*nb_floor_divide*/
+ #endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_31__truediv__, /*nb_true_divide*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_39__truediv__, /*nb_true_divide*/
#else
0, /*nb_true_divide*/
#endif
static PyMethodDef __pyx_methods_4lxml_9objectify_StringElement[] = {
{"strlen", (PyCFunction)__pyx_pw_4lxml_9objectify_13StringElement_3strlen, METH_NOARGS, 0},
- {"__complex__", (PyCFunction)__pyx_pw_4lxml_9objectify_13StringElement_23__complex__, METH_NOARGS, 0},
+ {"__radd__", (PyCFunction)__pyx_pw_4lxml_9objectify_13StringElement_13__radd__, METH_O, 0},
+ {"__rmul__", (PyCFunction)__pyx_pw_4lxml_9objectify_13StringElement_17__rmul__, METH_O, 0},
+ {"__complex__", (PyCFunction)__pyx_pw_4lxml_9objectify_13StringElement_27__complex__, METH_NOARGS, 0},
{0, 0, 0, 0}
};
static PyNumberMethods __pyx_tp_as_number_StringElement = {
__pyx_pw_4lxml_9objectify_13StringElement_11__add__, /*nb_add*/
0, /*nb_subtract*/
- __pyx_pw_4lxml_9objectify_13StringElement_13__mul__, /*nb_multiply*/
+ __pyx_pw_4lxml_9objectify_13StringElement_15__mul__, /*nb_multiply*/
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
0, /*nb_divide*/
#endif
- __pyx_pw_4lxml_9objectify_13StringElement_15__mod__, /*nb_remainder*/
+ __pyx_pw_4lxml_9objectify_13StringElement_19__mod__, /*nb_remainder*/
0, /*nb_divmod*/
0, /*nb_power*/
0, /*nb_negative*/
0, /*nb_positive*/
0, /*nb_absolute*/
- __pyx_pw_4lxml_9objectify_13StringElement_5__nonzero__, /*nb_nonzero*/
+ __pyx_pw_4lxml_9objectify_13StringElement_5__bool__, /*nb_nonzero*/
0, /*nb_invert*/
0, /*nb_lshift*/
0, /*nb_rshift*/
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
0, /*nb_coerce*/
#endif
- __pyx_pw_4lxml_9objectify_13StringElement_17__int__, /*nb_int*/
+ __pyx_pw_4lxml_9objectify_13StringElement_21__int__, /*nb_int*/
#if PY_MAJOR_VERSION < 3
- __pyx_pw_4lxml_9objectify_13StringElement_19__long__, /*nb_long*/
+ __pyx_pw_4lxml_9objectify_13StringElement_23__long__, /*nb_long*/
#else
0, /*reserved*/
#endif
- __pyx_pw_4lxml_9objectify_13StringElement_21__float__, /*nb_float*/
+ __pyx_pw_4lxml_9objectify_13StringElement_25__float__, /*nb_float*/
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
0, /*nb_oct*/
#endif
0, /*nb_negative*/
0, /*nb_positive*/
0, /*nb_absolute*/
- __pyx_pw_4lxml_9objectify_11NoneElement_5__nonzero__, /*nb_nonzero*/
+ __pyx_pw_4lxml_9objectify_11NoneElement_5__bool__, /*nb_nonzero*/
0, /*nb_invert*/
0, /*nb_lshift*/
0, /*nb_rshift*/
0, /*nb_add*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_25__sub__, /*nb_subtract*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_27__sub__, /*nb_subtract*/
#else
0, /*nb_subtract*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_27__mul__, /*nb_multiply*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_31__mul__, /*nb_multiply*/
#else
0, /*nb_multiply*/
#endif
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_29__div__, /*nb_divide*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_35__div__, /*nb_divide*/
#else
0, /*nb_divide*/
#endif
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_33__mod__, /*nb_remainder*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_47__mod__, /*nb_remainder*/
#else
0, /*nb_remainder*/
#endif
+ #if CYTHON_COMPILING_IN_PYPY
+ __pyx_pw_4lxml_9objectify_13NumberElement_51__divmod__, /*nb_divmod*/
+ #else
0, /*nb_divmod*/
+ #endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_35__pow__, /*nb_power*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_55__pow__, /*nb_power*/
#else
0, /*nb_power*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_37__neg__, /*nb_negative*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_59__neg__, /*nb_negative*/
#else
0, /*nb_negative*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_39__pos__, /*nb_positive*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_61__pos__, /*nb_positive*/
#else
0, /*nb_positive*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_41__abs__, /*nb_absolute*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_63__abs__, /*nb_absolute*/
#else
0, /*nb_absolute*/
#endif
- __pyx_pw_4lxml_9objectify_11BoolElement_3__nonzero__, /*nb_nonzero*/
+ __pyx_pw_4lxml_9objectify_11BoolElement_3__bool__, /*nb_nonzero*/
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_45__invert__, /*nb_invert*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_67__invert__, /*nb_invert*/
#else
0, /*nb_invert*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_47__lshift__, /*nb_lshift*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_69__lshift__, /*nb_lshift*/
#else
0, /*nb_lshift*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_49__rshift__, /*nb_rshift*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_73__rshift__, /*nb_rshift*/
#else
0, /*nb_rshift*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_51__and__, /*nb_and*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_77__and__, /*nb_and*/
#else
0, /*nb_and*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_55__xor__, /*nb_xor*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_85__xor__, /*nb_xor*/
#else
0, /*nb_xor*/
#endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_53__or__, /*nb_or*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_81__or__, /*nb_or*/
#else
0, /*nb_or*/
#endif
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
0, /*nb_coerce*/
#endif
- #if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_3__int__, /*nb_int*/
- #else
- 0, /*nb_int*/
- #endif
+ __pyx_pw_4lxml_9objectify_11BoolElement_5__int__, /*nb_int*/
#if PY_MAJOR_VERSION < 3
- #if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_5__long__, /*nb_long*/
- #else
- 0, /*nb_long*/
- #endif
+ __pyx_pw_4lxml_9objectify_11BoolElement_5__int__, /*nb_long*/
#else
0, /*reserved*/
#endif
- #if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_7__float__, /*nb_float*/
- #else
- 0, /*nb_float*/
- #endif
+ __pyx_pw_4lxml_9objectify_11BoolElement_7__float__, /*nb_float*/
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
#if CYTHON_COMPILING_IN_PYPY
__pyx_pw_4lxml_9objectify_13NumberElement_15__oct__, /*nb_oct*/
0, /*nb_inplace_and*/
0, /*nb_inplace_xor*/
0, /*nb_inplace_or*/
+ #if CYTHON_COMPILING_IN_PYPY
+ __pyx_pw_4lxml_9objectify_13NumberElement_43__floordiv__, /*nb_floor_divide*/
+ #else
0, /*nb_floor_divide*/
+ #endif
#if CYTHON_COMPILING_IN_PYPY
- __pyx_pw_4lxml_9objectify_13NumberElement_31__truediv__, /*nb_true_divide*/
+ __pyx_pw_4lxml_9objectify_13NumberElement_39__truediv__, /*nb_true_divide*/
#else
0, /*nb_true_divide*/
#endif
#if PY_MAJOR_VERSION >= 3
0, /*tp_as_async*/
#endif
- __pyx_pw_4lxml_9objectify_11BoolElement_11__repr__, /*tp_repr*/
+ __pyx_pw_4lxml_9objectify_11BoolElement_15__repr__, /*tp_repr*/
&__pyx_tp_as_number_BoolElement, /*tp_as_number*/
0, /*tp_as_sequence*/
0, /*tp_as_mapping*/
- __pyx_pw_4lxml_9objectify_11BoolElement_7__hash__, /*tp_hash*/
+ __pyx_pw_4lxml_9objectify_11BoolElement_11__hash__, /*tp_hash*/
0, /*tp_call*/
- __pyx_pw_4lxml_9objectify_11BoolElement_9__str__, /*tp_str*/
+ __pyx_pw_4lxml_9objectify_11BoolElement_13__str__, /*tp_str*/
0, /*tp_getattro*/
0, /*tp_setattro*/
0, /*tp_as_buffer*/
"Boolean type base on string values: 'true' or 'false'.\n\n Note that this inherits from IntElement to mimic the behaviour of\n Python's bool type.\n ", /*tp_doc*/
__pyx_tp_traverse_4lxml_9objectify_NumberElement, /*tp_traverse*/
__pyx_tp_clear_4lxml_9objectify_NumberElement, /*tp_clear*/
- __pyx_pw_4lxml_9objectify_11BoolElement_5__richcmp__, /*tp_richcompare*/
+ __pyx_pw_4lxml_9objectify_11BoolElement_9__richcmp__, /*tp_richcompare*/
0, /*tp_weaklistoffset*/
#if CYTHON_COMPILING_IN_PYPY
__pyx_pw_4lxml_9objectify_18ObjectifiedElement_1__iter__, /*tp_iter*/
{&__pyx_n_u_NoneElement, __pyx_k_NoneElement, sizeof(__pyx_k_NoneElement), 0, 1, 0, 1},
{&__pyx_n_s_NoneType, __pyx_k_NoneType, sizeof(__pyx_k_NoneType), 0, 0, 1, 1},
{&__pyx_n_u_NoneType, __pyx_k_NoneType, sizeof(__pyx_k_NoneType), 0, 1, 0, 1},
+ {&__pyx_n_s_NotImplemented, __pyx_k_NotImplemented, sizeof(__pyx_k_NotImplemented), 0, 0, 1, 1},
{&__pyx_n_s_NumberElement, __pyx_k_NumberElement, sizeof(__pyx_k_NumberElement), 0, 0, 1, 1},
{&__pyx_n_u_NumberElement, __pyx_k_NumberElement, sizeof(__pyx_k_NumberElement), 0, 1, 0, 1},
{&__pyx_n_s_NumberElement___complex, __pyx_k_NumberElement___complex, sizeof(__pyx_k_NumberElement___complex), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___radd, __pyx_k_NumberElement___radd, sizeof(__pyx_k_NumberElement___radd), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rand, __pyx_k_NumberElement___rand, sizeof(__pyx_k_NumberElement___rand), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rdiv, __pyx_k_NumberElement___rdiv, sizeof(__pyx_k_NumberElement___rdiv), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rdivmod, __pyx_k_NumberElement___rdivmod, sizeof(__pyx_k_NumberElement___rdivmod), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rfloordiv, __pyx_k_NumberElement___rfloordiv, sizeof(__pyx_k_NumberElement___rfloordiv), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rlshift, __pyx_k_NumberElement___rlshift, sizeof(__pyx_k_NumberElement___rlshift), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rmod, __pyx_k_NumberElement___rmod, sizeof(__pyx_k_NumberElement___rmod), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rmul, __pyx_k_NumberElement___rmul, sizeof(__pyx_k_NumberElement___rmul), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___ror, __pyx_k_NumberElement___ror, sizeof(__pyx_k_NumberElement___ror), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rpow, __pyx_k_NumberElement___rpow, sizeof(__pyx_k_NumberElement___rpow), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rrshift, __pyx_k_NumberElement___rrshift, sizeof(__pyx_k_NumberElement___rrshift), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rsub, __pyx_k_NumberElement___rsub, sizeof(__pyx_k_NumberElement___rsub), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rtruediv, __pyx_k_NumberElement___rtruediv, sizeof(__pyx_k_NumberElement___rtruediv), 0, 0, 1, 1},
+ {&__pyx_n_s_NumberElement___rxor, __pyx_k_NumberElement___rxor, sizeof(__pyx_k_NumberElement___rxor), 0, 0, 1, 1},
{&__pyx_n_s_NumberElement__setValueParser, __pyx_k_NumberElement__setValueParser, sizeof(__pyx_k_NumberElement__setValueParser), 0, 0, 1, 1},
{&__pyx_n_s_ObjectPath, __pyx_k_ObjectPath, sizeof(__pyx_k_ObjectPath), 0, 0, 1, 1},
{&__pyx_n_u_ObjectPath, __pyx_k_ObjectPath, sizeof(__pyx_k_ObjectPath), 0, 1, 0, 1},
{&__pyx_n_s_StringElement, __pyx_k_StringElement, sizeof(__pyx_k_StringElement), 0, 0, 1, 1},
{&__pyx_n_u_StringElement, __pyx_k_StringElement, sizeof(__pyx_k_StringElement), 0, 1, 0, 1},
{&__pyx_n_s_StringElement___complex, __pyx_k_StringElement___complex, sizeof(__pyx_k_StringElement___complex), 0, 0, 1, 1},
+ {&__pyx_n_s_StringElement___radd, __pyx_k_StringElement___radd, sizeof(__pyx_k_StringElement___radd), 0, 0, 1, 1},
+ {&__pyx_n_s_StringElement___rmul, __pyx_k_StringElement___rmul, sizeof(__pyx_k_StringElement___rmul), 0, 0, 1, 1},
{&__pyx_n_s_StringElement_strlen, __pyx_k_StringElement_strlen, sizeof(__pyx_k_StringElement_strlen), 0, 0, 1, 1},
{&__pyx_n_s_SubElement, __pyx_k_SubElement, sizeof(__pyx_k_SubElement), 0, 0, 1, 1},
{&__pyx_n_u_SubElement, __pyx_k_SubElement, sizeof(__pyx_k_SubElement), 0, 1, 0, 1},
{&__pyx_n_u_integer, __pyx_k_integer, sizeof(__pyx_k_integer), 0, 1, 0, 1},
{&__pyx_kp_u_invalid_number_of_arguments_need, __pyx_k_invalid_number_of_arguments_need, sizeof(__pyx_k_invalid_number_of_arguments_need), 0, 1, 0, 0},
{&__pyx_kp_u_invalid_path, __pyx_k_invalid_path, sizeof(__pyx_k_invalid_path), 0, 1, 0, 0},
- {&__pyx_kp_u_invalid_types_for_operator, __pyx_k_invalid_types_for_operator, sizeof(__pyx_k_invalid_types_for_operator), 0, 1, 0, 0},
{&__pyx_n_s_item, __pyx_k_item, sizeof(__pyx_k_item), 0, 0, 1, 1},
{&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1},
{&__pyx_n_s_iterchildren, __pyx_k_iterchildren, sizeof(__pyx_k_iterchildren), 0, 0, 1, 1},
{&__pyx_n_u_makeparser, __pyx_k_makeparser, sizeof(__pyx_k_makeparser), 0, 1, 0, 1},
{&__pyx_n_s_map, __pyx_k_map, sizeof(__pyx_k_map), 0, 0, 1, 1},
{&__pyx_n_s_match, __pyx_k_match, sizeof(__pyx_k_match), 0, 0, 1, 1},
+ {&__pyx_n_s_modulo, __pyx_k_modulo, sizeof(__pyx_k_modulo), 0, 0, 1, 1},
{&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
{&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
{&__pyx_n_s_namespace, __pyx_k_namespace, sizeof(__pyx_k_namespace), 0, 0, 1, 1},
{&__pyx_n_s_oct, __pyx_k_oct, sizeof(__pyx_k_oct), 0, 0, 1, 1},
{&__pyx_kp_u_of, __pyx_k_of, sizeof(__pyx_k_of), 0, 1, 0, 0},
{&__pyx_n_s_on, __pyx_k_on, sizeof(__pyx_k_on), 0, 0, 1, 1},
+ {&__pyx_n_s_other, __pyx_k_other, sizeof(__pyx_k_other), 0, 0, 1, 1},
{&__pyx_n_s_parse, __pyx_k_parse, sizeof(__pyx_k_parse), 0, 0, 1, 1},
{&__pyx_n_u_parse, __pyx_k_parse, sizeof(__pyx_k_parse), 0, 1, 0, 1},
{&__pyx_n_s_parseBool, __pyx_k_parseBool, sizeof(__pyx_k_parseBool), 0, 0, 1, 1},
{&__pyx_n_s_pyval, __pyx_k_pyval, sizeof(__pyx_k_pyval), 0, 0, 1, 1},
{&__pyx_n_u_pyval, __pyx_k_pyval, sizeof(__pyx_k_pyval), 0, 1, 0, 1},
{&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
+ {&__pyx_n_s_radd, __pyx_k_radd, sizeof(__pyx_k_radd), 0, 0, 1, 1},
+ {&__pyx_n_s_rand, __pyx_k_rand, sizeof(__pyx_k_rand), 0, 0, 1, 1},
+ {&__pyx_n_s_rdiv, __pyx_k_rdiv, sizeof(__pyx_k_rdiv), 0, 0, 1, 1},
+ {&__pyx_n_s_rdivmod, __pyx_k_rdivmod, sizeof(__pyx_k_rdivmod), 0, 0, 1, 1},
{&__pyx_n_s_re, __pyx_k_re, sizeof(__pyx_k_re), 0, 0, 1, 1},
{&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
{&__pyx_n_s_register, __pyx_k_register, sizeof(__pyx_k_register), 0, 0, 1, 1},
{&__pyx_n_s_replace, __pyx_k_replace, sizeof(__pyx_k_replace), 0, 0, 1, 1},
{&__pyx_n_s_repr, __pyx_k_repr, sizeof(__pyx_k_repr), 0, 0, 1, 1},
{&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1},
+ {&__pyx_n_s_rfloordiv, __pyx_k_rfloordiv, sizeof(__pyx_k_rfloordiv), 0, 0, 1, 1},
+ {&__pyx_n_s_rlshift, __pyx_k_rlshift, sizeof(__pyx_k_rlshift), 0, 0, 1, 1},
+ {&__pyx_n_s_rmod, __pyx_k_rmod, sizeof(__pyx_k_rmod), 0, 0, 1, 1},
+ {&__pyx_n_s_rmul, __pyx_k_rmul, sizeof(__pyx_k_rmul), 0, 0, 1, 1},
{&__pyx_n_s_root, __pyx_k_root, sizeof(__pyx_k_root), 0, 0, 1, 1},
{&__pyx_kp_u_root_element_does_not_match_need, __pyx_k_root_element_does_not_match_need, sizeof(__pyx_k_root_element_does_not_match_need), 0, 1, 0, 0},
+ {&__pyx_n_s_ror, __pyx_k_ror, sizeof(__pyx_k_ror), 0, 0, 1, 1},
+ {&__pyx_n_s_rpow, __pyx_k_rpow, sizeof(__pyx_k_rpow), 0, 0, 1, 1},
+ {&__pyx_n_s_rrshift, __pyx_k_rrshift, sizeof(__pyx_k_rrshift), 0, 0, 1, 1},
+ {&__pyx_n_s_rsub, __pyx_k_rsub, sizeof(__pyx_k_rsub), 0, 0, 1, 1},
+ {&__pyx_n_s_rtruediv, __pyx_k_rtruediv, sizeof(__pyx_k_rtruediv), 0, 0, 1, 1},
+ {&__pyx_n_s_rxor, __pyx_k_rxor, sizeof(__pyx_k_rxor), 0, 0, 1, 1},
{&__pyx_kp_u_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 1, 0, 0},
{&__pyx_kp_u_s_2, __pyx_k_s_2, sizeof(__pyx_k_s_2), 0, 1, 0, 0},
{&__pyx_n_s_s_3, __pyx_k_s_3, sizeof(__pyx_k_s_3), 0, 0, 1, 1},
__pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(1, 10, __pyx_L1_error)
__pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 299, __pyx_L1_error)
__pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 450, __pyx_L1_error)
- __pyx_builtin_oct = __Pyx_GetBuiltinName(__pyx_n_s_oct); if (!__pyx_builtin_oct) __PYX_ERR(0, 644, __pyx_L1_error)
- __pyx_builtin_hex = __Pyx_GetBuiltinName(__pyx_n_s_hex); if (!__pyx_builtin_hex) __PYX_ERR(0, 647, __pyx_L1_error)
- __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 973, __pyx_L1_error)
- __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s_map); if (!__pyx_builtin_map) __PYX_ERR(0, 1011, __pyx_L1_error)
+ __pyx_builtin_oct = __Pyx_GetBuiltinName(__pyx_n_s_oct); if (!__pyx_builtin_oct) __PYX_ERR(0, 646, __pyx_L1_error)
+ __pyx_builtin_hex = __Pyx_GetBuiltinName(__pyx_n_s_hex); if (!__pyx_builtin_hex) __PYX_ERR(0, 649, __pyx_L1_error)
+ __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) __PYX_ERR(0, 830, __pyx_L1_error)
+ __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 1048, __pyx_L1_error)
+ __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s_map); if (!__pyx_builtin_map) __PYX_ERR(0, 1086, __pyx_L1_error)
__pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 169, __pyx_L1_error)
return 0;
__pyx_L1_error:;
__Pyx_GOTREF(__pyx_slice__3);
__Pyx_GIVEREF(__pyx_slice__3);
- /* "lxml/objectify.pyx":1033
+ /* "lxml/objectify.pyx":1108
* cdef _registerPyTypes():
* pytype = PyType(u'int', int, IntElement)
* pytype.xmlSchemaTypes = (u"integer", u"int", u"short", u"byte", u"unsignedShort", # <<<<<<<<<<<<<<
* u"unsignedByte", u"nonPositiveInteger",
* u"negativeInteger", u"long", u"nonNegativeInteger",
*/
- __pyx_tuple__5 = PyTuple_Pack(13, __pyx_n_u_integer, __pyx_n_u_int, __pyx_n_u_short, __pyx_n_u_byte, __pyx_n_u_unsignedShort, __pyx_n_u_unsignedByte, __pyx_n_u_nonPositiveInteger, __pyx_n_u_negativeInteger, __pyx_n_u_long, __pyx_n_u_nonNegativeInteger, __pyx_n_u_unsignedLong, __pyx_n_u_unsignedInt, __pyx_n_u_positiveInteger); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 1033, __pyx_L1_error)
+ __pyx_tuple__5 = PyTuple_Pack(13, __pyx_n_u_integer, __pyx_n_u_int, __pyx_n_u_short, __pyx_n_u_byte, __pyx_n_u_unsignedShort, __pyx_n_u_unsignedByte, __pyx_n_u_nonPositiveInteger, __pyx_n_u_negativeInteger, __pyx_n_u_long, __pyx_n_u_nonNegativeInteger, __pyx_n_u_unsignedLong, __pyx_n_u_unsignedInt, __pyx_n_u_positiveInteger); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 1108, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__5);
__Pyx_GIVEREF(__pyx_tuple__5);
- /* "lxml/objectify.pyx":1044
+ /* "lxml/objectify.pyx":1119
*
* pytype = PyType(u'float', float, FloatElement, repr)
* pytype.xmlSchemaTypes = (u"double", u"float") # <<<<<<<<<<<<<<
* pytype.register()
*
*/
- __pyx_tuple__6 = PyTuple_Pack(2, __pyx_n_u_double, __pyx_n_u_float); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 1044, __pyx_L1_error)
+ __pyx_tuple__6 = PyTuple_Pack(2, __pyx_n_u_double, __pyx_n_u_float); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 1119, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__6);
__Pyx_GIVEREF(__pyx_tuple__6);
- /* "lxml/objectify.pyx":1048
+ /* "lxml/objectify.pyx":1123
*
* pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
* pytype.xmlSchemaTypes = (u"boolean",) # <<<<<<<<<<<<<<
* pytype.register()
*
*/
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_u_boolean); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 1048, __pyx_L1_error)
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_u_boolean); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 1123, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__7);
__Pyx_GIVEREF(__pyx_tuple__7);
- /* "lxml/objectify.pyx":1052
+ /* "lxml/objectify.pyx":1127
*
* pytype = PyType(u'str', None, StringElement)
* pytype.xmlSchemaTypes = (u"string", u"normalizedString", u"token", u"language", # <<<<<<<<<<<<<<
* u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
* u"NMTOKEN", )
*/
- __pyx_tuple__8 = PyTuple_Pack(10, __pyx_n_u_string, __pyx_n_u_normalizedString, __pyx_n_u_token, __pyx_n_u_language, __pyx_n_u_Name, __pyx_n_u_NCName, __pyx_n_u_ID, __pyx_n_u_IDREF, __pyx_n_u_ENTITY, __pyx_n_u_NMTOKEN); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 1052, __pyx_L1_error)
+ __pyx_tuple__8 = PyTuple_Pack(10, __pyx_n_u_string, __pyx_n_u_normalizedString, __pyx_n_u_token, __pyx_n_u_language, __pyx_n_u_Name, __pyx_n_u_NCName, __pyx_n_u_ID, __pyx_n_u_IDREF, __pyx_n_u_ENTITY, __pyx_n_u_NMTOKEN); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 1127, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__8);
__Pyx_GIVEREF(__pyx_tuple__8);
- /* "lxml/objectify.pyx":1349
+ /* "lxml/objectify.pyx":1424
* result += _dump(child, indent)
* if indent == 1:
* return result[:-1] # strip last '\n' # <<<<<<<<<<<<<<
* else:
* return result
*/
- __pyx_slice__16 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__16)) __PYX_ERR(0, 1349, __pyx_L1_error)
+ __pyx_slice__16 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__16)) __PYX_ERR(0, 1424, __pyx_L1_error)
__Pyx_GOTREF(__pyx_slice__16);
__Pyx_GIVEREF(__pyx_slice__16);
- /* "lxml/objectify.pyx":1430
+ /* "lxml/objectify.pyx":1505
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
* if schema_type is None and u':' in value:
* prefix, value = value.split(u':', 1) # <<<<<<<<<<<<<<
* schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
* if schema_type is not None:
*/
- __pyx_tuple__18 = PyTuple_Pack(2, __pyx_kp_u__17, __pyx_int_1); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1430, __pyx_L1_error)
+ __pyx_tuple__18 = PyTuple_Pack(2, __pyx_kp_u__17, __pyx_int_1); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1505, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__18);
__Pyx_GIVEREF(__pyx_tuple__18);
__Pyx_GIVEREF(__pyx_tuple__38);
__pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_setText, 606, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 606, __pyx_L1_error)
- /* "lxml/objectify.pyx":614
- * cdef class NumberElement(ObjectifiedDataElement):
+ /* "lxml/objectify.pyx":616
* cdef object _parse_value
+ *
* def _setValueParser(self, function): # <<<<<<<<<<<<<<
* u"""Set the function that parses the Python value from a string.
*
*/
- __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_function); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 614, __pyx_L1_error)
+ __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_function); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 616, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__40);
__Pyx_GIVEREF(__pyx_tuple__40);
- __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_setValueParser, 614, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 614, __pyx_L1_error)
+ __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_setValueParser, 616, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 616, __pyx_L1_error)
- /* "lxml/objectify.pyx":634
+ /* "lxml/objectify.pyx":636
* return float(_parseNumber(self))
*
* def __complex__(self): # <<<<<<<<<<<<<<
* return complex(_parseNumber(self))
*
*/
- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 634, __pyx_L1_error)
+ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 636, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__42);
__Pyx_GIVEREF(__pyx_tuple__42);
- __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_complex, 634, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 634, __pyx_L1_error)
+ __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_complex, 636, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 636, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":660
+ * return _numericValueOf(self) + _numericValueOf(other)
+ *
+ * def __radd__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) + _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__44 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__44);
+ __Pyx_GIVEREF(__pyx_tuple__44);
+ __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_radd, 660, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 660, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":666
+ * return _numericValueOf(self) - _numericValueOf(other)
+ *
+ * def __rsub__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) - _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__46 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 666, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__46);
+ __Pyx_GIVEREF(__pyx_tuple__46);
+ __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rsub, 666, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 666, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":672
+ * return _numericValueOf(self) * _numericValueOf(other)
+ *
+ * def __rmul__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) * _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__48 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 672, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__48);
+ __Pyx_GIVEREF(__pyx_tuple__48);
+ __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rmul, 672, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 672, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":678
+ * return _numericValueOf(self) / _numericValueOf(other)
+ *
+ * def __rdiv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__50 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 678, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__50);
+ __Pyx_GIVEREF(__pyx_tuple__50);
+ __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rdiv, 678, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 678, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":684
+ * return _numericValueOf(self) / _numericValueOf(other)
+ *
+ * def __rtruediv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__52 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 684, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__52);
+ __Pyx_GIVEREF(__pyx_tuple__52);
+ __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rtruediv, 684, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 684, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":690
+ * return _numericValueOf(self) // _numericValueOf(other)
+ *
+ * def __rfloordiv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) // _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__54 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 690, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__54);
+ __Pyx_GIVEREF(__pyx_tuple__54);
+ __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rfloordiv, 690, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 690, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":696
+ * return _numericValueOf(self) % _numericValueOf(other)
+ *
+ * def __rmod__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) % _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__56 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 696, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__56);
+ __Pyx_GIVEREF(__pyx_tuple__56);
+ __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rmod, 696, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 696, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":702
+ * return divmod(_numericValueOf(self), _numericValueOf(other))
+ *
+ * def __rdivmod__(self, other): # <<<<<<<<<<<<<<
+ * return divmod(_numericValueOf(other), _numericValueOf(self))
+ *
+ */
+ __pyx_tuple__58 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 702, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__58);
+ __Pyx_GIVEREF(__pyx_tuple__58);
+ __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rdivmod, 702, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 702, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":711
+ * return pow(_numericValueOf(self), _numericValueOf(other), modulo)
+ *
+ * def __rpow__(self, other, modulo): # <<<<<<<<<<<<<<
+ * if modulo is None:
+ * return _numericValueOf(other) ** _numericValueOf(self)
+ */
+ __pyx_tuple__60 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_other, __pyx_n_s_modulo); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 711, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__60);
+ __Pyx_GIVEREF(__pyx_tuple__60);
+ __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rpow, 711, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 711, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":735
+ * return _numericValueOf(self) << _numericValueOf(other)
+ *
+ * def __rlshift__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) << _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__62 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 735, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__62);
+ __Pyx_GIVEREF(__pyx_tuple__62);
+ __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rlshift, 735, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 735, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":741
+ * return _numericValueOf(self) >> _numericValueOf(other)
+ *
+ * def __rrshift__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) >> _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__64 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 741, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__64);
+ __Pyx_GIVEREF(__pyx_tuple__64);
+ __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rrshift, 741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 741, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":747
+ * return _numericValueOf(self) & _numericValueOf(other)
+ *
+ * def __rand__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) & _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__66 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 747, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__66);
+ __Pyx_GIVEREF(__pyx_tuple__66);
+ __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rand, 747, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 747, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":753
+ * return _numericValueOf(self) | _numericValueOf(other)
+ *
+ * def __ror__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) | _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__68 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 753, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__68);
+ __Pyx_GIVEREF(__pyx_tuple__68);
+ __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_ror, 753, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 753, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":759
+ * return _numericValueOf(self) ^ _numericValueOf(other)
+ *
+ * def __rxor__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) ^ _numericValueOf(self)
+ *
+ */
+ __pyx_tuple__70 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 759, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__70);
+ __Pyx_GIVEREF(__pyx_tuple__70);
+ __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rxor, 759, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(0, 759, __pyx_L1_error)
- /* "lxml/objectify.pyx":710
+ /* "lxml/objectify.pyx":764
*
* cdef class IntElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
* self._parse_value = int
*
*/
- __pyx_tuple__44 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 710, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__44);
- __Pyx_GIVEREF(__pyx_tuple__44);
- __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 710, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 710, __pyx_L1_error)
+ __pyx_tuple__72 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 764, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__72);
+ __Pyx_GIVEREF(__pyx_tuple__72);
+ __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__72, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 764, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(0, 764, __pyx_L1_error)
- /* "lxml/objectify.pyx":717
+ /* "lxml/objectify.pyx":772
*
* cdef class LongElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
* self._parse_value = long
*
*/
- __pyx_tuple__46 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 717, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__46);
- __Pyx_GIVEREF(__pyx_tuple__46);
- __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 717, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 717, __pyx_L1_error)
+ __pyx_tuple__74 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 772, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__74);
+ __Pyx_GIVEREF(__pyx_tuple__74);
+ __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 772, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(0, 772, __pyx_L1_error)
- /* "lxml/objectify.pyx":724
+ /* "lxml/objectify.pyx":780
*
* cdef class FloatElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
* self._parse_value = float
*
*/
- __pyx_tuple__48 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 724, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__48);
- __Pyx_GIVEREF(__pyx_tuple__48);
- __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 724, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 724, __pyx_L1_error)
+ __pyx_tuple__76 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 780, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__76);
+ __Pyx_GIVEREF(__pyx_tuple__76);
+ __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 780, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(0, 780, __pyx_L1_error)
- /* "lxml/objectify.pyx":741
+ /* "lxml/objectify.pyx":798
* return repr(textOf(self._c_node) or u'')
*
* def strlen(self): # <<<<<<<<<<<<<<
* text = textOf(self._c_node)
* if text is None:
*/
- __pyx_tuple__50 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_text); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 741, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__50);
- __Pyx_GIVEREF(__pyx_tuple__50);
- __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_strlen, 741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 741, __pyx_L1_error)
+ __pyx_tuple__78 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_text); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(0, 798, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__78);
+ __Pyx_GIVEREF(__pyx_tuple__78);
+ __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_strlen, 798, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(0, 798, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":819
+ * return text + other
+ *
+ * def __radd__(self, other): # <<<<<<<<<<<<<<
+ * text = _strValueOf(self)
+ * other = _strValueOf(other)
+ */
+ __pyx_tuple__80 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_other, __pyx_n_s_text); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 819, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__80);
+ __Pyx_GIVEREF(__pyx_tuple__80);
+ __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_radd, 819, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(0, 819, __pyx_L1_error)
+
+ /* "lxml/objectify.pyx":832
+ * return NotImplemented
+ *
+ * def __rmul__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) * (textOf((<StringElement>self)._c_node) or '')
+ *
+ */
+ __pyx_tuple__82 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__82);
+ __Pyx_GIVEREF(__pyx_tuple__82);
+ __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_rmul, 832, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 832, __pyx_L1_error)
- /* "lxml/objectify.pyx":786
+ /* "lxml/objectify.pyx":847
* return float(textOf(self._c_node))
*
* def __complex__(self): # <<<<<<<<<<<<<<
* return complex(textOf(self._c_node))
*
*/
- __pyx_tuple__52 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 786, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__52);
- __Pyx_GIVEREF(__pyx_tuple__52);
- __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_complex, 786, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 786, __pyx_L1_error)
+ __pyx_tuple__84 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 847, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__84);
+ __Pyx_GIVEREF(__pyx_tuple__84);
+ __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__84, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_complex, 847, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(0, 847, __pyx_L1_error)
- /* "lxml/objectify.pyx":821
+ /* "lxml/objectify.pyx":883
* Python's bool type.
* """
* def _init(self): # <<<<<<<<<<<<<<
* self._parse_value = __parseBool
*
*/
- __pyx_tuple__54 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 821, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__54);
- __Pyx_GIVEREF(__pyx_tuple__54);
- __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 821, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 821, __pyx_L1_error)
+ __pyx_tuple__86 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(0, 883, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__86);
+ __Pyx_GIVEREF(__pyx_tuple__86);
+ __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__86, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 883, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(0, 883, __pyx_L1_error)
- /* "lxml/objectify.pyx":843
- * return __parseBool(textOf(self._c_node))
+ /* "lxml/objectify.pyx":912
+ *
*
* def __checkBool(s): # <<<<<<<<<<<<<<
* cdef int value = -1
* if s is not None:
*/
- __pyx_tuple__56 = PyTuple_Pack(2, __pyx_n_s_s_3, __pyx_n_s_value); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 843, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__56);
- __Pyx_GIVEREF(__pyx_tuple__56);
- __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_checkBool, 843, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 843, __pyx_L1_error)
+ __pyx_tuple__88 = PyTuple_Pack(2, __pyx_n_s_s_3, __pyx_n_s_value); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(0, 912, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__88);
+ __Pyx_GIVEREF(__pyx_tuple__88);
+ __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__88, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_checkBool, 912, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(0, 912, __pyx_L1_error)
- /* "lxml/objectify.pyx":850
- * raise ValueError
+ /* "lxml/objectify.pyx":920
+ *
*
* cpdef bint __parseBool(s) except -1: # <<<<<<<<<<<<<<
* cdef int value
* if s is None:
*/
- __pyx_tuple__58 = PyTuple_Pack(1, __pyx_n_s_s_3); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 850, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__58);
- __Pyx_GIVEREF(__pyx_tuple__58);
- __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_parseBool, 850, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 850, __pyx_L1_error)
+ __pyx_tuple__90 = PyTuple_Pack(1, __pyx_n_s_s_3); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 920, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__90);
+ __Pyx_GIVEREF(__pyx_tuple__90);
+ __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__90, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_parseBool, 920, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(0, 920, __pyx_L1_error)
- /* "lxml/objectify.pyx":948
+ /* "lxml/objectify.pyx":1023
* return "PyType(%s, %s)" % (self.name, self._type.__name__)
*
* def register(self, before=None, after=None): # <<<<<<<<<<<<<<
* u"""register(self, before=None, after=None)
*
*/
- __pyx_tuple__60 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_before, __pyx_n_s_after, __pyx_n_s_item, __pyx_n_s_entry, __pyx_n_s_first_pos, __pyx_n_s_last_pos, __pyx_n_s_i, __pyx_n_s_check, __pyx_n_s_pytype, __pyx_n_s_xs_type); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 948, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__60);
- __Pyx_GIVEREF(__pyx_tuple__60);
- __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(3, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_register, 948, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 948, __pyx_L1_error)
+ __pyx_tuple__92 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_before, __pyx_n_s_after, __pyx_n_s_item, __pyx_n_s_entry, __pyx_n_s_first_pos, __pyx_n_s_last_pos, __pyx_n_s_i, __pyx_n_s_check, __pyx_n_s_pytype, __pyx_n_s_xs_type); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 1023, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__92);
+ __Pyx_GIVEREF(__pyx_tuple__92);
+ __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(3, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__92, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_register, 1023, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(0, 1023, __pyx_L1_error)
- /* "lxml/objectify.pyx":989
+ /* "lxml/objectify.pyx":1064
* _SCHEMA_TYPE_DICT[xs_type] = self
*
* def unregister(self): # <<<<<<<<<<<<<<
* u"unregister(self)"
* if _PYTYPE_DICT.get(self.name) is self:
*/
- __pyx_tuple__62 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xs_type, __pyx_n_s_pytype); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 989, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__62);
- __Pyx_GIVEREF(__pyx_tuple__62);
- __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_unregister, 989, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 989, __pyx_L1_error)
+ __pyx_tuple__94 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xs_type, __pyx_n_s_pytype); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(0, 1064, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__94);
+ __Pyx_GIVEREF(__pyx_tuple__94);
+ __pyx_codeobj__95 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__94, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_unregister, 1064, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__95)) __PYX_ERR(0, 1064, __pyx_L1_error)
- /* "lxml/objectify.pyx":1018
+ /* "lxml/objectify.pyx":1093
* cdef list _TYPE_CHECKS = []
*
* def __lower_bool(b): # <<<<<<<<<<<<<<
* return u"true" if b else u"false"
*
*/
- __pyx_tuple__64 = PyTuple_Pack(1, __pyx_n_s_b); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 1018, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__64);
- __Pyx_GIVEREF(__pyx_tuple__64);
- __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_lower_bool, 1018, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 1018, __pyx_L1_error)
+ __pyx_tuple__96 = PyTuple_Pack(1, __pyx_n_s_b); if (unlikely(!__pyx_tuple__96)) __PYX_ERR(0, 1093, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__96);
+ __Pyx_GIVEREF(__pyx_tuple__96);
+ __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__96, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_lower_bool, 1093, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(0, 1093, __pyx_L1_error)
- /* "lxml/objectify.pyx":1024
+ /* "lxml/objectify.pyx":1099
* return u"str" if python._isString(obj) else _typename(obj)
*
* def pytypename(obj): # <<<<<<<<<<<<<<
* u"""pytypename(obj)
*
*/
- __pyx_tuple__66 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 1024, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__66);
- __Pyx_GIVEREF(__pyx_tuple__66);
- __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pytypename, 1024, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 1024, __pyx_L1_error)
+ __pyx_tuple__98 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 1099, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__98);
+ __Pyx_GIVEREF(__pyx_tuple__98);
+ __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__98, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pytypename, 1099, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 1099, __pyx_L1_error)
- /* "lxml/objectify.pyx":1070
+ /* "lxml/objectify.pyx":1145
* _registerPyTypes()
*
* def getRegisteredTypes(): # <<<<<<<<<<<<<<
* u"""getRegisteredTypes()
*
*/
- __pyx_tuple__68 = PyTuple_Pack(5, __pyx_n_s_types, __pyx_n_s_known, __pyx_n_s_check, __pyx_n_s_pytype, __pyx_n_s_name); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 1070, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__68);
- __Pyx_GIVEREF(__pyx_tuple__68);
- __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_getRegisteredTypes, 1070, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 1070, __pyx_L1_error)
+ __pyx_tuple__100 = PyTuple_Pack(5, __pyx_n_s_types, __pyx_n_s_known, __pyx_n_s_check, __pyx_n_s_pytype, __pyx_n_s_name); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 1145, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__100);
+ __Pyx_GIVEREF(__pyx_tuple__100);
+ __pyx_codeobj__101 = (PyObject*)__Pyx_PyCode_New(0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__100, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_getRegisteredTypes, 1145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__101)) __PYX_ERR(0, 1145, __pyx_L1_error)
- /* "lxml/objectify.pyx":1305
+ /* "lxml/objectify.pyx":1380
* cdef bint __RECURSIVE_STR = 0 # default: off
*
* def enable_recursive_str(on=True): # <<<<<<<<<<<<<<
* u"""enable_recursive_str(on=True)
*
*/
- __pyx_tuple__70 = PyTuple_Pack(1, __pyx_n_s_on); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 1305, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__70);
- __Pyx_GIVEREF(__pyx_tuple__70);
- __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_enable_recursive_str, 1305, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(0, 1305, __pyx_L1_error)
- __pyx_tuple__72 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 1305, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__72);
- __Pyx_GIVEREF(__pyx_tuple__72);
+ __pyx_tuple__102 = PyTuple_Pack(1, __pyx_n_s_on); if (unlikely(!__pyx_tuple__102)) __PYX_ERR(0, 1380, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__102);
+ __Pyx_GIVEREF(__pyx_tuple__102);
+ __pyx_codeobj__103 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__102, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_enable_recursive_str, 1380, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__103)) __PYX_ERR(0, 1380, __pyx_L1_error)
+ __pyx_tuple__104 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(0, 1380, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__104);
+ __Pyx_GIVEREF(__pyx_tuple__104);
- /* "lxml/objectify.pyx":1314
+ /* "lxml/objectify.pyx":1389
* __RECURSIVE_STR = on
*
* def dump(_Element element not None): # <<<<<<<<<<<<<<
* u"""dump(_Element element not None)
*
*/
- __pyx_tuple__73 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 1314, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__73);
- __Pyx_GIVEREF(__pyx_tuple__73);
- __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_dump, 1314, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 1314, __pyx_L1_error)
+ __pyx_tuple__105 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(0, 1389, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__105);
+ __Pyx_GIVEREF(__pyx_tuple__105);
+ __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__105, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_dump, 1389, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(0, 1389, __pyx_L1_error)
- /* "lxml/objectify.pyx":1357
+ /* "lxml/objectify.pyx":1432
* # Pickle support for objectified ElementTree
*
* def __unpickleElementTree(data): # <<<<<<<<<<<<<<
* return etree.ElementTree(fromstring(data))
*
*/
- __pyx_tuple__75 = PyTuple_Pack(1, __pyx_n_s_data); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 1357, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__75);
- __Pyx_GIVEREF(__pyx_tuple__75);
- __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_unpickleElementTree, 1357, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 1357, __pyx_L1_error)
+ __pyx_tuple__107 = PyTuple_Pack(1, __pyx_n_s_data); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 1432, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__107);
+ __Pyx_GIVEREF(__pyx_tuple__107);
+ __pyx_codeobj__108 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_unpickleElementTree, 1432, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__108)) __PYX_ERR(0, 1432, __pyx_L1_error)
- /* "lxml/objectify.pyx":1368
+ /* "lxml/objectify.pyx":1443
* elementTreeReduceFunction, __unpickleElementTree)
*
* def pickleReduceElementTree(obj): # <<<<<<<<<<<<<<
* return __unpickleElementTree, (etree.tostring(obj),)
*
*/
- __pyx_tuple__77 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 1368, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__77);
- __Pyx_GIVEREF(__pyx_tuple__77);
- __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pickleReduceElementTree, 1368, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 1368, __pyx_L1_error)
+ __pyx_tuple__109 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(0, 1443, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__109);
+ __Pyx_GIVEREF(__pyx_tuple__109);
+ __pyx_codeobj__110 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__109, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pickleReduceElementTree, 1443, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__110)) __PYX_ERR(0, 1443, __pyx_L1_error)
- /* "lxml/objectify.pyx":1462
+ /* "lxml/objectify.pyx":1537
* return None
*
* def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False, # <<<<<<<<<<<<<<
* empty_pytype=None):
* u"""pyannotate(element_or_tree, ignore_old=False, ignore_xsi=False, empty_pytype=None)
*/
- __pyx_tuple__79 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 1462, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__79);
- __Pyx_GIVEREF(__pyx_tuple__79);
- __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pyannotate, 1462, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 1462, __pyx_L1_error)
+ __pyx_tuple__111 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(0, 1537, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__111);
+ __Pyx_GIVEREF(__pyx_tuple__111);
+ __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__111, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pyannotate, 1537, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(0, 1537, __pyx_L1_error)
- /* "lxml/objectify.pyx":1485
+ /* "lxml/objectify.pyx":1560
* _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
*
* def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False, # <<<<<<<<<<<<<<
* empty_type=None):
* u"""xsiannotate(element_or_tree, ignore_old=False, ignore_pytype=False, empty_type=None)
*/
- __pyx_tuple__81 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_pytype, __pyx_n_s_empty_type, __pyx_n_s_element); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 1485, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__81);
- __Pyx_GIVEREF(__pyx_tuple__81);
- __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_xsiannotate, 1485, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 1485, __pyx_L1_error)
+ __pyx_tuple__113 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_pytype, __pyx_n_s_empty_type, __pyx_n_s_element); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(0, 1560, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__113);
+ __Pyx_GIVEREF(__pyx_tuple__113);
+ __pyx_codeobj__114 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__113, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_xsiannotate, 1560, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__114)) __PYX_ERR(0, 1560, __pyx_L1_error)
- /* "lxml/objectify.pyx":1513
+ /* "lxml/objectify.pyx":1588
* _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
*
* def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False, # <<<<<<<<<<<<<<
* empty_pytype=None, empty_type=None, annotate_xsi=0,
* annotate_pytype=1):
*/
- __pyx_tuple__83 = PyTuple_Pack(8, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_empty_type, __pyx_n_s_annotate_xsi, __pyx_n_s_annotate_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 1513, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__83);
- __Pyx_GIVEREF(__pyx_tuple__83);
- __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 6, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_annotate, 1513, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 1513, __pyx_L1_error)
+ __pyx_tuple__115 = PyTuple_Pack(8, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_empty_type, __pyx_n_s_annotate_xsi, __pyx_n_s_annotate_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(0, 1588, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__115);
+ __Pyx_GIVEREF(__pyx_tuple__115);
+ __pyx_codeobj__116 = (PyObject*)__Pyx_PyCode_New(1, 6, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_annotate, 1588, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__116)) __PYX_ERR(0, 1588, __pyx_L1_error)
- /* "lxml/objectify.pyx":1709
+ /* "lxml/objectify.pyx":1784
* cdef object _cleanup_namespaces = etree.cleanup_namespaces
*
* def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True, # <<<<<<<<<<<<<<
* bint xsi_nil=False, bint cleanup_namespaces=False):
* u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
*/
- __pyx_tuple__85 = PyTuple_Pack(6, __pyx_n_s_element_or_tree, __pyx_n_s_pytype, __pyx_n_s_xsi_2, __pyx_n_s_xsi_nil, __pyx_n_s_cleanup_namespaces, __pyx_n_s_attribute_names); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 1709, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__85);
- __Pyx_GIVEREF(__pyx_tuple__85);
- __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 4, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_deannotate, 1709, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 1709, __pyx_L1_error)
+ __pyx_tuple__117 = PyTuple_Pack(6, __pyx_n_s_element_or_tree, __pyx_n_s_pytype, __pyx_n_s_xsi_2, __pyx_n_s_xsi_nil, __pyx_n_s_cleanup_namespaces, __pyx_n_s_attribute_names); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(0, 1784, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__117);
+ __Pyx_GIVEREF(__pyx_tuple__117);
+ __pyx_codeobj__118 = (PyObject*)__Pyx_PyCode_New(1, 4, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__117, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_deannotate, 1784, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__118)) __PYX_ERR(0, 1784, __pyx_L1_error)
- /* "lxml/objectify.pyx":1749
+ /* "lxml/objectify.pyx":1824
* objectify_parser = __DEFAULT_PARSER
*
* def set_default_parser(new_parser = None): # <<<<<<<<<<<<<<
* u"""set_default_parser(new_parser = None)
*
*/
- __pyx_tuple__87 = PyTuple_Pack(1, __pyx_n_s_new_parser); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 1749, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__87);
- __Pyx_GIVEREF(__pyx_tuple__87);
- __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_set_default_parser, 1749, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 1749, __pyx_L1_error)
- __pyx_tuple__89 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 1749, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__89);
- __Pyx_GIVEREF(__pyx_tuple__89);
+ __pyx_tuple__119 = PyTuple_Pack(1, __pyx_n_s_new_parser); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__119);
+ __Pyx_GIVEREF(__pyx_tuple__119);
+ __pyx_codeobj__120 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__119, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_set_default_parser, 1824, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__120)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __pyx_tuple__121 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(0, 1824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__121);
+ __Pyx_GIVEREF(__pyx_tuple__121);
- /* "lxml/objectify.pyx":1767
+ /* "lxml/objectify.pyx":1842
* raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
*
* def makeparser(**kw): # <<<<<<<<<<<<<<
* u"""makeparser(remove_blank_text=True, **kw)
*
*/
- __pyx_tuple__90 = PyTuple_Pack(2, __pyx_n_s_kw, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 1767, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__90);
- __Pyx_GIVEREF(__pyx_tuple__90);
- __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__90, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_makeparser, 1767, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(0, 1767, __pyx_L1_error)
+ __pyx_tuple__122 = PyTuple_Pack(2, __pyx_n_s_kw, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__122)) __PYX_ERR(0, 1842, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__122);
+ __Pyx_GIVEREF(__pyx_tuple__122);
+ __pyx_codeobj__123 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__122, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_makeparser, 1842, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__123)) __PYX_ERR(0, 1842, __pyx_L1_error)
- /* "lxml/objectify.pyx":1794
+ /* "lxml/objectify.pyx":1869
* SubElement = etree.SubElement
*
* def fromstring(xml, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""fromstring(xml, parser=None, base_url=None)
*
*/
- __pyx_tuple__92 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 1794, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__92);
- __Pyx_GIVEREF(__pyx_tuple__92);
- __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__92, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_fromstring, 1794, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(0, 1794, __pyx_L1_error)
- __pyx_tuple__94 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(0, 1794, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__94);
- __Pyx_GIVEREF(__pyx_tuple__94);
+ __pyx_tuple__124 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__124)) __PYX_ERR(0, 1869, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__124);
+ __Pyx_GIVEREF(__pyx_tuple__124);
+ __pyx_codeobj__125 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__124, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_fromstring, 1869, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__125)) __PYX_ERR(0, 1869, __pyx_L1_error)
+ __pyx_tuple__126 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__126)) __PYX_ERR(0, 1869, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__126);
+ __Pyx_GIVEREF(__pyx_tuple__126);
- /* "lxml/objectify.pyx":1810
+ /* "lxml/objectify.pyx":1885
* return _fromstring(xml, parser, base_url=base_url)
*
* def XML(xml, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""XML(xml, parser=None, base_url=None)
*
*/
- __pyx_tuple__95 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 1810, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__95);
- __Pyx_GIVEREF(__pyx_tuple__95);
- __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_XML, 1810, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 1810, __pyx_L1_error)
- __pyx_tuple__97 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 1810, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__97);
- __Pyx_GIVEREF(__pyx_tuple__97);
+ __pyx_tuple__127 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__127)) __PYX_ERR(0, 1885, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__127);
+ __Pyx_GIVEREF(__pyx_tuple__127);
+ __pyx_codeobj__128 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__127, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_XML, 1885, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__128)) __PYX_ERR(0, 1885, __pyx_L1_error)
+ __pyx_tuple__129 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__129)) __PYX_ERR(0, 1885, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__129);
+ __Pyx_GIVEREF(__pyx_tuple__129);
- /* "lxml/objectify.pyx":1829
+ /* "lxml/objectify.pyx":1904
* _parse = etree.parse
*
* def parse(f, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""parse(f, parser=None, base_url=None)
*
*/
- __pyx_tuple__98 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 1829, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__98);
- __Pyx_GIVEREF(__pyx_tuple__98);
- __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__98, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_parse, 1829, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 1829, __pyx_L1_error)
- __pyx_tuple__100 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 1829, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__100);
- __Pyx_GIVEREF(__pyx_tuple__100);
+ __pyx_tuple__130 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(0, 1904, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__130);
+ __Pyx_GIVEREF(__pyx_tuple__130);
+ __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_parse, 1904, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(0, 1904, __pyx_L1_error)
+ __pyx_tuple__132 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__132)) __PYX_ERR(0, 1904, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__132);
+ __Pyx_GIVEREF(__pyx_tuple__132);
- /* "lxml/objectify.pyx":1852
+ /* "lxml/objectify.pyx":1927
* E = ElementMaker()
*
* def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes): # <<<<<<<<<<<<<<
* u"""Element(_tag, attrib=None, nsmap=None, _pytype=None, **_attributes)
*
*/
- __pyx_tuple__101 = PyTuple_Pack(5, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_attributes); if (unlikely(!__pyx_tuple__101)) __PYX_ERR(0, 1852, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__101);
- __Pyx_GIVEREF(__pyx_tuple__101);
- __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__101, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_Element, 1852, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(0, 1852, __pyx_L1_error)
- __pyx_tuple__103 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 1852, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__103);
- __Pyx_GIVEREF(__pyx_tuple__103);
+ __pyx_tuple__133 = PyTuple_Pack(5, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_attributes); if (unlikely(!__pyx_tuple__133)) __PYX_ERR(0, 1927, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__133);
+ __Pyx_GIVEREF(__pyx_tuple__133);
+ __pyx_codeobj__134 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__133, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_Element, 1927, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) __PYX_ERR(0, 1927, __pyx_L1_error)
+ __pyx_tuple__135 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__135)) __PYX_ERR(0, 1927, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__135);
+ __Pyx_GIVEREF(__pyx_tuple__135);
- /* "lxml/objectify.pyx":1872
+ /* "lxml/objectify.pyx":1947
* return _makeElement(_tag, None, _attributes, nsmap)
*
* def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None, # <<<<<<<<<<<<<<
* **_attributes):
* u"""DataElement(_value, attrib=None, nsmap=None, _pytype=None, _xsi=None, **_attributes)
*/
- __pyx_tuple__104 = PyTuple_Pack(13, __pyx_n_s_value_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_xsi_3, __pyx_n_s_attributes, __pyx_n_s_temp, __pyx_n_s_prefix, __pyx_n_s_name, __pyx_n_s_ns, __pyx_n_s_py_type, __pyx_n_s_strval, __pyx_n_s_stringify); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(0, 1872, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__104);
- __Pyx_GIVEREF(__pyx_tuple__104);
- __pyx_codeobj__105 = (PyObject*)__Pyx_PyCode_New(3, 2, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__104, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_DataElement, 1872, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(0, 1872, __pyx_L1_error)
- __pyx_tuple__106 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(0, 1872, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__106);
- __Pyx_GIVEREF(__pyx_tuple__106);
+ __pyx_tuple__136 = PyTuple_Pack(13, __pyx_n_s_value_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_xsi_3, __pyx_n_s_attributes, __pyx_n_s_temp, __pyx_n_s_prefix, __pyx_n_s_name, __pyx_n_s_ns, __pyx_n_s_py_type, __pyx_n_s_strval, __pyx_n_s_stringify); if (unlikely(!__pyx_tuple__136)) __PYX_ERR(0, 1947, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__136);
+ __Pyx_GIVEREF(__pyx_tuple__136);
+ __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(3, 2, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__136, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_DataElement, 1947, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) __PYX_ERR(0, 1947, __pyx_L1_error)
+ __pyx_tuple__138 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__138)) __PYX_ERR(0, 1947, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__138);
+ __Pyx_GIVEREF(__pyx_tuple__138);
/* "src/lxml/objectpath.pxi":57
* return _find_object_path(root, self._c_path, self._path_len, default)
* u"hasattr(self, root)"
* try:
*/
- __pyx_tuple__107 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_root); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(1, 57, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__107);
- __Pyx_GIVEREF(__pyx_tuple__107);
- __pyx_codeobj__108 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_hasattr, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__108)) __PYX_ERR(1, 57, __pyx_L1_error)
+ __pyx_tuple__139 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_root); if (unlikely(!__pyx_tuple__139)) __PYX_ERR(1, 57, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__139);
+ __Pyx_GIVEREF(__pyx_tuple__139);
+ __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_hasattr, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) __PYX_ERR(1, 57, __pyx_L1_error)
/* "src/lxml/objectpath.pxi":65
* return True
* u"""setattr(self, root, value)
*
*/
- __pyx_tuple__109 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_root, __pyx_n_s_value); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(1, 65, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__109);
- __Pyx_GIVEREF(__pyx_tuple__109);
- __pyx_codeobj__110 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__109, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_setattr, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__110)) __PYX_ERR(1, 65, __pyx_L1_error)
+ __pyx_tuple__141 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_root, __pyx_n_s_value); if (unlikely(!__pyx_tuple__141)) __PYX_ERR(1, 65, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__141);
+ __Pyx_GIVEREF(__pyx_tuple__141);
+ __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_setattr, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) __PYX_ERR(1, 65, __pyx_L1_error)
/* "src/lxml/objectpath.pxi":74
* _create_object_path(root, self._c_path, self._path_len, 1, value)
* u"""addattr(self, root, value)
*
*/
- __pyx_tuple__111 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_root, __pyx_n_s_value); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(1, 74, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__111);
- __Pyx_GIVEREF(__pyx_tuple__111);
- __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__111, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_addattr, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(1, 74, __pyx_L1_error)
+ __pyx_tuple__143 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_root, __pyx_n_s_value); if (unlikely(!__pyx_tuple__143)) __PYX_ERR(1, 74, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__143);
+ __Pyx_GIVEREF(__pyx_tuple__143);
+ __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__143, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_addattr, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) __PYX_ERR(1, 74, __pyx_L1_error)
/* "src/lxml/objectpath.pxi":88
* re.U).match
*
*
*/
- __pyx_tuple__113 = PyTuple_Pack(3, Py_None, Py_None, __pyx_int_0); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(1, 88, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__113);
- __Pyx_GIVEREF(__pyx_tuple__113);
+ __pyx_tuple__145 = PyTuple_Pack(3, Py_None, Py_None, __pyx_int_0); if (unlikely(!__pyx_tuple__145)) __PYX_ERR(1, 88, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__145);
+ __Pyx_GIVEREF(__pyx_tuple__145);
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ObjectifiedDataElement, (PyObject *)&__pyx_type_4lxml_9objectify_ObjectifiedDataElement) < 0) __PYX_ERR(0, 592, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_ObjectifiedDataElement = &__pyx_type_4lxml_9objectify_ObjectifiedDataElement;
__pyx_type_4lxml_9objectify_NumberElement.tp_base = __pyx_ptype_4lxml_9objectify_ObjectifiedDataElement;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify_NumberElement) < 0) __PYX_ERR(0, 612, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify_NumberElement) < 0) __PYX_ERR(0, 613, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify_NumberElement.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_NumberElement.tp_dictoffset && __pyx_type_4lxml_9objectify_NumberElement.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_9objectify_NumberElement.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_NumberElement, (PyObject *)&__pyx_type_4lxml_9objectify_NumberElement) < 0) __PYX_ERR(0, 612, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_NumberElement, (PyObject *)&__pyx_type_4lxml_9objectify_NumberElement) < 0) __PYX_ERR(0, 613, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_NumberElement = &__pyx_type_4lxml_9objectify_NumberElement;
__pyx_type_4lxml_9objectify_IntElement.tp_base = __pyx_ptype_4lxml_9objectify_NumberElement;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify_IntElement) < 0) __PYX_ERR(0, 709, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify_IntElement) < 0) __PYX_ERR(0, 763, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify_IntElement.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_IntElement.tp_dictoffset && __pyx_type_4lxml_9objectify_IntElement.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_9objectify_IntElement.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_IntElement, (PyObject *)&__pyx_type_4lxml_9objectify_IntElement) < 0) __PYX_ERR(0, 709, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_IntElement, (PyObject *)&__pyx_type_4lxml_9objectify_IntElement) < 0) __PYX_ERR(0, 763, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_IntElement = &__pyx_type_4lxml_9objectify_IntElement;
__pyx_type_4lxml_9objectify_LongElement.tp_base = __pyx_ptype_4lxml_9objectify_NumberElement;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify_LongElement) < 0) __PYX_ERR(0, 716, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify_LongElement) < 0) __PYX_ERR(0, 771, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify_LongElement.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_LongElement.tp_dictoffset && __pyx_type_4lxml_9objectify_LongElement.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_9objectify_LongElement.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LongElement, (PyObject *)&__pyx_type_4lxml_9objectify_LongElement) < 0) __PYX_ERR(0, 716, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LongElement, (PyObject *)&__pyx_type_4lxml_9objectify_LongElement) < 0) __PYX_ERR(0, 771, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_LongElement = &__pyx_type_4lxml_9objectify_LongElement;
__pyx_type_4lxml_9objectify_FloatElement.tp_base = __pyx_ptype_4lxml_9objectify_NumberElement;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify_FloatElement) < 0) __PYX_ERR(0, 723, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify_FloatElement) < 0) __PYX_ERR(0, 779, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify_FloatElement.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_FloatElement.tp_dictoffset && __pyx_type_4lxml_9objectify_FloatElement.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_9objectify_FloatElement.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FloatElement, (PyObject *)&__pyx_type_4lxml_9objectify_FloatElement) < 0) __PYX_ERR(0, 723, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FloatElement, (PyObject *)&__pyx_type_4lxml_9objectify_FloatElement) < 0) __PYX_ERR(0, 779, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_FloatElement = &__pyx_type_4lxml_9objectify_FloatElement;
__pyx_type_4lxml_9objectify_StringElement.tp_base = __pyx_ptype_4lxml_9objectify_ObjectifiedDataElement;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify_StringElement) < 0) __PYX_ERR(0, 727, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify_StringElement) < 0) __PYX_ERR(0, 784, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify_StringElement.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_StringElement.tp_dictoffset && __pyx_type_4lxml_9objectify_StringElement.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_9objectify_StringElement.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_StringElement, (PyObject *)&__pyx_type_4lxml_9objectify_StringElement) < 0) __PYX_ERR(0, 727, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_StringElement, (PyObject *)&__pyx_type_4lxml_9objectify_StringElement) < 0) __PYX_ERR(0, 784, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_StringElement = &__pyx_type_4lxml_9objectify_StringElement;
__pyx_type_4lxml_9objectify_NoneElement.tp_base = __pyx_ptype_4lxml_9objectify_ObjectifiedDataElement;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify_NoneElement) < 0) __PYX_ERR(0, 789, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify_NoneElement) < 0) __PYX_ERR(0, 851, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify_NoneElement.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_NoneElement.tp_dictoffset && __pyx_type_4lxml_9objectify_NoneElement.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_9objectify_NoneElement.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_NoneElement, (PyObject *)&__pyx_type_4lxml_9objectify_NoneElement) < 0) __PYX_ERR(0, 789, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_NoneElement, (PyObject *)&__pyx_type_4lxml_9objectify_NoneElement) < 0) __PYX_ERR(0, 851, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_NoneElement = &__pyx_type_4lxml_9objectify_NoneElement;
__pyx_type_4lxml_9objectify_BoolElement.tp_base = __pyx_ptype_4lxml_9objectify_IntElement;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify_BoolElement) < 0) __PYX_ERR(0, 815, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify_BoolElement) < 0) __PYX_ERR(0, 877, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify_BoolElement.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_BoolElement.tp_dictoffset && __pyx_type_4lxml_9objectify_BoolElement.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_9objectify_BoolElement.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BoolElement, (PyObject *)&__pyx_type_4lxml_9objectify_BoolElement) < 0) __PYX_ERR(0, 815, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BoolElement, (PyObject *)&__pyx_type_4lxml_9objectify_BoolElement) < 0) __PYX_ERR(0, 877, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_BoolElement = &__pyx_type_4lxml_9objectify_BoolElement;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify_PyType) < 0) __PYX_ERR(0, 901, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify_PyType) < 0) __PYX_ERR(0, 976, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify_PyType.tp_print = 0;
#endif
if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_PyType.tp_dictoffset && __pyx_type_4lxml_9objectify_PyType.tp_getattro == PyObject_GenericGetAttr)) {
__pyx_type_4lxml_9objectify_PyType.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyType, (PyObject *)&__pyx_type_4lxml_9objectify_PyType) < 0) __PYX_ERR(0, 901, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyType, (PyObject *)&__pyx_type_4lxml_9objectify_PyType) < 0) __PYX_ERR(0, 976, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_PyType = &__pyx_type_4lxml_9objectify_PyType;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller) < 0) __PYX_ERR(0, 1131, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller) < 0) __PYX_ERR(0, 1206, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller.tp_print = 0;
#endif
}
#if CYTHON_COMPILING_IN_CPYTHON
{
- PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1131, __pyx_L1_error)
+ PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1206, __pyx_L1_error)
if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
__pyx_wrapperbase_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__ = *((PyWrapperDescrObject *)wrapper)->d_base;
__pyx_wrapperbase_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__.doc = __pyx_doc_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__;
__pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller = &__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller;
__pyx_vtabptr_4lxml_9objectify_ElementMaker = &__pyx_vtable_4lxml_9objectify_ElementMaker;
__pyx_vtable_4lxml_9objectify_ElementMaker._build_element_maker = (PyObject *(*)(struct __pyx_obj_4lxml_9objectify_ElementMaker *, PyObject *, int))__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1221, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1296, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify_ElementMaker.tp_print = 0;
#endif
- if (__Pyx_SetVtable(__pyx_type_4lxml_9objectify_ElementMaker.tp_dict, __pyx_vtabptr_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1221, __pyx_L1_error)
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementMaker, (PyObject *)&__pyx_type_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1221, __pyx_L1_error)
+ if (__Pyx_SetVtable(__pyx_type_4lxml_9objectify_ElementMaker.tp_dict, __pyx_vtabptr_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1296, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementMaker, (PyObject *)&__pyx_type_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1296, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_ElementMaker = &__pyx_type_4lxml_9objectify_ElementMaker;
__pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup = __Pyx_ImportType(__pyx_t_1, "lxml.etree", "ElementClassLookup", sizeof(struct LxmlElementClassLookup), __Pyx_ImportType_CheckSize_Warn);
if (!__pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup.tp_base = __pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup;
- if (PyType_Ready(&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) __PYX_ERR(0, 1377, __pyx_L1_error)
+ if (PyType_Ready(&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) __PYX_ERR(0, 1452, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup.tp_print = 0;
#endif
}
#if CYTHON_COMPILING_IN_CPYTHON
{
- PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1377, __pyx_L1_error)
+ PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1452, __pyx_L1_error)
if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
__pyx_wrapperbase_4lxml_9objectify_27ObjectifyElementClassLookup___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
__pyx_wrapperbase_4lxml_9objectify_27ObjectifyElementClassLookup___init__.doc = __pyx_doc_4lxml_9objectify_27ObjectifyElementClassLookup___init__;
}
}
#endif
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ObjectifyElementClassLookup, (PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) __PYX_ERR(0, 1377, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ObjectifyElementClassLookup, (PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) __PYX_ERR(0, 1452, __pyx_L1_error)
__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup = &__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup;
if (PyType_Ready(&__pyx_type_4lxml_9objectify_ObjectPath) < 0) __PYX_ERR(1, 13, __pyx_L1_error)
#if PY_VERSION_HEX < 0x030800B1
#endif
/*--- Library function declarations ---*/
/*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
+ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
PyEval_InitThreads();
#endif
- #endif
/*--- Module creation code ---*/
#if CYTHON_PEP489_MULTI_PHASE_INIT
__pyx_m = __pyx_pyinit_module;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_ObjectifiedDataElement);
- /* "lxml/objectify.pyx":614
- * cdef class NumberElement(ObjectifiedDataElement):
+ /* "lxml/objectify.pyx":616
* cdef object _parse_value
+ *
* def _setValueParser(self, function): # <<<<<<<<<<<<<<
* u"""Set the function that parses the Python value from a string.
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_1_setValueParser, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement__setValueParser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 614, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_1_setValueParser, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement__setValueParser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_setValueParser, __pyx_t_1) < 0) __PYX_ERR(0, 614, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_setValueParser, __pyx_t_1) < 0) __PYX_ERR(0, 616, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
- /* "lxml/objectify.pyx":634
+ /* "lxml/objectify.pyx":636
* return float(_parseNumber(self))
*
* def __complex__(self): # <<<<<<<<<<<<<<
* return complex(_parseNumber(self))
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_9__complex__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___complex, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_9__complex__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___complex, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_complex, __pyx_t_1) < 0) __PYX_ERR(0, 634, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_complex, __pyx_t_1) < 0) __PYX_ERR(0, 636, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
- /* "lxml/objectify.pyx":710
+ /* "lxml/objectify.pyx":660
+ * return _numericValueOf(self) + _numericValueOf(other)
+ *
+ * def __radd__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) + _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_25__radd__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___radd, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_radd, __pyx_t_1) < 0) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":666
+ * return _numericValueOf(self) - _numericValueOf(other)
+ *
+ * def __rsub__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) - _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_29__rsub__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rsub, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 666, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rsub, __pyx_t_1) < 0) __PYX_ERR(0, 666, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":672
+ * return _numericValueOf(self) * _numericValueOf(other)
+ *
+ * def __rmul__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) * _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_33__rmul__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rmul, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 672, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rmul, __pyx_t_1) < 0) __PYX_ERR(0, 672, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":678
+ * return _numericValueOf(self) / _numericValueOf(other)
+ *
+ * def __rdiv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_37__rdiv__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rdiv, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rdiv, __pyx_t_1) < 0) __PYX_ERR(0, 678, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":684
+ * return _numericValueOf(self) / _numericValueOf(other)
+ *
+ * def __rtruediv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) / _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_41__rtruediv__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rtruediv, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 684, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rtruediv, __pyx_t_1) < 0) __PYX_ERR(0, 684, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":690
+ * return _numericValueOf(self) // _numericValueOf(other)
+ *
+ * def __rfloordiv__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) // _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_45__rfloordiv__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rfloordiv, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 690, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rfloordiv, __pyx_t_1) < 0) __PYX_ERR(0, 690, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":696
+ * return _numericValueOf(self) % _numericValueOf(other)
+ *
+ * def __rmod__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) % _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_49__rmod__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rmod, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rmod, __pyx_t_1) < 0) __PYX_ERR(0, 696, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":702
+ * return divmod(_numericValueOf(self), _numericValueOf(other))
+ *
+ * def __rdivmod__(self, other): # <<<<<<<<<<<<<<
+ * return divmod(_numericValueOf(other), _numericValueOf(self))
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_53__rdivmod__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rdivmod, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rdivmod, __pyx_t_1) < 0) __PYX_ERR(0, 702, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":711
+ * return pow(_numericValueOf(self), _numericValueOf(other), modulo)
+ *
+ * def __rpow__(self, other, modulo): # <<<<<<<<<<<<<<
+ * if modulo is None:
+ * return _numericValueOf(other) ** _numericValueOf(self)
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_57__rpow__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rpow, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 711, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rpow, __pyx_t_1) < 0) __PYX_ERR(0, 711, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":735
+ * return _numericValueOf(self) << _numericValueOf(other)
+ *
+ * def __rlshift__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) << _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_71__rlshift__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rlshift, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 735, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rlshift, __pyx_t_1) < 0) __PYX_ERR(0, 735, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":741
+ * return _numericValueOf(self) >> _numericValueOf(other)
+ *
+ * def __rrshift__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) >> _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_75__rrshift__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rrshift, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rrshift, __pyx_t_1) < 0) __PYX_ERR(0, 741, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":747
+ * return _numericValueOf(self) & _numericValueOf(other)
+ *
+ * def __rand__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) & _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_79__rand__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rand, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 747, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rand, __pyx_t_1) < 0) __PYX_ERR(0, 747, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":753
+ * return _numericValueOf(self) | _numericValueOf(other)
+ *
+ * def __ror__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) | _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_83__ror__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___ror, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 753, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_ror, __pyx_t_1) < 0) __PYX_ERR(0, 753, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":759
+ * return _numericValueOf(self) ^ _numericValueOf(other)
+ *
+ * def __rxor__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) ^ _numericValueOf(self)
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13NumberElement_87__rxor__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___rxor, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__71)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_rxor, __pyx_t_1) < 0) __PYX_ERR(0, 759, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_NumberElement);
+
+ /* "lxml/objectify.pyx":764
*
* cdef class IntElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
* self._parse_value = int
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_10IntElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IntElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 710, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_10IntElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IntElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 764, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 710, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 764, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_IntElement);
- /* "lxml/objectify.pyx":717
+ /* "lxml/objectify.pyx":772
*
* cdef class LongElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
* self._parse_value = long
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_11LongElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_LongElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 717, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_11LongElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_LongElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_LongElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 717, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_LongElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 772, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_LongElement);
- /* "lxml/objectify.pyx":724
+ /* "lxml/objectify.pyx":780
*
* cdef class FloatElement(NumberElement):
* def _init(self): # <<<<<<<<<<<<<<
* self._parse_value = float
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_12FloatElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FloatElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_12FloatElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FloatElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 780, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_FloatElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 724, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_FloatElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 780, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_FloatElement);
- /* "lxml/objectify.pyx":741
+ /* "lxml/objectify.pyx":798
* return repr(textOf(self._c_node) or u'')
*
* def strlen(self): # <<<<<<<<<<<<<<
* text = textOf(self._c_node)
* if text is None:
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13StringElement_3strlen, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StringElement_strlen, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13StringElement_3strlen, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StringElement_strlen, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 798, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement->tp_dict, __pyx_n_s_strlen, __pyx_t_1) < 0) __PYX_ERR(0, 741, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement->tp_dict, __pyx_n_s_strlen, __pyx_t_1) < 0) __PYX_ERR(0, 798, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_StringElement);
- /* "lxml/objectify.pyx":786
+ /* "lxml/objectify.pyx":819
+ * return text + other
+ *
+ * def __radd__(self, other): # <<<<<<<<<<<<<<
+ * text = _strValueOf(self)
+ * other = _strValueOf(other)
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13StringElement_13__radd__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StringElement___radd, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 819, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement->tp_dict, __pyx_n_s_radd, __pyx_t_1) < 0) __PYX_ERR(0, 819, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_StringElement);
+
+ /* "lxml/objectify.pyx":832
+ * return NotImplemented
+ *
+ * def __rmul__(self, other): # <<<<<<<<<<<<<<
+ * return _numericValueOf(other) * (textOf((<StringElement>self)._c_node) or '')
+ *
+ */
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13StringElement_17__rmul__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StringElement___rmul, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement->tp_dict, __pyx_n_s_rmul, __pyx_t_1) < 0) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ PyType_Modified(__pyx_ptype_4lxml_9objectify_StringElement);
+
+ /* "lxml/objectify.pyx":847
* return float(textOf(self._c_node))
*
* def __complex__(self): # <<<<<<<<<<<<<<
* return complex(textOf(self._c_node))
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13StringElement_23__complex__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StringElement___complex, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13StringElement_27__complex__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StringElement___complex, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 847, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement->tp_dict, __pyx_n_s_complex, __pyx_t_1) < 0) __PYX_ERR(0, 786, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement->tp_dict, __pyx_n_s_complex, __pyx_t_1) < 0) __PYX_ERR(0, 847, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_StringElement);
- /* "lxml/objectify.pyx":821
+ /* "lxml/objectify.pyx":883
* Python's bool type.
* """
* def _init(self): # <<<<<<<<<<<<<<
* self._parse_value = __parseBool
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_11BoolElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BoolElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 821, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_11BoolElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BoolElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_BoolElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 821, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_BoolElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_BoolElement);
- /* "lxml/objectify.pyx":843
- * return __parseBool(textOf(self._c_node))
+ /* "lxml/objectify.pyx":912
+ *
*
* def __checkBool(s): # <<<<<<<<<<<<<<
* cdef int value = -1
* if s is not None:
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_3__checkBool, 0, __pyx_n_s_checkBool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_3__checkBool, 0, __pyx_n_s_checkBool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 912, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_checkBool, __pyx_t_1) < 0) __PYX_ERR(0, 843, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_checkBool, __pyx_t_1) < 0) __PYX_ERR(0, 912, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":850
- * raise ValueError
+ /* "lxml/objectify.pyx":920
+ *
*
* cpdef bint __parseBool(s) except -1: # <<<<<<<<<<<<<<
* cdef int value
* if s is None:
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_5__parseBool, 0, __pyx_n_s_parseBool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 850, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_5__parseBool, 0, __pyx_n_s_parseBool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 920, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_parseBool, __pyx_t_1) < 0) __PYX_ERR(0, 850, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_parseBool, __pyx_t_1) < 0) __PYX_ERR(0, 920, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":948
+ /* "lxml/objectify.pyx":1023
* return "PyType(%s, %s)" % (self.name, self._type.__name__)
*
* def register(self, before=None, after=None): # <<<<<<<<<<<<<<
* u"""register(self, before=None, after=None)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_6PyType_5register, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyType_register, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 948, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_6PyType_5register, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyType_register, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__93)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_PyType->tp_dict, __pyx_n_s_register, __pyx_t_1) < 0) __PYX_ERR(0, 948, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_PyType->tp_dict, __pyx_n_s_register, __pyx_t_1) < 0) __PYX_ERR(0, 1023, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_PyType);
- /* "lxml/objectify.pyx":989
+ /* "lxml/objectify.pyx":1064
* _SCHEMA_TYPE_DICT[xs_type] = self
*
* def unregister(self): # <<<<<<<<<<<<<<
* u"unregister(self)"
* if _PYTYPE_DICT.get(self.name) is self:
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_6PyType_7unregister, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyType_unregister, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 989, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_6PyType_7unregister, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyType_unregister, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__95)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1064, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_PyType->tp_dict, __pyx_n_s_unregister, __pyx_t_1) < 0) __PYX_ERR(0, 989, __pyx_L1_error)
+ if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_PyType->tp_dict, __pyx_n_s_unregister, __pyx_t_1) < 0) __PYX_ERR(0, 1064, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
PyType_Modified(__pyx_ptype_4lxml_9objectify_PyType);
- /* "lxml/objectify.pyx":1014
+ /* "lxml/objectify.pyx":1089
*
*
* cdef dict _PYTYPE_DICT = {} # <<<<<<<<<<<<<<
* cdef dict _SCHEMA_TYPE_DICT = {}
* cdef list _TYPE_CHECKS = []
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_v_4lxml_9objectify__PYTYPE_DICT);
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__PYTYPE_DICT, ((PyObject*)__pyx_t_1));
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1015
+ /* "lxml/objectify.pyx":1090
*
* cdef dict _PYTYPE_DICT = {}
* cdef dict _SCHEMA_TYPE_DICT = {} # <<<<<<<<<<<<<<
* cdef list _TYPE_CHECKS = []
*
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1090, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT);
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, ((PyObject*)__pyx_t_1));
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1016
+ /* "lxml/objectify.pyx":1091
* cdef dict _PYTYPE_DICT = {}
* cdef dict _SCHEMA_TYPE_DICT = {}
* cdef list _TYPE_CHECKS = [] # <<<<<<<<<<<<<<
*
* def __lower_bool(b):
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1016, __pyx_L1_error)
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_v_4lxml_9objectify__TYPE_CHECKS);
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__TYPE_CHECKS, ((PyObject*)__pyx_t_1));
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1018
+ /* "lxml/objectify.pyx":1093
* cdef list _TYPE_CHECKS = []
*
* def __lower_bool(b): # <<<<<<<<<<<<<<
* return u"true" if b else u"false"
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_7__lower_bool, 0, __pyx_n_s_lower_bool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1018, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_7__lower_bool, 0, __pyx_n_s_lower_bool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__97)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_lower_bool, __pyx_t_1) < 0) __PYX_ERR(0, 1018, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_lower_bool, __pyx_t_1) < 0) __PYX_ERR(0, 1093, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1024
+ /* "lxml/objectify.pyx":1099
* return u"str" if python._isString(obj) else _typename(obj)
*
* def pytypename(obj): # <<<<<<<<<<<<<<
* u"""pytypename(obj)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_9pytypename, 0, __pyx_n_s_pytypename, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1024, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_9pytypename, 0, __pyx_n_s_pytypename, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pytypename, __pyx_t_1) < 0) __PYX_ERR(0, 1024, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pytypename, __pyx_t_1) < 0) __PYX_ERR(0, 1099, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1066
+ /* "lxml/objectify.pyx":1141
*
* # non-registered PyType for inner tree elements
* cdef PyType TREE_PYTYPE = PyType(TREE_PYTYPE_NAME, None, ObjectifiedElement) # <<<<<<<<<<<<<<
*
* _registerPyTypes()
*/
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
__Pyx_GIVEREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
__Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
__Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
- __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1066, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_9objectify_TREE_PYTYPE));
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1068
+ /* "lxml/objectify.pyx":1143
* cdef PyType TREE_PYTYPE = PyType(TREE_PYTYPE_NAME, None, ObjectifiedElement)
*
* _registerPyTypes() # <<<<<<<<<<<<<<
*
* def getRegisteredTypes():
*/
- __pyx_t_2 = __pyx_f_4lxml_9objectify__registerPyTypes(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1068, __pyx_L1_error)
+ __pyx_t_2 = __pyx_f_4lxml_9objectify__registerPyTypes(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1143, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1070
+ /* "lxml/objectify.pyx":1145
* _registerPyTypes()
*
* def getRegisteredTypes(): # <<<<<<<<<<<<<<
* u"""getRegisteredTypes()
*
*/
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_11getRegisteredTypes, 0, __pyx_n_s_getRegisteredTypes, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1070, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_11getRegisteredTypes, 0, __pyx_n_s_getRegisteredTypes, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__101)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1145, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_getRegisteredTypes, __pyx_t_2) < 0) __PYX_ERR(0, 1070, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_getRegisteredTypes, __pyx_t_2) < 0) __PYX_ERR(0, 1145, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1303
+ /* "lxml/objectify.pyx":1378
* # Recursive element dumping
*
* cdef bint __RECURSIVE_STR = 0 # default: off # <<<<<<<<<<<<<<
*/
__pyx_v_4lxml_9objectify___RECURSIVE_STR = 0;
- /* "lxml/objectify.pyx":1305
+ /* "lxml/objectify.pyx":1380
* cdef bint __RECURSIVE_STR = 0 # default: off
*
* def enable_recursive_str(on=True): # <<<<<<<<<<<<<<
* u"""enable_recursive_str(on=True)
*
*/
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13enable_recursive_str, 0, __pyx_n_s_enable_recursive_str, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__71)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1305, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_13enable_recursive_str, 0, __pyx_n_s_enable_recursive_str, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__103)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1380, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__72);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_enable_recursive_str, __pyx_t_2) < 0) __PYX_ERR(0, 1305, __pyx_L1_error)
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__104);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_enable_recursive_str, __pyx_t_2) < 0) __PYX_ERR(0, 1380, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1314
+ /* "lxml/objectify.pyx":1389
* __RECURSIVE_STR = on
*
* def dump(_Element element not None): # <<<<<<<<<<<<<<
* u"""dump(_Element element not None)
*
*/
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_15dump, 0, __pyx_n_s_dump, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1314, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_15dump, 0, __pyx_n_s_dump, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1389, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump, __pyx_t_2) < 0) __PYX_ERR(0, 1314, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump, __pyx_t_2) < 0) __PYX_ERR(0, 1389, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1357
+ /* "lxml/objectify.pyx":1432
* # Pickle support for objectified ElementTree
*
* def __unpickleElementTree(data): # <<<<<<<<<<<<<<
* return etree.ElementTree(fromstring(data))
*
*/
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_17__unpickleElementTree, 0, __pyx_n_s_unpickleElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__76)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_17__unpickleElementTree, 0, __pyx_n_s_unpickleElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__108)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1432, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_unpickleElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 1357, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_unpickleElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 1432, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1368
+ /* "lxml/objectify.pyx":1443
* elementTreeReduceFunction, __unpickleElementTree)
*
* def pickleReduceElementTree(obj): # <<<<<<<<<<<<<<
* return __unpickleElementTree, (etree.tostring(obj),)
*
*/
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_19pickleReduceElementTree, 0, __pyx_n_s_pickleReduceElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1368, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_19pickleReduceElementTree, 0, __pyx_n_s_pickleReduceElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__110)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1443, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickleReduceElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 1368, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickleReduceElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 1443, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1371
+ /* "lxml/objectify.pyx":1446
* return __unpickleElementTree, (etree.tostring(obj),)
*
* _setupPickle(pickleReduceElementTree) # <<<<<<<<<<<<<<
* del pickleReduceElementTree
*
*/
- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pickleReduceElementTree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1371, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pickleReduceElementTree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1446, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __pyx_f_4lxml_9objectify__setupPickle(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1371, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_4lxml_9objectify__setupPickle(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1446, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1372
+ /* "lxml/objectify.pyx":1447
*
* _setupPickle(pickleReduceElementTree)
* del pickleReduceElementTree # <<<<<<<<<<<<<<
*
* ################################################################################
*/
- if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_pickleReduceElementTree) < 0) __PYX_ERR(0, 1372, __pyx_L1_error)
+ if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_pickleReduceElementTree) < 0) __PYX_ERR(0, 1447, __pyx_L1_error)
- /* "lxml/objectify.pyx":1462
+ /* "lxml/objectify.pyx":1537
* return None
*
* def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False, # <<<<<<<<<<<<<<
* empty_pytype=None):
* u"""pyannotate(element_or_tree, ignore_old=False, ignore_xsi=False, empty_pytype=None)
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1462, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1537, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1462, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1462, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1462, __pyx_L1_error)
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_21pyannotate, 0, __pyx_n_s_pyannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1462, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1537, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1537, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1537, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_21pyannotate, 0, __pyx_n_s_pyannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__112)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1537, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyannotate, __pyx_t_2) < 0) __PYX_ERR(0, 1462, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyannotate, __pyx_t_2) < 0) __PYX_ERR(0, 1537, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1485
+ /* "lxml/objectify.pyx":1560
* _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
*
* def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False, # <<<<<<<<<<<<<<
* empty_type=None):
* u"""xsiannotate(element_or_tree, ignore_old=False, ignore_pytype=False, empty_type=None)
*/
- __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1485, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1560, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1485, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_pytype, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1485, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1485, __pyx_L1_error)
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_23xsiannotate, 0, __pyx_n_s_xsiannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1485, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1560, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_pytype, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1560, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1560, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_23xsiannotate, 0, __pyx_n_s_xsiannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__114)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1560, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_xsiannotate, __pyx_t_1) < 0) __PYX_ERR(0, 1485, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_xsiannotate, __pyx_t_1) < 0) __PYX_ERR(0, 1560, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1513
+ /* "lxml/objectify.pyx":1588
* _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
*
* def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False, # <<<<<<<<<<<<<<
* empty_pytype=None, empty_type=None, annotate_xsi=0,
* annotate_pytype=1):
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1513, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1588, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_old, ((PyObject *)Py_True)) < 0) __PYX_ERR(0, 1513, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1513, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1513, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1513, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_annotate_xsi, ((PyObject *)__pyx_int_0)) < 0) __PYX_ERR(0, 1513, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_annotate_pytype, ((PyObject *)__pyx_int_1)) < 0) __PYX_ERR(0, 1513, __pyx_L1_error)
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_25annotate, 0, __pyx_n_s_annotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1513, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_old, ((PyObject *)Py_True)) < 0) __PYX_ERR(0, 1588, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1588, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1588, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1588, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_annotate_xsi, ((PyObject *)__pyx_int_0)) < 0) __PYX_ERR(0, 1588, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_annotate_pytype, ((PyObject *)__pyx_int_1)) < 0) __PYX_ERR(0, 1588, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_25annotate, 0, __pyx_n_s_annotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__116)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1588, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_annotate, __pyx_t_2) < 0) __PYX_ERR(0, 1513, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_annotate, __pyx_t_2) < 0) __PYX_ERR(0, 1588, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1706
+ /* "lxml/objectify.pyx":1781
* return 0
*
* cdef object _strip_attributes = etree.strip_attributes # <<<<<<<<<<<<<<
* cdef object _cleanup_namespaces = etree.cleanup_namespaces
*
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_strip_attributes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1706, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_strip_attributes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1781, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_v_4lxml_9objectify__strip_attributes);
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__strip_attributes, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1707
+ /* "lxml/objectify.pyx":1782
*
* cdef object _strip_attributes = etree.strip_attributes
* cdef object _cleanup_namespaces = etree.cleanup_namespaces # <<<<<<<<<<<<<<
*
* def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_cleanup_namespaces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1707, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_cleanup_namespaces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1782, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_v_4lxml_9objectify__cleanup_namespaces);
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__cleanup_namespaces, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1709
+ /* "lxml/objectify.pyx":1784
* cdef object _cleanup_namespaces = etree.cleanup_namespaces
*
* def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True, # <<<<<<<<<<<<<<
* bint xsi_nil=False, bint cleanup_namespaces=False):
* u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
*/
- __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1709, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1784, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1784, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pytype, __pyx_t_1) < 0) __PYX_ERR(0, 1709, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pytype, __pyx_t_1) < 0) __PYX_ERR(0, 1784, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1784, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_2, __pyx_t_1) < 0) __PYX_ERR(0, 1709, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_2, __pyx_t_1) < 0) __PYX_ERR(0, 1784, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1710
+ /* "lxml/objectify.pyx":1785
*
* def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,
* bint xsi_nil=False, bint cleanup_namespaces=False): # <<<<<<<<<<<<<<
* u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
*
*/
- __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1710, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1785, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_nil, __pyx_t_1) < 0) __PYX_ERR(0, 1709, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_nil, __pyx_t_1) < 0) __PYX_ERR(0, 1784, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1710, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1785, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_cleanup_namespaces, __pyx_t_1) < 0) __PYX_ERR(0, 1709, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_cleanup_namespaces, __pyx_t_1) < 0) __PYX_ERR(0, 1784, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1709
+ /* "lxml/objectify.pyx":1784
* cdef object _cleanup_namespaces = etree.cleanup_namespaces
*
* def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True, # <<<<<<<<<<<<<<
* bint xsi_nil=False, bint cleanup_namespaces=False):
* u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_27deannotate, 0, __pyx_n_s_deannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_27deannotate, 0, __pyx_n_s_deannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__118)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1784, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_deannotate, __pyx_t_1) < 0) __PYX_ERR(0, 1709, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_deannotate, __pyx_t_1) < 0) __PYX_ERR(0, 1784, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1743
+ /* "lxml/objectify.pyx":1818
*
* cdef object __DEFAULT_PARSER
* __DEFAULT_PARSER = etree.XMLParser(remove_blank_text=True) # <<<<<<<<<<<<<<
* __DEFAULT_PARSER.set_element_class_lookup( ObjectifyElementClassLookup() )
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1743, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1818, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1743, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1818, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_remove_blank_text, Py_True) < 0) __PYX_ERR(0, 1743, __pyx_L1_error)
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1743, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_remove_blank_text, Py_True) < 0) __PYX_ERR(0, 1818, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1818, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_4 = 0;
- /* "lxml/objectify.pyx":1744
+ /* "lxml/objectify.pyx":1819
* cdef object __DEFAULT_PARSER
* __DEFAULT_PARSER = etree.XMLParser(remove_blank_text=True)
* __DEFAULT_PARSER.set_element_class_lookup( ObjectifyElementClassLookup() ) # <<<<<<<<<<<<<<
*
* cdef object objectify_parser
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify___DEFAULT_PARSER, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1744, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify___DEFAULT_PARSER, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1819, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1744, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1819, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1744, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1819, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1747
+ /* "lxml/objectify.pyx":1822
*
* cdef object objectify_parser
* objectify_parser = __DEFAULT_PARSER # <<<<<<<<<<<<<<
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_4lxml_9objectify___DEFAULT_PARSER);
__Pyx_GIVEREF(__pyx_v_4lxml_9objectify___DEFAULT_PARSER);
- /* "lxml/objectify.pyx":1749
+ /* "lxml/objectify.pyx":1824
* objectify_parser = __DEFAULT_PARSER
*
* def set_default_parser(new_parser = None): # <<<<<<<<<<<<<<
* u"""set_default_parser(new_parser = None)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_29set_default_parser, 0, __pyx_n_s_set_default_parser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1749, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_29set_default_parser, 0, __pyx_n_s_set_default_parser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__120)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1824, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__89);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_1) < 0) __PYX_ERR(0, 1749, __pyx_L1_error)
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__121);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_1) < 0) __PYX_ERR(0, 1824, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1767
+ /* "lxml/objectify.pyx":1842
* raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
*
* def makeparser(**kw): # <<<<<<<<<<<<<<
* u"""makeparser(remove_blank_text=True, **kw)
*
*/
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_31makeparser, 0, __pyx_n_s_makeparser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1767, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_31makeparser, 0, __pyx_n_s_makeparser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__123)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1842, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_makeparser, __pyx_t_1) < 0) __PYX_ERR(0, 1767, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_makeparser, __pyx_t_1) < 0) __PYX_ERR(0, 1842, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1790
+ /* "lxml/objectify.pyx":1865
*
* cdef object _fromstring
* _fromstring = etree.fromstring # <<<<<<<<<<<<<<
*
* SubElement = etree.SubElement
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1790, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1865, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_v_4lxml_9objectify__fromstring);
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1792
+ /* "lxml/objectify.pyx":1867
* _fromstring = etree.fromstring
*
* SubElement = etree.SubElement # <<<<<<<<<<<<<<
*
* def fromstring(xml, parser=None, *, base_url=None):
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_SubElement); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1792, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_SubElement); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1867, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_1) < 0) __PYX_ERR(0, 1792, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_1) < 0) __PYX_ERR(0, 1867, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1794
+ /* "lxml/objectify.pyx":1869
* SubElement = etree.SubElement
*
* def fromstring(xml, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""fromstring(xml, parser=None, base_url=None)
*
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1794, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1869, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1794, __pyx_L1_error)
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_33fromstring, 0, __pyx_n_s_fromstring, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__93)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1794, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1869, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_33fromstring, 0, __pyx_n_s_fromstring, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__125)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1869, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__94);
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__126);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstring, __pyx_t_2) < 0) __PYX_ERR(0, 1794, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstring, __pyx_t_2) < 0) __PYX_ERR(0, 1869, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1810
+ /* "lxml/objectify.pyx":1885
* return _fromstring(xml, parser, base_url=base_url)
*
* def XML(xml, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""XML(xml, parser=None, base_url=None)
*
*/
- __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1810, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1885, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1810, __pyx_L1_error)
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_35XML, 0, __pyx_n_s_XML, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1810, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1885, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_35XML, 0, __pyx_n_s_XML, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__128)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1885, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__97);
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__129);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_XML, __pyx_t_1) < 0) __PYX_ERR(0, 1810, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_XML, __pyx_t_1) < 0) __PYX_ERR(0, 1885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1827
+ /* "lxml/objectify.pyx":1902
*
* cdef object _parse
* _parse = etree.parse # <<<<<<<<<<<<<<
*
* def parse(f, parser=None, *, base_url=None):
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_parse); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1827, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_parse); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1902, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_v_4lxml_9objectify__parse);
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__parse, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1829
+ /* "lxml/objectify.pyx":1904
* _parse = etree.parse
*
* def parse(f, parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""parse(f, parser=None, base_url=None)
*
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1829, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1904, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1829, __pyx_L1_error)
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_37parse, 0, __pyx_n_s_parse, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1829, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1904, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_37parse, 0, __pyx_n_s_parse, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1904, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__100);
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__132);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse, __pyx_t_2) < 0) __PYX_ERR(0, 1829, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse, __pyx_t_2) < 0) __PYX_ERR(0, 1904, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1845
+ /* "lxml/objectify.pyx":1920
*
* cdef dict _DEFAULT_NSMAP = {
* "py" : PYTYPE_NAMESPACE, # <<<<<<<<<<<<<<
* "xsi" : XML_SCHEMA_INSTANCE_NS,
* "xsd" : XML_SCHEMA_NS
*/
- __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1845, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1920, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_py_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE) < 0) __PYX_ERR(0, 1845, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_py_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE) < 0) __PYX_ERR(0, 1920, __pyx_L1_error)
- /* "lxml/objectify.pyx":1846
+ /* "lxml/objectify.pyx":1921
* cdef dict _DEFAULT_NSMAP = {
* "py" : PYTYPE_NAMESPACE,
* "xsi" : XML_SCHEMA_INSTANCE_NS, # <<<<<<<<<<<<<<
* "xsd" : XML_SCHEMA_NS
* }
*/
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS) < 0) __PYX_ERR(0, 1845, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS) < 0) __PYX_ERR(0, 1920, __pyx_L1_error)
- /* "lxml/objectify.pyx":1847
+ /* "lxml/objectify.pyx":1922
* "py" : PYTYPE_NAMESPACE,
* "xsi" : XML_SCHEMA_INSTANCE_NS,
* "xsd" : XML_SCHEMA_NS # <<<<<<<<<<<<<<
* }
*
*/
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsd_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS) < 0) __PYX_ERR(0, 1845, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsd_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS) < 0) __PYX_ERR(0, 1920, __pyx_L1_error)
__Pyx_XGOTREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
__Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP, ((PyObject*)__pyx_t_2));
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1850
+ /* "lxml/objectify.pyx":1925
* }
*
* E = ElementMaker() # <<<<<<<<<<<<<<
*
* def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):
*/
- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ElementMaker)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1850, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ElementMaker)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1925, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_E, __pyx_t_2) < 0) __PYX_ERR(0, 1850, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_E, __pyx_t_2) < 0) __PYX_ERR(0, 1925, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "lxml/objectify.pyx":1852
+ /* "lxml/objectify.pyx":1927
* E = ElementMaker()
*
* def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes): # <<<<<<<<<<<<<<
* u"""Element(_tag, attrib=None, nsmap=None, _pytype=None, **_attributes)
*
*/
- __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1852, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1927, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1852, __pyx_L1_error)
- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_39Element, 0, __pyx_n_s_Element, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1852, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1927, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_39Element, 0, __pyx_n_s_Element, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__134)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1927, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__103);
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__135);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Element, __pyx_t_1) < 0) __PYX_ERR(0, 1852, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Element, __pyx_t_1) < 0) __PYX_ERR(0, 1927, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "lxml/objectify.pyx":1872
+ /* "lxml/objectify.pyx":1947
* return _makeElement(_tag, None, _attributes, nsmap)
*
* def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None, # <<<<<<<<<<<<<<
* **_attributes):
* u"""DataElement(_value, attrib=None, nsmap=None, _pytype=None, _xsi=None, **_attributes)
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1872, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1947, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1872, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_3, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1872, __pyx_L1_error)
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_41DataElement, 0, __pyx_n_s_DataElement, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__105)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1872, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1947, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_3, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1947, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_41DataElement, 0, __pyx_n_s_DataElement, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__137)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1947, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__106);
+ __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__138);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_DataElement, __pyx_t_2) < 0) __PYX_ERR(0, 1872, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_DataElement, __pyx_t_2) < 0) __PYX_ERR(0, 1947, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "src/lxml/objectpath.pxi":10
* u"hasattr(self, root)"
* try:
*/
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_10ObjectPath_9hasattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_hasattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__108)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 57, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_10ObjectPath_9hasattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_hasattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__140)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 57, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectPath->tp_dict, __pyx_n_s_hasattr, __pyx_t_2) < 0) __PYX_ERR(1, 57, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
* u"""setattr(self, root, value)
*
*/
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_10ObjectPath_11setattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_setattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__110)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 65, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_10ObjectPath_11setattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_setattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__142)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 65, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectPath->tp_dict, __pyx_n_s_setattr, __pyx_t_2) < 0) __PYX_ERR(1, 65, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
* u"""addattr(self, root, value)
*
*/
- __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_10ObjectPath_13addattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_addattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__112)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 74, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_9objectify_10ObjectPath_13addattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_addattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__144)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 74, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectPath->tp_dict, __pyx_n_s_addattr, __pyx_t_2) < 0) __PYX_ERR(1, 74, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
*
*
*/
- __Pyx_INCREF(__pyx_tuple__113);
+ __Pyx_INCREF(__pyx_tuple__145);
__Pyx_XGOTREF(__pyx_v_4lxml_9objectify__RELATIVE_PATH_SEGMENT);
- __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__RELATIVE_PATH_SEGMENT, __pyx_tuple__113);
- __Pyx_GIVEREF(__pyx_tuple__113);
+ __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__RELATIVE_PATH_SEGMENT, __pyx_tuple__145);
+ __Pyx_GIVEREF(__pyx_tuple__145);
/* "lxml/objectify.pyx":1
* # cython: binding=True # <<<<<<<<<<<<<<
Py_CLEAR(__pyx_tuple__70);
Py_CLEAR(__pyx_codeobj__71);
Py_CLEAR(__pyx_tuple__72);
- Py_CLEAR(__pyx_tuple__73);
- Py_CLEAR(__pyx_codeobj__74);
- Py_CLEAR(__pyx_tuple__75);
- Py_CLEAR(__pyx_codeobj__76);
- Py_CLEAR(__pyx_tuple__77);
- Py_CLEAR(__pyx_codeobj__78);
- Py_CLEAR(__pyx_tuple__79);
- Py_CLEAR(__pyx_codeobj__80);
- Py_CLEAR(__pyx_tuple__81);
- Py_CLEAR(__pyx_codeobj__82);
- Py_CLEAR(__pyx_tuple__83);
- Py_CLEAR(__pyx_codeobj__84);
- Py_CLEAR(__pyx_tuple__85);
- Py_CLEAR(__pyx_codeobj__86);
- Py_CLEAR(__pyx_tuple__87);
- Py_CLEAR(__pyx_codeobj__88);
- Py_CLEAR(__pyx_tuple__89);
+ Py_CLEAR(__pyx_codeobj__73);
+ Py_CLEAR(__pyx_tuple__74);
+ Py_CLEAR(__pyx_codeobj__75);
+ Py_CLEAR(__pyx_tuple__76);
+ Py_CLEAR(__pyx_codeobj__77);
+ Py_CLEAR(__pyx_tuple__78);
+ Py_CLEAR(__pyx_codeobj__79);
+ Py_CLEAR(__pyx_tuple__80);
+ Py_CLEAR(__pyx_codeobj__81);
+ Py_CLEAR(__pyx_tuple__82);
+ Py_CLEAR(__pyx_codeobj__83);
+ Py_CLEAR(__pyx_tuple__84);
+ Py_CLEAR(__pyx_codeobj__85);
+ Py_CLEAR(__pyx_tuple__86);
+ Py_CLEAR(__pyx_codeobj__87);
+ Py_CLEAR(__pyx_tuple__88);
+ Py_CLEAR(__pyx_codeobj__89);
Py_CLEAR(__pyx_tuple__90);
Py_CLEAR(__pyx_codeobj__91);
Py_CLEAR(__pyx_tuple__92);
Py_CLEAR(__pyx_codeobj__93);
Py_CLEAR(__pyx_tuple__94);
- Py_CLEAR(__pyx_tuple__95);
- Py_CLEAR(__pyx_codeobj__96);
- Py_CLEAR(__pyx_tuple__97);
+ Py_CLEAR(__pyx_codeobj__95);
+ Py_CLEAR(__pyx_tuple__96);
+ Py_CLEAR(__pyx_codeobj__97);
Py_CLEAR(__pyx_tuple__98);
Py_CLEAR(__pyx_codeobj__99);
Py_CLEAR(__pyx_tuple__100);
- Py_CLEAR(__pyx_tuple__101);
- Py_CLEAR(__pyx_codeobj__102);
- Py_CLEAR(__pyx_tuple__103);
+ Py_CLEAR(__pyx_codeobj__101);
+ Py_CLEAR(__pyx_tuple__102);
+ Py_CLEAR(__pyx_codeobj__103);
Py_CLEAR(__pyx_tuple__104);
- Py_CLEAR(__pyx_codeobj__105);
- Py_CLEAR(__pyx_tuple__106);
+ Py_CLEAR(__pyx_tuple__105);
+ Py_CLEAR(__pyx_codeobj__106);
Py_CLEAR(__pyx_tuple__107);
Py_CLEAR(__pyx_codeobj__108);
Py_CLEAR(__pyx_tuple__109);
Py_CLEAR(__pyx_tuple__111);
Py_CLEAR(__pyx_codeobj__112);
Py_CLEAR(__pyx_tuple__113);
+ Py_CLEAR(__pyx_codeobj__114);
+ Py_CLEAR(__pyx_tuple__115);
+ Py_CLEAR(__pyx_codeobj__116);
+ Py_CLEAR(__pyx_tuple__117);
+ Py_CLEAR(__pyx_codeobj__118);
+ Py_CLEAR(__pyx_tuple__119);
+ Py_CLEAR(__pyx_codeobj__120);
+ Py_CLEAR(__pyx_tuple__121);
+ Py_CLEAR(__pyx_tuple__122);
+ Py_CLEAR(__pyx_codeobj__123);
+ Py_CLEAR(__pyx_tuple__124);
+ Py_CLEAR(__pyx_codeobj__125);
+ Py_CLEAR(__pyx_tuple__126);
+ Py_CLEAR(__pyx_tuple__127);
+ Py_CLEAR(__pyx_codeobj__128);
+ Py_CLEAR(__pyx_tuple__129);
+ Py_CLEAR(__pyx_tuple__130);
+ Py_CLEAR(__pyx_codeobj__131);
+ Py_CLEAR(__pyx_tuple__132);
+ Py_CLEAR(__pyx_tuple__133);
+ Py_CLEAR(__pyx_codeobj__134);
+ Py_CLEAR(__pyx_tuple__135);
+ Py_CLEAR(__pyx_tuple__136);
+ Py_CLEAR(__pyx_codeobj__137);
+ Py_CLEAR(__pyx_tuple__138);
+ Py_CLEAR(__pyx_tuple__139);
+ Py_CLEAR(__pyx_codeobj__140);
+ Py_CLEAR(__pyx_tuple__141);
+ Py_CLEAR(__pyx_codeobj__142);
+ Py_CLEAR(__pyx_tuple__143);
+ Py_CLEAR(__pyx_codeobj__144);
+ Py_CLEAR(__pyx_tuple__145);
/* CodeObjectCache.cleanup */
if (__pyx_code_cache.entries) {
__Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
Py_CLEAR(__pyx_builtin_AttributeError);
Py_CLEAR(__pyx_builtin_oct);
Py_CLEAR(__pyx_builtin_hex);
+ Py_CLEAR(__pyx_builtin_NotImplemented);
Py_CLEAR(__pyx_builtin_enumerate);
Py_CLEAR(__pyx_builtin_map);
Py_CLEAR(__pyx_builtin_MemoryError);
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
- ternaryfunc call = func->ob_type->tp_call;
+ ternaryfunc call = Py_TYPE(func)->tp_call;
if (unlikely(!call))
return PyObject_Call(func, arg, kw);
if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
result = PyFrozenSet_New(it);
if (unlikely(!result))
return NULL;
- if (likely(PySet_GET_SIZE(result)))
+ if ((PY_VERSION_HEX >= 0x031000A1) || likely(PySet_GET_SIZE(result)))
return result;
Py_DECREF(result);
#endif
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
- return PyUnicode_FromString(m->func.m_ml->ml_name);
+ Py_INCREF(m->func_qualname);
+ return m->func_qualname;
#else
return PyString_FromString(m->func.m_ml->ml_name);
#endif
"""
cetree.setNodeText(self._c_node, s)
+
cdef class NumberElement(ObjectifiedDataElement):
cdef object _parse_value
+
def _setValueParser(self, function):
u"""Set the function that parses the Python value from a string.
def __add__(self, other):
return _numericValueOf(self) + _numericValueOf(other)
+ def __radd__(self, other):
+ return _numericValueOf(other) + _numericValueOf(self)
+
def __sub__(self, other):
return _numericValueOf(self) - _numericValueOf(other)
+ def __rsub__(self, other):
+ return _numericValueOf(other) - _numericValueOf(self)
+
def __mul__(self, other):
return _numericValueOf(self) * _numericValueOf(other)
+ def __rmul__(self, other):
+ return _numericValueOf(other) * _numericValueOf(self)
+
def __div__(self, other):
return _numericValueOf(self) / _numericValueOf(other)
+ def __rdiv__(self, other):
+ return _numericValueOf(other) / _numericValueOf(self)
+
def __truediv__(self, other):
return _numericValueOf(self) / _numericValueOf(other)
+ def __rtruediv__(self, other):
+ return _numericValueOf(other) / _numericValueOf(self)
+
+ def __floordiv__(self, other):
+ return _numericValueOf(self) // _numericValueOf(other)
+
+ def __rfloordiv__(self, other):
+ return _numericValueOf(other) // _numericValueOf(self)
+
def __mod__(self, other):
return _numericValueOf(self) % _numericValueOf(other)
+ def __rmod__(self, other):
+ return _numericValueOf(other) % _numericValueOf(self)
+
+ def __divmod__(self, other):
+ return divmod(_numericValueOf(self), _numericValueOf(other))
+
+ def __rdivmod__(self, other):
+ return divmod(_numericValueOf(other), _numericValueOf(self))
+
def __pow__(self, other, modulo):
if modulo is None:
return _numericValueOf(self) ** _numericValueOf(other)
else:
return pow(_numericValueOf(self), _numericValueOf(other), modulo)
+ def __rpow__(self, other, modulo):
+ if modulo is None:
+ return _numericValueOf(other) ** _numericValueOf(self)
+ else:
+ return pow(_numericValueOf(other), _numericValueOf(self), modulo)
+
def __neg__(self):
return - _numericValueOf(self)
def __abs__(self):
return abs( _numericValueOf(self) )
- def __nonzero__(self):
+ def __bool__(self):
return bool(_numericValueOf(self))
def __invert__(self):
def __lshift__(self, other):
return _numericValueOf(self) << _numericValueOf(other)
+ def __rlshift__(self, other):
+ return _numericValueOf(other) << _numericValueOf(self)
+
def __rshift__(self, other):
return _numericValueOf(self) >> _numericValueOf(other)
+ def __rrshift__(self, other):
+ return _numericValueOf(other) >> _numericValueOf(self)
+
def __and__(self, other):
return _numericValueOf(self) & _numericValueOf(other)
+ def __rand__(self, other):
+ return _numericValueOf(other) & _numericValueOf(self)
+
def __or__(self, other):
return _numericValueOf(self) | _numericValueOf(other)
+ def __ror__(self, other):
+ return _numericValueOf(other) | _numericValueOf(self)
+
def __xor__(self, other):
return _numericValueOf(self) ^ _numericValueOf(other)
+ def __rxor__(self, other):
+ return _numericValueOf(other) ^ _numericValueOf(self)
+
+
cdef class IntElement(NumberElement):
def _init(self):
self._parse_value = int
def __index__(self):
return int(_parseNumber(self))
+
cdef class LongElement(NumberElement):
def _init(self):
self._parse_value = long
def __index__(self):
return int(_parseNumber(self))
+
cdef class FloatElement(NumberElement):
def _init(self):
self._parse_value = float
+
cdef class StringElement(ObjectifiedDataElement):
u"""String data class.
else:
return len(text)
- def __nonzero__(self):
+ def __bool__(self):
return bool(textOf(self._c_node))
def __richcmp__(self, other, int op):
def __add__(self, other):
text = _strValueOf(self)
other = _strValueOf(other)
- if text is None:
- return other
- if other is None:
- return text
return text + other
+ def __radd__(self, other):
+ text = _strValueOf(self)
+ other = _strValueOf(other)
+ return other + text
+
def __mul__(self, other):
if isinstance(self, StringElement):
- return textOf((<StringElement>self)._c_node) * _numericValueOf(other)
+ return (textOf((<StringElement>self)._c_node) or '') * _numericValueOf(other)
elif isinstance(other, StringElement):
- return _numericValueOf(self) * textOf((<StringElement>other)._c_node)
+ return _numericValueOf(self) * (textOf((<StringElement>other)._c_node) or '')
else:
- raise TypeError, u"invalid types for * operator"
+ return NotImplemented
+
+ def __rmul__(self, other):
+ return _numericValueOf(other) * (textOf((<StringElement>self)._c_node) or '')
def __mod__(self, other):
- return _strValueOf(self) % other
+ return (_strValueOf(self) or '') % other
def __int__(self):
return int(textOf(self._c_node))
def __complex__(self):
return complex(textOf(self._c_node))
+
cdef class NoneElement(ObjectifiedDataElement):
def __str__(self):
return u"None"
def __repr__(self):
return "None"
- def __nonzero__(self):
+ def __bool__(self):
return False
def __richcmp__(self, other, int op):
def _init(self):
self._parse_value = __parseBool
- def __nonzero__(self):
+ def __bool__(self):
return __parseBool(textOf(self._c_node))
+ def __int__(self):
+ return 0 + __parseBool(textOf(self._c_node))
+
+ def __float__(self):
+ return 0.0 + __parseBool(textOf(self._c_node))
+
def __richcmp__(self, other, int op):
return _richcmpPyvals(self, other, op)
def pyval(self):
return __parseBool(textOf(self._c_node))
+
def __checkBool(s):
cdef int value = -1
if s is not None:
if value == -1:
raise ValueError
+
cpdef bint __parseBool(s) except -1:
cdef int value
if s is None:
raise ValueError, f"Invalid boolean value: '{s}'"
return value
+
cdef inline int __parseBoolAsInt(text) except -2:
if text == 'false':
return 0
return 1
return -1
+
cdef object _parseNumber(NumberElement element):
return element._parse_value(textOf(element._c_node))
+
cdef object _strValueOf(obj):
if python._isString(obj):
return obj
return u''
return unicode(obj)
+
cdef object _numericValueOf(obj):
if isinstance(obj, NumberElement):
return _parseNumber(<NumberElement>obj)
pass
return obj
+
cdef _richcmpPyvals(left, right, int op):
left = getattr(left, 'pyval', left)
right = getattr(right, 'pyval', right)
-/* Generated by Cython 0.29.22 */
+/* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata
{
"distutils": {
"define_macros": [
[
- "CYTHON_CLINE_IN_TRACEBACK",
+ "CYTHON_CLINE_IN_TRACEBACK",
"0"
]
- ],
- "extra_compile_args": [
- "-w"
- ],
+ ],
"include_dirs": [
- "/usr/include/libxml2",
- "src",
+ "/usr/include/libxml2",
+ "src",
"src/lxml/includes"
- ],
- "name": "lxml.sax",
+ ],
+ "name": "lxml.sax",
"sources": [
"src/lxml/sax.py"
]
- },
+ },
"module_name": "lxml.sax"
}
END: Cython Metadata */
+#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
+#endif /* PY_SSIZE_T_CLEAN */
#include "Python.h"
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_29_22"
-#define CYTHON_HEX_VERSION 0x001D16F0
+#define CYTHON_ABI "0_29_24"
+#define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
#define CYTHON_PEP393_ENABLED 1
+ #if defined(PyUnicode_IS_READY)
#define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
0 : _PyUnicode_Ready((PyObject *)(op)))
+ #else
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #endif
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
#define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
#if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
#else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
#endif
#endif
/*--- Library function declarations ---*/
/*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
+ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
PyEval_InitThreads();
#endif
- #endif
/*--- Module creation code ---*/
#if CYTHON_PEP489_MULTI_PHASE_INIT
__pyx_m = __pyx_pyinit_module;
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
- ternaryfunc call = func->ob_type->tp_call;
+ ternaryfunc call = Py_TYPE(func)->tp_call;
if (unlikely(!call))
return PyObject_Call(func, arg, kw);
if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
- return PyUnicode_FromString(m->func.m_ml->ml_name);
+ Py_INCREF(m->func_qualname);
+ return m->func_qualname;
#else
return PyString_FromString(m->func.m_ml->ml_name);
#endif
needs_conversion = 1
if needs_conversion:
- text = python.PyUnicode_DecodeUTF8(
- <const_char*>c_text, tree.xmlBufferLength(c_buffer), 'strict')
+ text = (<const_char*>c_text)[:tree.xmlBufferLength(c_buffer)].decode('utf8')
if encoding is not unicode:
encoding = _utf8(encoding)
text = python.PyUnicode_AsEncodedString(
--- /dev/null
+"""
+Fuzzes the lxml.etree.XML function with the Atheris fuzzer.
+
+The goal is to catch unhandled exceptions and potential
+memory corruption issues in auto-generated code.
+"""
+
+import atheris
+import sys
+
+from lxml import etree
+
+
+def test_etree_xml(data):
+ fdp = atheris.FuzzedDataProvider(data)
+ try:
+ etree.XML(fdp.ConsumeUnicode(sys.maxsize))
+ except etree.XMLSyntaxError:
+ pass
+ return
+
+
+if __name__ == "__main__":
+ atheris.Setup(sys.argv, test_etree_xml, enable_python_coverage=True)
+ atheris.Fuzz()
self.assertEqual(etree.tostring(doc),
_bytes(data))
+ def test_entity_system_url(self):
+ xml = etree.parse(BytesIO('<!DOCTYPE test [ <!ENTITY TestReference SYSTEM "./foo.bar"> ]><a/>'))
+ self.assertEqual(xml.docinfo.internalDTD.entities()[0].system_url, "./foo.bar")
+
+ def test_entity_system_url_none(self):
+ xml = etree.parse(BytesIO('<!DOCTYPE test [ <!ENTITY TestReference "testvalue"> ]><a/>'))
+ self.assertEqual(xml.docinfo.internalDTD.entities()[0].system_url, None)
+
def test_suite():
suite = unittest.TestSuite()
def test_html_prefix_nsmap(self):
etree = self.etree
el = etree.HTML('<hha:page-description>aa</hha:page-description>').find('.//page-description')
- self.assertEqual({'hha': None}, el.nsmap)
+ if etree.LIBXML_VERSION < (2, 9, 11):
+ self.assertEqual({'hha': None}, el.nsmap)
+ else:
+ self.assertEqual({}, el.nsmap)
def test_getchildren(self):
Element = self.etree.Element
# Set up tracing before we start importing things
cov = None
if cfg.run_tests and cfg.coverage:
- from coverage import coverage
- cov = coverage(omit=['test.py'])
+ from coverage import Coverage
+ cov = Coverage(omit=['test.py'])
# Finding and importing
test_files = get_test_files(cfg)
SDIST=$1
PACKAGE=$(basename ${SDIST%-*})
SDIST_PREFIX=$(basename ${SDIST%%.tar.gz})
+[ -z "$PYTHON_BUILD_VERSION" ] && PYTHON_BUILD_VERSION="*"
build_wheel() {
pybin="$1"
[ -n "$source" ] || source=/io
env STATIC_DEPS=true \
+ RUN_TESTS=true \
LDFLAGS="$LDFLAGS -fPIC" \
CFLAGS="$CFLAGS -fPIC" \
${pybin}/pip \
run_tests() {
# Install packages and test
- for PYBIN in /opt/python/*/bin/; do
+ for PYBIN in /opt/python/${PYTHON_BUILD_VERSION}/bin/; do
${PYBIN}/python -m pip install $PACKAGE --no-index -f /io/$WHEELHOUSE || exit 1
# check import as a quick test
FIRST=
SECOND=
THIRD=
- for PYBIN in /opt/python/*/bin; do
+ for PYBIN in /opt/python/${PYTHON_BUILD_VERSION}/bin; do
# Install build requirements if we need them and file exists
test -n "$source" -o ! -e "$REQUIREMENTS" \
|| ${PYBIN}/python -m pip install -r "$REQUIREMENTS"