Skip to content

Incorrect extension recorded when writing file #592

@braingram

Description

@braingram

Using rad and rdm main when writing out (for example) a DistortionRefModel. The produced file contains:

  • the expected asdf://stsci.edu/datamodels/roman/tags/reference_files/distortion-1.3.0 tag from the latest "datamodels" manifest
  • a recorded use of the "static" manifest, yet no tags from that manifest
  • no record of use of the "datamodels"
>> import roman_datamodels.datamodels as rdm
>> import asdf
>> m = rdm.DistortionRefModel.create_fake_data()
>> print(asdf.dumps({"roman": m._instance}).decode("ascii"))
#ASDF 1.0.0
#ASDF_STANDARD 1.6.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: The ASDF Developers, homepage: 'http://github.com/asdf-format/asdf',
  name: asdf, version: 5.0.1.dev18+gd4d368abd}
history:
  extensions:
  - !core/extension_metadata-1.0.0
    extension_class: asdf.extension._manifest.ManifestExtension
    extension_uri: asdf://asdf-format.org/core/extensions/core-1.6.0
    manifest_software: !core/software-1.0.0 {name: asdf_standard, version: 1.1.1}
    software: !core/software-1.0.0 {name: asdf, version: 5.0.1.dev18+gd4d368abd}
  - !core/extension_metadata-1.0.0
    extension_class: asdf.extension._manifest.ManifestExtension
    extension_uri: asdf://asdf-format.org/astronomy/extensions/astronomy-1.0.0
    manifest_software: !core/software-1.0.0 {name: asdf_standard, version: 1.1.1}
    software: !core/software-1.0.0 {name: asdf-astropy, version: 0.7.0}
  - !core/extension_metadata-1.0.0
    extension_class: asdf.extension._manifest.ManifestExtension
    extension_uri: asdf://stsci.edu/datamodels/roman/extensions/static-1.1.0
    manifest_software: !core/software-1.0.0 {name: rad, version: 0.25.1.dev8+gb461e86}
    software: !core/software-1.0.0 {name: roman_datamodels, version: 0.28.0.dev14+g6277ff0ec.d20250917}
roman: !<asdf://stsci.edu/datamodels/roman/tags/reference_files/distortion-1.3.0>
  meta:
    author: '?'
    description: '?'
    instrument: {detector: WFI01, name: WFI, optical_element: F062}
    origin: '?'
    pedigree: GROUND
    reftype: DISTORTION
    telescope: ROMAN
    useafter: !time/time-1.2.0 2020-01-01T00:00:00.000
  coordinate_distortion_transform: {}
...

This is because the extension created from the extension built from the static manifest includes the TaggedObjectNodeConverter which claims support for all tagged object nodes (including those not handled by the static manifest).
Swapping the order of the manifests here:

_MANIFESTS = _STATIC_MANIFESTS + _DATAMODEL_MANIFESTS

works around the issue but doesn't fix that the static manifest generated extensions should not be claiming support for these types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions