Changes¶
Every time I thought I’d got it made
It seemed the taste was not so sweet
The listed updates resemble rather a Best Of than a full record of changes. Intentionally.
0.4 (2022-11-02)¶
News¶
delb now uses its own XPath implementation, please investigate
_delb.xpath
for details.⚠️Many of the nodes’ methods that relate to relative nodes have been renamed. Watch out for
DeprecationWarning
s!⚠️The method
delb.NodeBase.iterate_descendants()
is added as a replacement for the formerdelb.NodeBase.child_nodes()
invoked with the now deprecated argumentrecurse
.⚠️The
https-loader
extensions is now required for loading documents via plain and secured HTTP connections.Under the hood httpx is now employed as HTTP/S client.
⚠️The contributed loader for FTP connections is marked as deprecated.
⚠️The
parser
argument todelb.Document
anddelb.TagNode.parse()
is deprecated and replaced byparser_options
.⚠
delb.Document.xslt()
is marked as deprecated.⚠️Evoked exceptions changed in various places.
⚠️Document mixin extensions are now facilitated by subclassing
_delb.plugins.DocumentMixinBase
. It replaces_delb.plugins.DocumentExtensionHooks
and_delb.plugins.PluginManager.register_document_mixin()
without a backward-compatible mechanic.Support for the very good Python 3.10 and the even better 3.11 is added.
The code repository is now part of an umbrella namespace for related projects: https://github.com/delb-xml/
A
CITATTION.cff
is available in the repository and shipped with source distributions for researchers that are citing their employed software.
0.3 (2022-01-31)¶
News¶
- Adds the
delb.TagNode.fetch_or_create_by_xpath()
method. ⚠️Because of that a pre-mature parser of XPath expressions has been implemented and you can expect some expressions to cause failures, e.g. with functions that take more than one argument.
- Adds the
Subclasses of
delb.Document
can claim to be the default class based on the evaluation of a document’s content and configuration by implementing__class_test__
.⚠️
_delb.plugins.PluginManager._register_document_extension()
is renamed to_delb.plugins.PluginManager._register_document_mixin()
.⚠️
_delb.plugins.DocumentExtensionHooks()
is renamed to_delb.plugins.DocumentMixinHooks()
.⚠️
_delb.plugins.DocumentMixinHooks._init_config()
is now aclassmethod()
and now also takes the config namespace as first argument.Adds
delb.Document.collapse_whitespace()
and the initialization option fordelb.Document
instances with the same name.Adds the
retain_child_nodes
argument todelb.NodeBase.detach()
.Adds the
delb.NodeBase.last_descendant
property.Adds the
delb.TagNode.id
property.Adds the
delb.TagNode.parse()
method.⚠️
TagNode.qualified_name()
is marked deprecated and the same property is now available asTagNode.universal_name()
.Adds support for Python 3.9 & 3.10.
⚠️ Drops support for Python 3.6
Uses GitHub actions for CI checks.
Fixes¶
Detached
delb.TagNode
s now drop references todelb.TextNode
siblings.Ensures that
delb.TagNode.location_path
always consists of indexed steps (/*[i]
) only.Avoids hitting the interpreter’s recursion limit when iterating in stream dimension.
0.2 (2020-07-26)¶
News¶
Adds a logo. Gracious thanks to sm!
Adds plugin mechanics. Graciae ad infinitum, TC!
CSS and XPath query results are wrapped in
delb.QueryResults
.Adds
delb.Document.head_nodes
anddelb.Document.tail_nodes
that allow access to the siblings of a root node.Adds the
delb.Document.source_url
property.Adds
delb.get_traverser()
and two traverser implementations that yield nodes related to a root node according to their defined order.Document loaders report back the reason why they would or could not load a document from the given object.
Various documentation improvements, including table of contents for class members.
0.1.2 (2019-09-14)¶
There’s nothing super-exciting to report here. It’s just getting better.
0.1.1 (2019-08-15)¶
This was quiet boring, it serves updated dependencies for what it’s worth.
0.1 (2019-05-26)¶
The initial release with a set and sound data model and API.