Skip to content
Edward Slavich edited this page Jul 8, 2020 · 21 revisions

2.8.0

Summary

This release will remove the experimental handle_dynamic_subclasses feature, add support for ASDF Standard 1.6.0, add a global configuration feature, and add new APIs for extending ASDF.

Changes

Remove support for handle_dynamic_subclasses for all ASDF Standard versions

The experimental handle_dynamic_subclasses feature will be removed (and its supporting schema dropped from ASDF Standard 1.6.0). The library will emit a warning when it detects an ExtensionType subclass that specifies this attribute.

ASDF Standard 1.6.0

The proposed roadmap for ASDF Standard 1.6.0 entails the following new requirements:

  • Schema defaults must not be added to or removed from the tree when working with an ASDF Standard 1.6.0 file.
  • Rudimentary support for unit, quantity, and time tags, which are becoming required for ASDF implementations.
  • Refuse to write complex YAML keys such as maps or lists
  • Support for tag URI schemes beyond tag:.
  • Support for serializing null values
  • Support for tags whose URI prefix has changed (the current ExtensionType API requires that tags supported by the same class differ only in version).

Global configuration

Introduce a configuration mechanism that will allow certain AsdfFile options (such as read_on_validate) to be set globally.

New tag handling API

The current ExtensionType API is complicated and difficult to reason about. We'll introduce a new simplified API for handling custom tags which will also be sufficiently flexible to handle the new requirements of ASDF Standard 1.6.0.

New extension API

The current AsdfExtension API does not include any kind of extension identifier, which means we end up describing the extension by Python class name in the ASDF file's metadata, which is not a portable solution. There is also no convenient way for an extension to express that there are different versions of itself, what the default version should be, and what versions of what tags are permissible under that version.

We'll introduce a new extension API with properties that supply this missing information (and also provide a list of tag handlers associated with that extension).

Resource access API

The current AsdfExtension API for retrieving schemas has some drawbacks:

  • It is not possible to list the schemas provided by the extension. The code that maps schema URIs to file paths will happily map to filenames that don't exist.
  • The schema content must be provided as a URL, which is an obstacle to storing schemas as package resources or writing schemas in the REPL during development.

We will introduce a new API for mapping schema URIs to schema content.