Releases: delb-xml/delb-py
delb 0.6-rc1
This release brings significant changes that evolve delb to a mature level, namely:
- 🎇 All data keeping is now implemented natively without lxml, leading to remarkable performance improvements.
- 🎉 There's a new parser interface for extensiblity.
- 🪩 The API can be considered stable.
At least 99.5% of all code is guaranteed to be covered by tests. The accompanying integration test corpora have been updated and extended.
News
⚠️ For more clarity the symbols that are re-exported in the top-level moduledelbare greatly reduced. Instead they're to be imported from their domain specific modulesdelb.filters,delb.names,delb.nodesanddelb.utils. Some generally applicable ones will stay available for convenice though.- There are new abstract base classes for each node type rooting from
delb.typing.XMLNodeTypethat should be used for type annotations. ⚠️ Functions to construct new node instances such asdelb.nodes.new_tag_nodeare deprecated. The corresponding, concrete node classes are now to be instantiated directly.- A new parser interface allows the use of arbitrary parsing backends. Support for the standard library's
expatinterface andlxmlare contributed. For details see „Installation” anddelb.parser.ParserOptions. - When a used parser backend supports DTDs, it can be instructed with the
delb.parser.ParserOptions.load_referenced_resourcesoption to consider these. - New parsing related exceptions have been added:
delb.exceptions.ParsingErrorbasesdelb.exceptions.ParsingProcessingErroranddelb.exceptions.ParsingValidityError. ⚠️ Thedelb.parser.ParserOptions.resolve_entitiesoption has been removed entirely as delb's data model doesn't include any entities.- The W3C's parser conformance test suite is included in delb's.
⚠️ delb.parse_treereplacesdelb.TagNode.parseto produce tag nodes from a serialized tree. The newdelb.parse_nodesproduces an iterator over (sub-)trees (possibly an XML document fragment).⚠️ The installation extrahttps-loaderis renamed toweb-loader⚠️ Theparser_optionsmust now be passed as keyword argument to adelb.Document.- A
source_urlcan now be passed explicitly when instantiating adelb.Document. ⚠️ Thedelb.nodes.TagNode.prefixattribute is gone.⚠️ Support for Python 3.9 was removed and for Python 3.14 it's added.
The package distributions are available at the Python Package Index.
delb 0.6-rc0
This release brings significant changes that evolve delb to a mature level, namely:
- 🎇 All data keeping is now implemented natively without lxml, leading to remarkable performance improvements.
- 🎉 There's a new parser interface for extensiblity.
- 🪩 The API can be considered stable.
At least 99.5% of all code is guaranteed to be covered by tests. The accompanying integration test corpora have been updated and extended.
News
⚠️ For more clarity the symbols that are re-exported in the top-level moduledelbare greatly reduced. Instead they're to be imported from their domain specific modulesdelb.filters,delb.names,delb.nodesanddelb.utilsSome generally applicable ones will stay available for convenice though.- There are new abstract base classes for each node type rooting from
delb.typing.XMLNodeTypethat should be used for type annotations. ⚠️ Functions to construct new node instances such asdelb.nodes.new_tag_nodeare deprecated. The corresponding, concrete node classes are now to be instantiated directly.- A new parser interface allows the use of arbitrary parsing backends. Support for the standard library's
expatinterface andlxmlare contributed. For details see „Installation” anddelb.parser.ParserOptions. - When a used parser backend supports DTDs, it can be instructed with the
delb.parser.ParserOptions.load_referenced_resourcesoption to consider these. - New parsing related exceptions have been added:
delb.exceptions.ParsingErrorbasesdelb.exceptions.ParsingProcessingErroranddelb.exceptions.ParsingValidityError. ⚠️ Thedelb.parser.ParserOptions.resolve_entitiesoption has been removed entirely as delb's data model doesn't include any entities.- The W3C's parser conformance test suite is included in delb's.
⚠️ delb.parse_treereplacesdelb.TagNode.parseto produce tag nodes from a serialized tree. The newdelb.parse_nodesproduces an iterator over (sub-)trees (possibly an XML document fragment).⚠️ The installation extrahttps-loaderis renamed toweb-loader⚠️ Theparser_optionsmust now be passed as keyword argument to adelb.Document.- A
source_urlcan now be passed explicitly when instantiating adelb.Document. ⚠️ Thedelb.nodes.TagNode.prefixattribute is gone.⚠️ Support for Python 3.9 was removed and for Python 3.14 it's added.
The package distributions are available at the Python Package Index.
delb 0.5.1
News
Further deprecations that emit messages with hints to alternatives if available:
NodeBase.new_tag_node- Empty / null namespaces will generally be represented as empty strings in the future.
TagNode.parse
The package distributions are available at the Python Package Index.
delb 0.5
This iteration took quiet long to complete as it presumably solved the hardest problem on the way to shed off the essential dependency on lxml, also resulting in human-friendly serializations that achieve unprecedented clarity. The library's robustness is now proven with integration tests that are verified against eleven diverse TEI encoded corpora that sum up to more than 360k documents with a total volume of 3.33 GB.
News
- delb is now autonomously serializing contents, the „Serialization” chapter details current capabilities and interfaces.
- The HTML documentation received a big revision for pleasant discovery and reading.
- Methods that add nodes to a tree now return the added concrete nodes.
- The new
delb.compare_treesis available to compare nested contents. ⚠️ To align with Python standard behaviour, accessing a non-existing attribute with subscript notation now raises aKeyError.⚠️ The use of namespace declarations (to prefixes) that were used in a parsed source stream is deprecated. Notably queries will not use them as fallback when invoked without thenamespacesargument. Instead they will likely use the called-on node's namespace as default namespace.⚠️ delb.ParserOptions.collapse_whitespacewas renamed todelb.ParserOptions.reduce_whitespace, as there is nowdelb.Document.reduce_whitespaceto reflect that they also trim excessive whitespace.⚠️ The Xpath evaluation expressions of absolute paths on the child axis in the first location step is fixed. Consider to double check your usages.- Comparing
TagNodeinstances is now de facto an identity check. The previous behaviour can be achieved by comparingTagNode.universal_nameandTagNode.attributes. ⚠️ delb.Document.head_nodeswas renamed todelb.Document.prologue,delb.Document.tail_nodestodelb.Document.epilogue.⚠️ delb.get_traversernow only accepts keyword arguments.⚠️ Support for Python 3.7 was removed.- Support for Python 3.12 and 3.13 was added.
⚠️ The_delb.plugins.core_loaders.etree_loaderis marked as deprecated.
Previously deprecated contents have been removed.
The package distributions are available at the Python Package Index.
delb 0.5-rc2
This iteration took quiet long to complete as it presumably solved the hardest problem on the way to shed off the essential dependency on lxml, also resulting in human-friendly serializations that achieve unprecedented clarity. The library's robustness is now proven with integration tests that are verified against eleven diverse TEI encoded corpora that sum up to more than 360k documents with a total volume of 3.33 GB.
News
- delb is now autonomously serializing contents, the „Serialization” chapter details current capabilities and interfaces.
- The HTML documentation received a big revision for pleasant discovery and reading.
- Methods that add nodes to a tree now return the added concrete nodes.
- The new
delb.compare_treesis available to compare nested contents. ⚠️ The use of namespace declarations (to prefixes) that were used in a parsed source stream is deprecated. Notably queries will not use them as fallback when invoked without thenamespacesargument. Instead they will likely use the called-on node's namespace as default namespace.⚠️ delb.ParserOptions.collapse_whitespacewas renamed todelb.ParserOptions.reduce_whitespace, as there is nowdelb.Document.reduce_whitespaceto reflect that they also trim excessive whitespace.⚠️ The Xpath evaluation expressions of absolute paths on the child axis in the first location step is fixed. Consider to double check your usages.- Comparing
TagNodeinstances is now de facto an identity check. The previous behaviour can be achieved by comparingTagNode.universal_nameandTagNode.attributes. ⚠️ delb.Document.head_nodeswas renamed todelb.Document.prologue,delb.Document.tail_nodestodelb.Document.epilogue.⚠️ delb.get_traversernow only accepts keyword arguments.⚠️ Support for Python 3.7 was removed.- Support for Python 3.12 and 3.13 was added.
⚠️ The_delb.plugins.core_loaders.etree_loaderis marked as deprecated.
Previously deprecated contents have been removed.
The package distributions are available at the Python Package Index.
delb 0.5-rc1
This iteration took quiet long to complete as it presumably solved the hardest problem on the way to shed off the essential dependency on lxml, also resulting in human-friendly serializations that achieve unprecedented clarity. The library's robustness is now proven with integration tests that are verified against eleven diverse TEI encoded corpora that sum up to more than 360k documents with a total volume of 3.33 GB.
News
- delb is now autonomously serializing contents, the „Serialization” chapter details current capabilities and interfaces.
- The HTML documentation received a big revision for pleasant discovery and reading.
- Methods that add nodes to a tree now return the added concrete nodes.
- The new
delb.compare_treesis available to compare nested contents. ⚠️ delb.ParserOptions.collapse_whitespacewas renamed todelb.ParserOptions.reduce_whitespace, as there is nowdelb.Document.reduce_whitespaceto reflect that they also trim excessive whitespace.⚠️ delb.Document.head_nodeswas renamed todelb.Document.prologue,delb.Document.tail_nodestodelb.Document.epilogue.⚠️ delb.get_traversernow only accepts keyword arguments.⚠️ Support for Python 3.7 was removed.- Support for Python 3.12 and 3.13 was added.
⚠️ The_delb.plugins.core_loaders.etree_loaderis marked as deprecated.
Previously deprecated contents have been removed.
The package distributions are available at the Python Package Index.
delb 0.5-rc0
This iteration took quiet long to complete as it presumably solved the hardest problem on the way to shed off the essential dependency on lxml, also resulting in human-friendly serializations that achieve unprecedented clarity. The library's robustness is now proven with integration tests that are verified against eleven diverse TEI encoded corpora that sum up to more than 360k documents with a total volume of 3.33 GB.
News
- delb is now autonomously serializing contents, the „Serialization” chapter details current capabilities and interfaces.
- The HTML documentation received a big revision for pleasant discovery and reading.
- Methods that add nodes to a tree now return the added concrete nodes.
- The new
delb.compare_treesis available to compare nested contents. ⚠️ delb.ParserOptions.collapse_whitespacewas renamed todelb.ParserOptions.reduce_whitespace, as there is nowdelb.Document.reduce_whitespaceto reflect that they also trim excessive whitespace.⚠️ delb.Document.head_nodeswas renamed todelb.Document.prologue,delb.Document.tail_nodestodelb.Document.epilogue.⚠️ delb.get_traversernow only accepts keyword arguments.⚠️ Support for Python 3.7 was removed.- Support for Python 3.12 and 3.13 was added.
⚠️ The_delb.plugins.core_loaders.etree_loaderis marked as deprecated.
Previously deprecated contents have been removed.
The package distributions are available at the Python Package Index.