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 DeprecationWarnings!

  • ⚠️The method delb.NodeBase.iterate_descendants() is added as a replacement for the former delb.NodeBase.child_nodes() invoked with the now deprecated argument recurse.

  • ⚠️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 to delb.Document and delb.TagNode.parse() is deprecated and replaced by parser_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.

  • 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 a classmethod() and now also takes the config namespace as first argument.

  • Adds delb.Document.collapse_whitespace() and the initialization option for delb.Document instances with the same name.

  • Adds the retain_child_nodes argument to delb.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 as TagNode.universal_name().

  • Adds support for Python 3.9 & 3.10.

  • ⚠️ Drops support for Python 3.6

  • Uses GitHub actions for CI checks.

Fixes

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 and delb.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.