[lxml-dev] lxml 1.0.3 and 1.1beta on cheeseshop
![](https://secure.gravatar.com/avatar/1833d9a7642a05ddea0d27de72be2e2b.jpg?s=120&d=mm&r=g)
Hi all, I finally managed to get 1.1beta out, right after releasing 1.0.3. 1.0.3 is a bug fix release. Since it fixes a crash in XSLT result handling, updating is recommended. 1.1beta is the last pre-release before the shiny new 1.1 series will take the lead. Despite the surprisingly short change log, it contains tons of changes under the hood and some major improvements in flexibility. It is the first lxml version to compile and run under Python 2.5 beta (3), comes with a C-API that makes it extensible by other Python C modules, and features an additional data-binding API on top of etree (objectify). For further information on the features of lxml 1.1, please refer to the HTML documentation in the source distribution or read the text files online: http://codespeak.net/svn/lxml/trunk/doc Note that lxml 1.1 requires a patched Pyrex version if you want to compile from non-release or modified sources. It is available here: http://codespeak.net/svn/lxml/pyrex This version of Pyrex supports Python 2.5 and public C-API generation, so it may be of interest to more than only lxml developers. As always, I'm happy about any egg contributions or bug reports that help in making lxml 1.1 the greatest Python XML tool ever. Have fun, Stefan Changelogs: (note that 1.1beta also contains the changes from 1.0.3) 1.1beta (2006-08-08) Features added * Unlock the GIL for deep copying documents and for XPath() * Support for Python 2.5 beta * New compact keyword argument for parsing read-only documents * Support for parser options in iterparse() * The namespace axis is supported in XPath and returns (prefix, URI) tuples * The XPath expression "/" now returns an empty list instead of raising an exception * XML-Object API on top of lxml (lxml.objectify) * Customizable Element class lookup: o Support for externally provided lookup functions o lxml.elements.classlookup module implements different lookup mechanisms * Support for processing instructions (ET-like, not compatible) * Public C-level API for independent extension modules Bugs fixed * XPathSyntaxError now inherits from XPathError * Threading race conditions in RelaxNG and XMLSchema * Crash when mixing elements from XSLT results into other trees, concurrent XSLT is only allowed when the stylesheet was parsed in the main thread * The EXSLT regexp:match function now works as defined (except for some differences in the regular expression syntax) * Setting element.text to '' returned None on request, not the empty string * iterparse() could crash on long XML files * 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. 1.0.3 (2006-08-08) Features added * Element.replace(old, new) method to replace a subelement by another one Bugs fixed * Crash when mixing elements from XSLT results into other trees * Copying/deepcopying did not work for ElementTree objects * Setting an attribute to a non-string value did not raise an exception * Element.remove() deleted the tail text from the removed Element
![](https://secure.gravatar.com/avatar/1833d9a7642a05ddea0d27de72be2e2b.jpg?s=120&d=mm&r=g)
Ah, well, never release too early... Here is a patch against 1.1beta that fixes a couple of bugs in lxml.objectify, especially in the setattr() and addattr() methods of ObjectPath. Without the patch, you can't currently set attributes to Element values or lists. That's not too much of an issue, as you can still set them directly (without ObjectPath). But it's still annoying. Guess that's what a beta release is there for... Stefan
participants (1)
-
Stefan Behnel