lxml 2.3.1 released

Hi everyone,
I'm happy to announce the release of lxml 2.3.1. This is the first bug fix release of the stable 2.3 series. It contains a number of behavioural corrections of the original 2.3 release, so updating is recommended.
http://pypi.python.org/pypi/lxml/2.3.1/
This release was built using Cython 0.15.1. It is recommended (although not required) to use at least libxml2 2.7.8 with lxml, which fixes a number of important bugs compared to the previous 2.7.x releases.
Note that this release officially drops supports for CPython 2.3, which has long terminated its extended security-fix-only maintenance period back in March 2008. CPython 2.4.x, although equally outdated, continues to be supported due to its long term maintenance in certain Linux/Unix server installations.
If you are interested in trainings, commercial support or customisations regarding the lxml package, please contact me directly.
Have fun,
Stefan
Features added --------------
* New option kill_tags in lxml.html.clean to remove specific tags and their content (i.e. their whole subtree).
* pi.get() and pi.attrib on processing instructions to parse pseudo-attributes from the text content of processing instructions.
* lxml.get_include() 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.
* Resolver.resolve_file() takes an additional option close_file 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.
Bugs fixed ----------
* HTML cleaning didn't remove 'data:' links.
* The html5lib parser integration now uses the 'official' implementation in html5lib itself, which makes it work with newer releases of the library.
* In lxml.sax, endElementNS() could incorrectly reject a plain tag name when the corresponding start event inferred the same plain tag name to be in the default namespace.
* When an open file-like object is passed into parse() or iterparse(), 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.
* Assertion error in lxml.html.cleaner when discarding top-level elements.
* 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 to be consistent with the selector behavior in WebKit and Firefox, and makes more css expressions valid location paths (for use in xsl:template match).
* In lxml.html, non-selected <option> tags no longer show up in the collected form values.
* Adding/removing <option> values to/from a multiple select form field properly selects them and unselects them.
Other changes --------------
* Static builds can specify the download directory with the --download-dir option.

Thank you so much Stefan for this release!
Much appreciated and great work!
Cheers, Henrik
On 25 sep 2011, at 22:14, Stefan Behnel wrote:
Hi everyone,
I'm happy to announce the release of lxml 2.3.1. This is the first bug fix release of the stable 2.3 series. It contains a number of behavioural corrections of the original 2.3 release, so updating is recommended.
http://pypi.python.org/pypi/lxml/2.3.1/
This release was built using Cython 0.15.1. It is recommended (although not required) to use at least libxml2 2.7.8 with lxml, which fixes a number of important bugs compared to the previous 2.7.x releases.
Note that this release officially drops supports for CPython 2.3, which has long terminated its extended security-fix-only maintenance period back in March 2008. CPython 2.4.x, although equally outdated, continues to be supported due to its long term maintenance in certain Linux/Unix server installations.
If you are interested in trainings, commercial support or customisations regarding the lxml package, please contact me directly.
Have fun,
Stefan
Features added
New option kill_tags in lxml.html.clean to remove specific tags and their content (i.e. their whole subtree).
pi.get() and pi.attrib on processing instructions to parse pseudo-attributes from the text content of processing instructions.
lxml.get_include() 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.
Resolver.resolve_file() takes an additional option close_file 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.
Bugs fixed
HTML cleaning didn't remove 'data:' links.
The html5lib parser integration now uses the 'official' implementation in html5lib itself, which makes it work with newer releases of the library.
In lxml.sax, endElementNS() could incorrectly reject a plain tag name when the corresponding start event inferred the same plain tag name to be in the default namespace.
When an open file-like object is passed into parse() or iterparse(), 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.
Assertion error in lxml.html.cleaner when discarding top-level elements.
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 to be consistent with the selector behavior in WebKit and Firefox, and makes more css expressions valid location paths (for use in xsl:template match).
In lxml.html, non-selected <option> tags no longer show up in the collected form values.
Adding/removing <option> values to/from a multiple select form field properly selects them and unselects them.
Other changes
- Static builds can specify the download directory with the --download-dir option.
Mailing list for the lxml Python XML toolkit - http://lxml.de/ lxml@lxml.de https://mailman-mail5.webfaction.com/listinfo/lxml
participants (2)
-
Henrik Zagerholm
-
Stefan Behnel