<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.7: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.8.1: http://docutils.sourceforge.net/" />
<title>lxml changelog</title>
</head>
<h1 class="title">lxml changelog</h1>
<div class="section" id="id1">
-<h1>2.3.4 (2012-03-26)</h1>
+<h1>2.3.5 (2012-07-31)</h1>
<div class="section" id="features-added">
<h2>Features added</h2>
</div>
<div class="section" id="bugs-fixed">
<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="other-changes">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id2">
+<h1>2.3.4 (2012-03-26)</h1>
+<div class="section" id="id3">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id4">
+<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="other-changes">
+<div class="section" id="id5">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id2">
+<div class="section" id="id6">
<h1>2.3.3 (2012-01-04)</h1>
-<div class="section" id="id3">
+<div class="section" id="id7">
<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="id4">
+<div class="section" id="id8">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Fixed a crash when using <tt class="docutils literal">iterparse()</tt> for HTML parsing and
'img' tags without 'src' attribute.</li>
</ul>
</div>
-<div class="section" id="id5">
+<div class="section" id="id9">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id6">
+<div class="section" id="id10">
<h1>2.3.2 (2011-11-11)</h1>
-<div class="section" id="id7">
+<div class="section" id="id11">
<h2>Features added</h2>
<ul class="simple">
<li><tt class="docutils literal">lxml.objectify.deannotate()</tt> has a new boolean option
of <tt class="docutils literal">lxml.etree</tt> on the user side.</li>
</ul>
</div>
-<div class="section" id="id8">
+<div class="section" id="id12">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Fixed the "descendant" bug in cssselect a second time (after a first
"div>* .foo" instead of "div>.foo". Patch by Simon Sapin.</li>
</ul>
</div>
-<div class="section" id="id9">
+<div class="section" id="id13">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id10">
+<div class="section" id="id14">
<h1>2.3.1 (2011-09-25)</h1>
-<div class="section" id="id11">
+<div class="section" id="id15">
<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
as the user is not expected to keep a reference to it.</li>
</ul>
</div>
-<div class="section" id="id12">
+<div class="section" id="id16">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>HTML cleaning didn't remove 'data:' links.</li>
field properly selects them and unselects them.</li>
</ul>
</div>
-<div class="section" id="id13">
+<div class="section" id="id17">
<h2>Other changes</h2>
<ul class="simple">
<li>Static builds can specify the download directory with the
</ul>
</div>
</div>
-<div class="section" id="id14">
+<div class="section" id="id18">
<h1>2.3 (2011-02-06)</h1>
-<div class="section" id="id15">
+<div class="section" id="id19">
<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="id16">
+<div class="section" id="id20">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>When finished reading from a file-like object, the parser
<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="id17">
+<div class="section" id="id21">
<h2>Other changes</h2>
<ul class="simple">
<li>Some public functions in the Cython-level C-API have more explicit
</div>
<div class="section" id="beta1-2010-09-06">
<h1>2.3beta1 (2010-09-06)</h1>
-<div class="section" id="id18">
+<div class="section" id="id22">
<h2>Features added</h2>
</div>
-<div class="section" id="id19">
+<div class="section" id="id23">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Crash in newer libxml2 versions when moving elements between
use of os.tempnam. It now takes an optional 'encoding' parameter.</li>
</ul>
</div>
-<div class="section" id="id20">
+<div class="section" id="id24">
<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="id21">
+<div class="section" id="id25">
<h2>Features added</h2>
</div>
-<div class="section" id="id22">
+<div class="section" id="id26">
<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="id23">
+<div class="section" id="id27">
<h2>Other changes</h2>
<ul class="simple">
<li><tt class="docutils literal">repr()</tt> of Element objects shows the hex ID with leading 0x
</div>
<div class="section" id="alpha1-2010-06-19">
<h1>2.3alpha1 (2010-06-19)</h1>
-<div class="section" id="id24">
+<div class="section" id="id28">
<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>
(compatible with ElementTree).</li>
</ul>
</div>
-<div class="section" id="id25">
+<div class="section" id="id29">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>API is hardened against invalid proxy instances to prevent crashes
called after parsing, regardless of the outcome.</li>
</ul>
</div>
-<div class="section" id="id26">
+<div class="section" id="id30">
<h2>Other changes</h2>
<ul class="simple">
<li>Official support for Python 3.1.2 and later.</li>
</ul>
</div>
</div>
-<div class="section" id="id27">
+<div class="section" id="id31">
<h1>2.2.8 (2010-09-02)</h1>
-<div class="section" id="id28">
+<div class="section" id="id32">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Crash in newer libxml2 versions when moving elements between
</ul>
</div>
</div>
-<div class="section" id="id29">
+<div class="section" id="id33">
<h1>2.2.7 (2010-07-24)</h1>
-<div class="section" id="id30">
+<div class="section" id="id34">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Crash in XSLT when generating text-only result documents with a
</ul>
</div>
</div>
-<div class="section" id="id31">
+<div class="section" id="id35">
<h1>2.2.6 (2010-03-02)</h1>
-<div class="section" id="id32">
+<div class="section" id="id36">
<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="id33">
+<div class="section" id="id37">
<h1>2.2.5 (2010-02-28)</h1>
-<div class="section" id="id34">
+<div class="section" id="id38">
<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="id35">
+<div class="section" id="id39">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Crash in XPath evaluation when reading smart strings from a document
</ul>
</div>
</div>
-<div class="section" id="id36">
+<div class="section" id="id40">
<h1>2.2.4 (2009-11-11)</h1>
-<div class="section" id="id37">
+<div class="section" id="id41">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Static build of libxml2/libxslt was broken.</li>
</ul>
</div>
</div>
-<div class="section" id="id38">
+<div class="section" id="id42">
<h1>2.2.3 (2009-10-30)</h1>
-<div class="section" id="id39">
+<div class="section" id="id43">
<h2>Features added</h2>
</div>
-<div class="section" id="id40">
+<div class="section" id="id44">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
<li>Diverting the error logging to Python's logging system was broken.</li>
</ul>
</div>
-<div class="section" id="id41">
+<div class="section" id="id45">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id42">
+<div class="section" id="id46">
<h1>2.2.2 (2009-06-21)</h1>
-<div class="section" id="id43">
+<div class="section" id="id47">
<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>,
from a subtree.</li>
</ul>
</div>
-<div class="section" id="id44">
+<div class="section" id="id48">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Namespace cleanup on subtree insertions could result in missing
behaviour.</li>
</ul>
</div>
-<div class="section" id="id45">
+<div class="section" id="id49">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id46">
+<div class="section" id="id50">
<h1>2.2.1 (2009-06-02)</h1>
-<div class="section" id="id47">
+<div class="section" id="id51">
<h2>Features added</h2>
<ul class="simple">
<li>Injecting default attributes into a document during XML Schema
restrictions imposed by libxml2 2.7.</li>
</ul>
</div>
-<div class="section" id="id48">
+<div class="section" id="id52">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>The script for statically building libxml2 and libxslt didn't work
for parsing (which could lead to a crash before release 2.6.24).</li>
</ul>
</div>
-<div class="section" id="id49">
+<div class="section" id="id53">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id50">
+<div class="section" id="id54">
<h1>2.2 (2009-03-21)</h1>
-<div class="section" id="id51">
+<div class="section" id="id55">
<h2>Features added</h2>
<ul class="simple">
<li>Support for <tt class="docutils literal">standalone</tt> flag in XML declaration through
on serialisation.</li>
</ul>
</div>
-<div class="section" id="id52">
+<div class="section" id="id56">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Crash when parsing an XML Schema with external imports from a
</div>
<div class="section" id="beta4-2009-02-27">
<h1>2.2beta4 (2009-02-27)</h1>
-<div class="section" id="id53">
+<div class="section" id="id57">
<h2>Features added</h2>
<ul class="simple">
<li>Support strings and instantiable Element classes as child arguments
objects.</li>
</ul>
</div>
-<div class="section" id="id54">
+<div class="section" id="id58">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Deep-copying an ElementTree copied neither its sibling PIs and
was evaluated incorrectly.</li>
</ul>
</div>
-<div class="section" id="id55">
+<div class="section" id="id59">
<h2>Other changes</h2>
<ul class="simple">
<li>Official support for Python 3.0.1.</li>
</div>
<div class="section" id="beta3-2009-02-17">
<h1>2.2beta3 (2009-02-17)</h1>
-<div class="section" id="id56">
+<div class="section" id="id60">
<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="id57">
+<div class="section" id="id61">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Memory leak in XPath evaluators.</li>
<li>Minor fixes for Python 3.</li>
</ul>
</div>
-<div class="section" id="id58">
+<div class="section" id="id62">
<h2>Other changes</h2>
<ul class="simple">
<li>The global error log (which is copied into the exception log) is now
</div>
<div class="section" id="beta2-2009-01-25">
<h1>2.2beta2 (2009-01-25)</h1>
-<div class="section" id="id59">
+<div class="section" id="id63">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Potential memory leak on exception handling. This was due to a
</ul>
</div>
</div>
-<div class="section" id="id60">
+<div class="section" id="id64">
<h1>2.1.5 (2009-01-06)</h1>
-<div class="section" id="id61">
+<div class="section" id="id65">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Potential memory leak on exception handling. This was due to a
</div>
<div class="section" id="beta1-2008-12-12">
<h1>2.2beta1 (2008-12-12)</h1>
-<div class="section" id="id62">
+<div class="section" id="id66">
<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="id63">
+<div class="section" id="id67">
<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="id64">
+<div class="section" id="id68">
<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="id65">
+<div class="section" id="id69">
<h1>2.1.4 (2008-12-12)</h1>
-<div class="section" id="id66">
+<div class="section" id="id70">
<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="id67">
+<div class="section" id="id71">
<h1>2.0.11 (2008-12-12)</h1>
-<div class="section" id="id68">
+<div class="section" id="id72">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Crash when using an XPath evaluator in multiple threads.</li>
</div>
<div class="section" id="alpha1-2008-11-23">
<h1>2.2alpha1 (2008-11-23)</h1>
-<div class="section" id="id69">
+<div class="section" id="id73">
<h2>Features added</h2>
<ul class="simple">
<li>Support for XSLT result tree fragments in XPath/XSLT extension
<li>Instantiating a custom Element classes creates a new Element.</li>
</ul>
</div>
-<div class="section" id="id70">
+<div class="section" id="id74">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>XSLT didn't inherit the parse options of the input document.</li>
with Wikipedia links).</li>
</ul>
</div>
-<div class="section" id="id71">
+<div class="section" id="id75">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id72">
+<div class="section" id="id76">
<h1>2.1.3 (2008-11-17)</h1>
-<div class="section" id="id73">
+<div class="section" id="id77">
<h2>Features added</h2>
</div>
-<div class="section" id="id74">
+<div class="section" id="id78">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Ref-count leaks when lxml enters a try-except statement while an
<li>Overriding the parser encoding didn't work for many encodings.</li>
</ul>
</div>
-<div class="section" id="id75">
+<div class="section" id="id79">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id76">
+<div class="section" id="id80">
<h1>2.0.10 (2008-11-17)</h1>
-<div class="section" id="id77">
+<div class="section" id="id81">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Ref-count leaks when lxml enters a try-except statement while an
</ul>
</div>
</div>
-<div class="section" id="id78">
+<div class="section" id="id82">
<h1>2.1.2 (2008-09-05)</h1>
-<div class="section" id="id79">
+<div class="section" id="id83">
<h2>Features added</h2>
<ul class="simple">
<li>lxml.etree now tries to find the absolute path name of files when
of the source document.</li>
</ul>
</div>
-<div class="section" id="id80">
+<div class="section" id="id84">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Memory problem when passing documents between threads.</li>
exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
</ul>
</div>
-<div class="section" id="id81">
+<div class="section" id="id85">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id82">
+<div class="section" id="id86">
<h1>2.0.9 (2008-09-05)</h1>
-<div class="section" id="id83">
+<div class="section" id="id87">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Memory problem when passing documents between threads.</li>
</ul>
</div>
</div>
-<div class="section" id="id84">
+<div class="section" id="id88">
<h1>2.1.1 (2008-07-24)</h1>
-<div class="section" id="id85">
+<div class="section" id="id89">
<h2>Features added</h2>
</div>
-<div class="section" id="id86">
+<div class="section" id="id90">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Crash when parsing XSLT stylesheets in a thread and using them in
Python 3.</li>
</ul>
</div>
-<div class="section" id="id87">
+<div class="section" id="id91">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id88">
+<div class="section" id="id92">
<h1>2.0.8 (2008-07-24)</h1>
-<div class="section" id="id89">
+<div class="section" id="id93">
<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="id90">
+<div class="section" id="id94">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Crash when parsing XSLT stylesheets in a thread and using them in
with parameters.</li>
</ul>
</div>
-<div class="section" id="id91">
+<div class="section" id="id95">
<h2>Other changes</h2>
</div>
</div>
-<div class="section" id="id92">
+<div class="section" id="id96">
<h1>2.1 (2008-07-09)</h1>
-<div class="section" id="id93">
+<div class="section" id="id97">
<h2>Features added</h2>
<ul class="simple">
<li>Smart strings can be switched off in XPath (<tt class="docutils literal">smart_strings</tt>
with whitespace in URL attributes.</li>
</ul>
</div>
-<div class="section" id="id94">
+<div class="section" id="id98">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Custom resolvers were not used for XMLSchema includes/imports and
with parameters.</li>
</ul>
</div>
-<div class="section" id="id95">
+<div class="section" id="id99">
<h2>Other changes</h2>
<ul class="simple">
<li><tt class="docutils literal">objectify.enableRecursiveStr()</tt> was removed, use
</ul>
</div>
</div>
-<div class="section" id="id96">
+<div class="section" id="id100">
<h1>2.0.7 (2008-06-20)</h1>
-<div class="section" id="id97">
+<div class="section" id="id101">
<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="id98">
+<div class="section" id="id102">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Descending dot-separated classes in CSS selectors were not resolved
the super class is not called from Python subclasses.</li>
</ul>
</div>
-<div class="section" id="id99">
+<div class="section" id="id103">
<h2>Other changes</h2>
<ul class="simple">
<li>Non-ASCII characters in attribute values are no longer escaped on
</div>
<div class="section" id="beta3-2008-06-19">
<h1>2.1beta3 (2008-06-19)</h1>
-<div class="section" id="id100">
+<div class="section" id="id104">
<h2>Features added</h2>
<ul class="simple">
<li>Major overhaul of <tt class="docutils literal">tools/xpathgrep.py</tt> script.</li>
(experimental).</li>
</ul>
</div>
-<div class="section" id="id101">
+<div class="section" id="id105">
<h2>Bugs fixed</h2>
<ul class="simple">
<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
<li>Rare crash when serialising to a file object with certain encodings.</li>
</ul>
</div>
-<div class="section" id="id102">
+<div class="section" id="id106">
<h2>Other changes</h2>
<ul class="simple">
<li>Non-ASCII characters in attribute values are no longer escaped on
</ul>
</div>
</div>
-<div class="section" id="id103">
+<div class="section" id="id107">
<h1>2.0.6 (2008-05-31)</h1>
-<div class="section" id="id104">
+<div class="section" id="id108">
<h2>Features added</h2>
</div>
-<div class="section" id="id105">
+<div class="section" id="id109">
<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>Rare crash when serialising to a file object with certain encodings.</li>
</ul>
</div>
-<div class="section" id="id106">
+<div class="section" id="id110">
<h2>Other changes</h2>
<ul class="simple">
<li>lxml should now build without problems on MacOS-X.</li>
</div>
<div class="section" id="beta2-2008-05-02">
<h1>2.1beta2 (2008-05-02)</h1>
-<div class="section" id="id107">
+<div class="section" id="id111">
<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>
pre-configured for the lxml.html package.</li>
</ul>
</div>
-<div class="section" id="id108">
+<div class="section" id="id112">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Moving a subtree from a document created in one thread into a
of more than one prefix for a namespace on the same Element.</li>
</ul>
</div>
-<div class="section" id="id109">
+<div class="section" id="id113">
<h2>Other changes</h2>
<ul class="simple">
<li>If the default namespace is redundantly defined with a prefix on the
</ul>
</div>
</div>
-<div class="section" id="id110">
+<div class="section" id="id114">
<h1>2.0.5 (2008-05-01)</h1>
-<div class="section" id="id111">
+<div class="section" id="id115">
<h2>Features added</h2>
</div>
-<div class="section" id="id112">
+<div class="section" id="id116">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Resolving to a filename in custom resolvers didn't work.</li>
<li>Memory leak in Schematron with libxml2 >= 2.6.31.</li>
</ul>
</div>
-<div class="section" id="id113">
+<div class="section" id="id117">
<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="id114">
+<div class="section" id="id118">
<h2>Features added</h2>
<ul class="simple">
<li>Error logging in Schematron (requires libxml2 2.6.32 or later).</li>
<li><tt class="docutils literal">CDATA()</tt> factory to wrap string content as CDATA section.</li>
</ul>
</div>
-<div class="section" id="id115">
+<div class="section" id="id119">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Resolving to a filename in custom resolvers didn't work.</li>
<li>lxml.etree accepted non well-formed namespace prefix names.</li>
</ul>
</div>
-<div class="section" id="id116">
+<div class="section" id="id120">
<h2>Other changes</h2>
<ul class="simple">
<li>Major cleanup in internal <tt class="docutils literal">moveNodeToDocument()</tt> function, which
</ul>
</div>
</div>
-<div class="section" id="id117">
+<div class="section" id="id121">
<h1>2.0.4 (2008-04-13)</h1>
-<div class="section" id="id118">
+<div class="section" id="id122">
<h2>Features added</h2>
</div>
-<div class="section" id="id119">
+<div class="section" id="id123">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Hanging thread in conjunction with GTK threading.</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="id120">
+<div class="section" id="id124">
<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="id121">
+<div class="section" id="id125">
<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">docinfo.URL</tt> property is writable.</li>
</ul>
</div>
-<div class="section" id="id122">
+<div class="section" id="id126">
<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="id123">
+<div class="section" id="id127">
<h2>Other changes</h2>
<ul class="simple">
<li>Minor API speed-ups.</li>
</ul>
</div>
</div>
-<div class="section" id="id124">
+<div class="section" id="id128">
<h1>2.0.3 (2008-03-26)</h1>
-<div class="section" id="id125">
+<div class="section" id="id129">
<h2>Features added</h2>
<ul class="simple">
<li>soupparser.parse() allows passing keyword arguments on to
<li><tt class="docutils literal">fromstring()</tt> method in <tt class="docutils literal">lxml.html.soupparser</tt>.</li>
</ul>
</div>
-<div class="section" id="id126">
+<div class="section" id="id130">
<h2>Bugs fixed</h2>
<ul class="simple">
<li><tt class="docutils literal">lxml.html.diff</tt> didn't treat empty tags properly (e.g.,
correctly serialise the value to a string.</li>
</ul>
</div>
-<div class="section" id="id127">
+<div class="section" id="id131">
<h2>Other changes</h2>
<ul class="simple">
<li><tt class="docutils literal">lxml.html.ElementSoup</tt> was replaced by a new module
</ul>
</div>
</div>
-<div class="section" id="id128">
+<div class="section" id="id132">
<h1>2.0.2 (2008-02-22)</h1>
-<div class="section" id="id129">
+<div class="section" id="id133">
<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="id130">
+<div class="section" id="id134">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>The prefix for objectify's pytype namespace was missing from the set
<li>Slice deletion bug fixed in objectify.</li>
</ul>
</div>
-<div class="section" id="id131">
+<div class="section" id="id135">
<h2>Other changes</h2>
<ul class="simple">
<li>Enabled doctests for some Python modules (especially <tt class="docutils literal">lxml.html</tt>).</li>
</ul>
</div>
</div>
-<div class="section" id="id132">
+<div class="section" id="id136">
<h1>2.0.1 (2008-02-13)</h1>
-<div class="section" id="id133">
+<div class="section" id="id137">
<h2>Features added</h2>
<ul class="simple">
<li>Child iteration in <tt class="docutils literal">lxml.pyclasslookup</tt>.</li>
methods to make them visible in API docs and <tt class="docutils literal">help()</tt></li>
</ul>
</div>
-<div class="section" id="id134">
+<div class="section" id="id138">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>The module <tt class="docutils literal">lxml.html.builder</tt> was duplicated as
elements at the wrong position.</li>
</ul>
</div>
-<div class="section" id="id135">
+<div class="section" id="id139">
<h2>Other changes</h2>
<ul class="simple">
<li>The generated API documentation was cleaned up and disburdened from
</ul>
</div>
</div>
-<div class="section" id="id136">
+<div class="section" id="id140">
<h1>2.0 (2008-02-01)</h1>
-<div class="section" id="id137">
+<div class="section" id="id141">
<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
<li>EXSLT RegExp support in standard XPath (not only XSLT)</li>
</ul>
</div>
-<div class="section" id="id138">
+<div class="section" id="id142">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Missing import in <tt class="docutils literal">lxml.html.clean</tt>.</li>
<li>Thread safety in XPath evaluators</li>
</ul>
</div>
-<div class="section" id="id139">
+<div class="section" id="id143">
<h2>Other changes</h2>
<ul class="simple">
<li>Exceptions carry only the part of the error log that is related to
</ul>
</div>
</div>
-<div class="section" id="id140">
+<div class="section" id="id144">
<h1>1.3.6 (2007-10-29)</h1>
-<div class="section" id="id141">
+<div class="section" id="id145">
<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="id142">
+<div class="section" id="id146">
<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>
</ul>
</div>
</div>
-<div class="section" id="id143">
+<div class="section" id="id147">
<h1>1.3.5 (2007-10-22)</h1>
-<div class="section" id="id144">
+<div class="section" id="id148">
<h2>Features added</h2>
</div>
-<div class="section" id="id145">
+<div class="section" id="id149">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>lxml.etree could crash when adding more than 10000 namespaces to a
</ul>
</div>
</div>
-<div class="section" id="id146">
+<div class="section" id="id150">
<h1>1.3.4 (2007-08-30)</h1>
-<div class="section" id="id147">
+<div class="section" id="id151">
<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
root node.</li>
</ul>
</div>
-<div class="section" id="id148">
+<div class="section" id="id152">
<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="id149">
+<div class="section" id="id153">
<h2>Other changes</h2>
<ul class="simple">
<li>lxml now raises a TagNameWarning about tag names containing ':' instead of
</ul>
</div>
</div>
-<div class="section" id="id150">
+<div class="section" id="id154">
<h1>1.3.3 (2007-07-26)</h1>
-<div class="section" id="id151">
+<div class="section" id="id155">
<h2>Features added</h2>
<ul class="simple">
<li>ElementTree compatible parser <tt class="docutils literal">ETCompatXMLParser</tt> strips processing
<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="id152">
+<div class="section" id="id156">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Parsing from Python Unicode strings failed on some platforms</li>
</ul>
</div>
</div>
-<div class="section" id="id153">
+<div class="section" id="id157">
<h1>1.3.2 (2007-07-03)</h1>
-<div class="section" id="id154">
+<div class="section" id="id158">
<h2>Features added</h2>
</div>
-<div class="section" id="id155">
+<div class="section" id="id159">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>"deallocating None" crash bug</li>
</ul>
</div>
</div>
-<div class="section" id="id156">
+<div class="section" id="id160">
<h1>1.3.1 (2007-07-02)</h1>
-<div class="section" id="id157">
+<div class="section" id="id161">
<h2>Features added</h2>
<ul class="simple">
<li>objectify.DataElement now supports setting values from existing data
<li>E-factory support for lxml.objectify (<tt class="docutils literal">objectify.E</tt>)</li>
</ul>
</div>
-<div class="section" id="id158">
+<div class="section" id="id162">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Better way to prevent crashes in Element proxy cleanup code</li>
</ul>
</div>
</div>
-<div class="section" id="id159">
+<div class="section" id="id163">
<h1>1.3 (2007-06-24)</h1>
-<div class="section" id="id160">
+<div class="section" id="id164">
<h2>Features added</h2>
<ul class="simple">
<li>Module <tt class="docutils literal">lxml.pyclasslookup</tt> module implements an Element class lookup
a better handling of namespaces when moving elements between documents.</li>
</ul>
</div>
-<div class="section" id="id161">
+<div class="section" id="id165">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Removing Elements from a tree could make them loose their namespace
documents</li>
</ul>
</div>
-<div class="section" id="id162">
+<div class="section" id="id166">
<h2>Other changes</h2>
<ul class="simple">
<li>major restructuring in the documentation</li>
</ul>
</div>
</div>
-<div class="section" id="id163">
+<div class="section" id="id167">
<h1>1.2.1 (2007-02-27)</h1>
-<div class="section" id="id164">
+<div class="section" id="id168">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Build fixes for MS compiler</li>
</ul>
</div>
</div>
-<div class="section" id="id165">
+<div class="section" id="id169">
<h1>1.2 (2007-02-20)</h1>
-<div class="section" id="id166">
+<div class="section" id="id170">
<h2>Features added</h2>
<ul class="simple">
<li>Rich comparison of QName objects</li>
shadowed.</li>
</ul>
</div>
-<div class="section" id="id167">
+<div class="section" id="id171">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Element instantiation now uses locks to prevent race conditions with threads</li>
<li>Element.find*() did not accept QName objects as path</li>
</ul>
</div>
-<div class="section" id="id168">
+<div class="section" id="id172">
<h2>Other changes</h2>
<ul class="simple">
<li>code cleanup: redundant _NodeBase super class merged into _Element class
</ul>
</div>
</div>
-<div class="section" id="id169">
+<div class="section" id="id173">
<h1>1.1.2 (2006-10-30)</h1>
-<div class="section" id="id170">
+<div class="section" id="id174">
<h2>Features added</h2>
<ul class="simple">
<li>Data elements in objectify support repr(), which is now used by dump()</li>
<li>Simplified support for handling XSLT processing instructions</li>
</ul>
</div>
-<div class="section" id="id171">
+<div class="section" id="id175">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Parser resources were not freed before the next parser run</li>
</ul>
</div>
</div>
-<div class="section" id="id172">
+<div class="section" id="id176">
<h1>1.1.1 (2006-09-21)</h1>
-<div class="section" id="id173">
+<div class="section" id="id177">
<h2>Features added</h2>
<ul class="simple">
<li>XSLT profiling support (<tt class="docutils literal">profile_run</tt> keyword)</li>
<li>Support custom elements for tree nodes in lxml.objectify</li>
</ul>
</div>
-<div class="section" id="id174">
+<div class="section" id="id178">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>lxml.objectify failed to support long data values (e.g., "123L")</li>
</ul>
</div>
</div>
-<div class="section" id="id175">
+<div class="section" id="id179">
<h1>1.1 (2006-09-13)</h1>
-<div class="section" id="id176">
+<div class="section" id="id180">
<h2>Features added</h2>
<ul class="simple">
<li>Comments and processing instructions return '<!-- coment -->' and
element</li>
</ul>
</div>
-<div class="section" id="id177">
+<div class="section" id="id181">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>filenames with local 8-bit encoding were not supported</li>
</ul>
</div>
</div>
-<div class="section" id="id178">
+<div class="section" id="id182">
<h1>1.0.4 (2006-09-09)</h1>
-<div class="section" id="id179">
+<div class="section" id="id183">
<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="id180">
+<div class="section" id="id184">
<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="id181">
+<div class="section" id="id185">
<h1>1.0.3 (2006-08-08)</h1>
-<div class="section" id="id182">
+<div class="section" id="id186">
<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="id183">
+<div class="section" id="id187">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Crash when mixing elements from XSLT results into other trees</li>
</ul>
</div>
</div>
-<div class="section" id="id184">
+<div class="section" id="id188">
<h1>1.0.2 (2006-06-27)</h1>
-<div class="section" id="id185">
+<div class="section" id="id189">
<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="id186">
+<div class="section" id="id190">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Rare exceptions in Python list functions were not handled</li>
</ul>
</div>
</div>
-<div class="section" id="id187">
+<div class="section" id="id191">
<h1>1.0.1 (2006-06-09)</h1>
-<div class="section" id="id188">
+<div class="section" id="id192">
<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="id189">
+<div class="section" id="id193">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Document deallocation could crash in certain garbage collection scenarios</li>
</ul>
</div>
</div>
-<div class="section" id="id190">
+<div class="section" id="id194">
<h1>1.0 (2006-06-01)</h1>
-<div class="section" id="id191">
+<div class="section" id="id195">
<h2>Features added</h2>
<ul class="simple">
<li>Element.getiterator() and the findall() methods support finding arbitrary
implementation of libxml2 (as opposed to ET compatible XMLID)</li>
</ul>
</div>
-<div class="section" id="id192">
+<div class="section" id="id196">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Memory leak in Element.__setitem__</li>
</ul>
</div>
</div>
-<div class="section" id="id193">
+<div class="section" id="id197">
<h1>0.9.2 (2006-05-10)</h1>
-<div class="section" id="id194">
+<div class="section" id="id198">
<h2>Features added</h2>
<ul class="simple">
<li>Speedup for Element.makeelement(): the new element reuses the original
<li>RelaxNG and XMLSchema accept any Element, not only ElementTrees</li>
</ul>
</div>
-<div class="section" id="id195">
+<div class="section" id="id199">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>str(xslt_result) was broken for XSLT output other than UTF-8</li>
</ul>
</div>
</div>
-<div class="section" id="id196">
+<div class="section" id="id200">
<h1>0.9.1 (2006-03-30)</h1>
-<div class="section" id="id197">
+<div class="section" id="id201">
<h2>Features added</h2>
<ul class="simple">
<li>lxml.sax.ElementTreeContentHandler checks closing elements and raises
<li>Minor API performance improvements</li>
</ul>
</div>
-<div class="section" id="id198">
+<div class="section" id="id202">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Memory deallocation bug when using XSLT output method "html"</li>
</ul>
</div>
</div>
-<div class="section" id="id199">
+<div class="section" id="id203">
<h1>0.9 (2006-03-20)</h1>
-<div class="section" id="id200">
+<div class="section" id="id204">
<h2>Features added</h2>
<ul class="simple">
<li>Error logging API for libxml2 error messages</li>
doc/sax.txt for more information.</li>
</ul>
</div>
-<div class="section" id="id201">
+<div class="section" id="id205">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Segfaults and memory leaks in various API functions of Element</li>
</ul>
</div>
</div>
-<div class="section" id="id202">
+<div class="section" id="id206">
<h1>0.8 (2005-11-03)</h1>
-<div class="section" id="id203">
+<div class="section" id="id207">
<h2>Features added</h2>
<ul class="simple">
<li>Support for copy.deepcopy() on elements. copy.copy() works also, but
SubElement.</li>
</ul>
</div>
-<div class="section" id="id204">
+<div class="section" id="id208">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Use xslt-config instead of xml2-config to find out libxml2
</ul>
</div>
</div>
-<div class="section" id="id205">
+<div class="section" id="id209">
<h1>0.7 (2005-06-15)</h1>
-<div class="section" id="id206">
+<div class="section" id="id210">
<h2>Features added</h2>
<ul class="simple">
<li>parameters (XPath expressions) can be passed to XSLT using keyword
in XML serialization.</li>
</ul>
</div>
-<div class="section" id="id207">
+<div class="section" id="id211">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Killed yet another memory management related bug: trees created
</ul>
</div>
</div>
-<div class="section" id="id208">
+<div class="section" id="id212">
<h1>0.6 (2005-05-14)</h1>
-<div class="section" id="id209">
+<div class="section" id="id213">
<h2>Features added</h2>
<ul class="simple">
<li>Changed setup.py so that library_dirs is also guessed. This should
<li>Tweaked setup.py so that it picks up the version from version.txt.</li>
</ul>
</div>
-<div class="section" id="id210">
+<div class="section" id="id214">
<h2>Bugs fixed</h2>
<ul class="simple">
<li>Do the right thing when handling namespaced attributes.</li>
</ul>
</div>
</div>
-<div class="section" id="id211">
+<div class="section" id="id215">
<h1>0.5.1 (2005-04-09)</h1>
<ul class="simple">
<li>Python 2.2 compatibility fixes.</li>
input wasn't properly being UTF-8 encoded.</li>
</ul>
</div>
-<div class="section" id="id212">
+<div class="section" id="id216">
<h1>0.5 (2005-04-08)</h1>
<p>Initial public release.</p>
</div>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2012-03-26.
+Generated on: 2012-07-31.
</div>
</body>