Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update for ASDF standard 1.6.0 #219

Merged
merged 16 commits into from
Mar 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 3 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
default_python: '3.9'
envs: |
- linux: py39-parallel-cov
- linux: py39-test-devdeps-parallel-cov
- linux: py311-test-devdeps-parallel-cov
- linux: py39-astropylts-parallel-cov
- linux: py39-transformlts-parallel-cov
coverage: codecov
Expand Down Expand Up @@ -71,6 +71,7 @@ jobs:
envs: |
- linux: py310-test-parallel
- linux: py311-test-parallel
- linux: py312-test-parallel
- macos: py311-test-parallel
- windows: py311-test-parallel

Expand All @@ -87,6 +88,7 @@ jobs:
envs: |
- linux: py310-test-devdeps-parallel
- linux: py311-test-devdeps-parallel
- linux: py311-test-devdeps-numpydev-parallel

oldest:
needs: [core, asdf-schemas]
Expand All @@ -102,24 +104,6 @@ jobs:
- linux: py39-test-oldestdep-parallels-cov
coverage: codecov

numpy:
needs: [core, asdf-schemas]
uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@v1
with:
cache-path: ~/.cache/pip
cache-key: pip-${{ needs.setup.outputs.requirements-hash }}
cache-restore-keys: |
pip-
# Any env name which does not start with `pyXY` will use this Python version.
default_python: '3.9'
envs: |
- linux: py39-test-numpy119-parallel
- linux: py39-test-numpy120-parallel
- linux: py310-test-numpy121-parallel
- linux: py310-test-numpy122-parallel
- linux: py311-test-numpy123-parallel
- linux: py311-test-numpy124-parallel

wheel_building:
permissions:
contents: none
Expand Down
9 changes: 9 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
0.6.0 (unreleased)
------------------

- Add python 3.12 support. [#219]
- Update ASDF standard 1.6.0 support. [#219]
- Increase minimum versions for ``asdf-coordinates-schemas``
``asdf-transform-schemas`` and list ``asdf-standard`` as
a dependency. [#219]

0.5.0 (2023-11-15)
------------------

Expand Down
40 changes: 0 additions & 40 deletions asdf_astropy/_manifest.py

This file was deleted.

2 changes: 1 addition & 1 deletion asdf_astropy/converters/coordinates/tests/test_frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ def test_legacy_icrs_deseialize():
unit: deg"""
truth = ICRS(ra=Longitude(25, unit=u.deg), dec=Latitude(45, unit=u.deg))

buff = yaml_to_asdf(f"example: {example.strip()}")
buff = yaml_to_asdf(f"example: {example.strip()}", version="1.5.0")
with asdf.AsdfFile() as af:
af._open_impl(af, buff, mode="rw")
assert_frame_equal(af["example"], truth)
2 changes: 1 addition & 1 deletion asdf_astropy/converters/fits/tests/test_fits.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def test_asdf_tag():
- [BUNIT, DN, Units of the error array]
"""

buff = yaml_to_asdf(yaml)
buff = yaml_to_asdf(yaml, version="1.5.0")
with asdf.open(buff) as af:
hdul = af["hdul"]
assert len(hdul) == 3 # noqa: PLR2004
Expand Down
10 changes: 8 additions & 2 deletions asdf_astropy/converters/table/table.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@


class ColumnConverter(Converter):
tags = ("tag:stsci.edu:asdf/core/column-*",)
tags = (
"tag:stsci.edu:asdf/core/column-*",
"tag:stsci.edu:asdf/table/column-*",
)
types = (
"astropy.table.column.Column",
"astropy.table.column.MaskedColumn",
Expand Down Expand Up @@ -45,7 +48,10 @@ def from_yaml_tree(self, node, tag, ctx):


class AsdfTableConverter(Converter):
tags = ("tag:stsci.edu:asdf/core/table-*",)
tags = (
"tag:stsci.edu:asdf/core/table-*",
"tag:stsci.edu:asdf/table/table-*",
)
types = ()

def to_yaml_tree(self, obj, tag, ctx):
Expand Down
4 changes: 2 additions & 2 deletions asdf_astropy/converters/table/tests/test_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ def test_mismatched_columns():
colnames: [a, b]
"""

buff = yaml_to_asdf(yaml)
buff = yaml_to_asdf(yaml, version="1.5.0")

with pytest.raises(ValueError, match="Inconsistent data column lengths"), asdf.open(buff):
pass
Expand Down Expand Up @@ -251,7 +251,7 @@ def test_asdf_table():
description: The target name
name: c
"""
buff = yaml_to_asdf(yaml)
buff = yaml_to_asdf(yaml, version="1.5.0")

with asdf.open(buff) as af:
table = af["table"]
Expand Down
6 changes: 5 additions & 1 deletion asdf_astropy/converters/time/tests/test_time.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def create_examples():

@pytest.mark.parametrize("example", create_examples())
def test_read_examples(example):
buff = yaml_to_asdf(f"example: {example['example'].strip()}")
buff = yaml_to_asdf(f"example: {example['example'].strip()}", version="1.5.0")
with asdf.AsdfFile() as af:
af._open_impl(af, buff, mode="rw")
assert np.all(af["example"] == example["truth"])
Expand All @@ -133,6 +133,10 @@ def create_formats():

formats = []
for format_ in TIME_FORMATS:
if format_ == "stardate":
# stardate is not a documented format for astropy
# https://docs.astropy.org/en/latest/time/index.html#time-format
continue
new = Time("B2000.0")
new.format = format_
formats.append(new)
Expand Down
4 changes: 2 additions & 2 deletions asdf_astropy/converters/transform/properties.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@


class ModelBoundingBoxConverter(Converter):
tags = ("tag:stsci.edu:asdf/transform/property/bounding_box-1.0.0",)
tags = ("tag:stsci.edu:asdf/transform/property/bounding_box-*",)
types = ("astropy.modeling.bounding_box.ModelBoundingBox",)

def to_yaml_tree(self, bbox, tag, ctx):
Expand Down Expand Up @@ -40,7 +40,7 @@ def create_bounding_box(model, cbbox=None):


class CompoundBoundingBoxConverter(Converter):
tags = ("tag:stsci.edu:asdf/transform/property/compound_bounding_box-1.0.0",)
tags = ("tag:stsci.edu:asdf/transform/property/compound_bounding_box-*",)
types = ("astropy.modeling.bounding_box.CompoundBoundingBox",)

def to_yaml_tree(self, cbbox, tag, ctx):
Expand Down
1 change: 1 addition & 0 deletions asdf_astropy/converters/transform/tests/test_transform.py
Original file line number Diff line number Diff line change
Expand Up @@ -529,6 +529,7 @@ def test_all_models_supported(model):

def test_legacy_const(tmp_path):
with asdf.config_context() as config:
config.remove_extension("asdf://asdf-format.org/transform/extensions/transform-1.6.0")
config.remove_extension("asdf://asdf-format.org/transform/extensions/transform-1.5.0")

model = astropy_models.Const1D(amplitude=5.0)
Expand Down
6 changes: 3 additions & 3 deletions asdf_astropy/converters/unit/tests/test_quantity.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def test_read_untagged_unit():
value: {value}
unit: kpc
"""
buff = helpers.yaml_to_asdf(yaml)
buff = helpers.yaml_to_asdf(yaml, version="1.5.0")
with asdf.open(buff) as af:
assert af["quantity"].value == value
assert af["quantity"].unit.is_equivalent(units.kpc)
Expand All @@ -57,7 +57,7 @@ def test_read_tagged_unit():
value: {value}
unit: !unit/unit-1.0.0 kpc
"""
buff = helpers.yaml_to_asdf(yaml)
buff = helpers.yaml_to_asdf(yaml, version="1.5.0")
with asdf.open(buff) as af:
assert af["quantity"].value == value
assert af["quantity"].unit.is_equivalent(units.kpc)
Expand All @@ -69,7 +69,7 @@ def test_read_array_value():
value: !core/ndarray-1.0.0 [1.0, 2.0, 3.0, 4.0]
unit: km
"""
buff = helpers.yaml_to_asdf(yaml)
buff = helpers.yaml_to_asdf(yaml, version="1.5.0")
with asdf.open(buff) as af:
assert_array_equal(af["quantity"].value, np.array([1.0, 2.0, 3.0, 4.0]))
assert af["quantity"].unit.is_equivalent(units.km)
Expand Down
69 changes: 42 additions & 27 deletions asdf_astropy/extensions.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from asdf.extension import ManifestExtension
from astropy.utils import minversion

from ._manifest import CompoundManifestExtension
from .converters.coordinates.angle import AngleConverter, LatitudeConverter, LongitudeConverter
from .converters.coordinates.earth_location import EarthLocationConverter
from .converters.coordinates.frame import FrameConverter, LegacyICRSConverter
Expand Down Expand Up @@ -39,11 +38,12 @@
"TRANSFORM_EXTENSIONS",
"COORDINATES_CONVERTERS",
"ASTROPY_CONVERTERS",
"COORDINATES_EXTENSION",
"COORDINATES_EXTENSIONS",
"ASTROPY_EXTENSIONS",
"CORE_CONVERTERS",
"CORE_MANIFEST_URIS",
"CORE_EXTENSIONS",
"UNIT_EXTENSIONS",
]

TRANSFORM_CONVERTERS = [
Expand Down Expand Up @@ -399,6 +399,7 @@
# The order here is important; asdf will prefer to use extensions
# that occur earlier in the list.
TRANSFORM_MANIFEST_URIS = [
"asdf://asdf-format.org/transform/manifests/transform-1.6.0",
"asdf://asdf-format.org/transform/manifests/transform-1.5.0",
"asdf://asdf-format.org/transform/manifests/transform-1.4.0",
"asdf://asdf-format.org/transform/manifests/transform-1.3.0",
Expand All @@ -407,7 +408,6 @@
"asdf://asdf-format.org/transform/manifests/transform-1.0.0",
]


TRANSFORM_EXTENSIONS = [
ManifestExtension.from_uri(
uri,
Expand Down Expand Up @@ -484,14 +484,22 @@
NdarrayMixinConverter(),
]


COORDINATES_EXTENSION = ManifestExtension.from_uri(
_COORDINATES_MANIFEST_URIS = [
"asdf://asdf-format.org/astronomy/coordinates/manifests/coordinates-1.1.0",
"asdf://asdf-format.org/astronomy/coordinates/manifests/coordinates-1.0.0",
converters=COORDINATES_CONVERTERS,
)
]

COORDINATES_EXTENSIONS = [
ManifestExtension.from_uri(
manifest_uri,
converters=COORDINATES_CONVERTERS,
)
for manifest_uri in _COORDINATES_MANIFEST_URIS
]


_ASTROPY_EXTENSION_MANIFEST_URIS = [
"asdf://astropy.org/astropy/manifests/astropy-1.2.0",
"asdf://astropy.org/astropy/manifests/astropy-1.1.0",
"asdf://astropy.org/astropy/manifests/astropy-1.0.0",
]
Expand All @@ -508,42 +516,49 @@
for manifest_uri in _ASTROPY_EXTENSION_MANIFEST_URIS
]


# These tags are part of the ASDF Standard,
# but we want to override serialization here so that users can
# work with nice astropy objects for those entities.
_FITS_CONVERTERS = [
AsdfFitsConverter(),
]

CORE_CONVERTERS = [
QuantityConverter(),
_TIME_CONVERTERS = [
TimeConverter(),
]

_TABLE_CONVERTERS = [
ColumnConverter(),
AsdfTableConverter(),
AsdfFitsConverter(),
]

UNIT_CONVETERS = [
_UNIT_CONVERTERS = [
UnitConverter(),
EquivalencyConverter(),
MagUnitConverter(),
QuantityConverter(),
]

CORE_CONVERTERS = _FITS_CONVERTERS + _TIME_CONVERTERS + _TABLE_CONVERTERS + _UNIT_CONVERTERS

UNIT_EXTENSIONS = [
ManifestExtension.from_uri(
"asdf://astropy.org/astropy/manifests/units-1.0.0",
converters=_UNIT_CONVERTERS,
),
]

# up to asdf 1.5.0 many tags supported by asdf-astropy
# were defined in core manifests
CORE_MANIFEST_URIS = [
"asdf://asdf-format.org/core/manifests/core-1.0.0",
"asdf://asdf-format.org/core/manifests/core-1.1.0",
"asdf://asdf-format.org/core/manifests/core-1.2.0",
"asdf://asdf-format.org/core/manifests/core-1.3.0",
"asdf://asdf-format.org/core/manifests/core-1.4.0",
"asdf://asdf-format.org/astronomy/manifests/astronomy-1.0.0",
"asdf://asdf-format.org/core/manifests/core-1.5.0",
"asdf://asdf-format.org/core/manifests/core-1.6.0",
"asdf://asdf-format.org/core/manifests/core-1.4.0",
"asdf://asdf-format.org/core/manifests/core-1.3.0",
"asdf://asdf-format.org/core/manifests/core-1.2.0",
"asdf://asdf-format.org/core/manifests/core-1.1.0",
"asdf://asdf-format.org/core/manifests/core-1.0.0",
]


CORE_EXTENSIONS = [
CompoundManifestExtension(
[
ManifestExtension.from_uri(u, converters=CORE_CONVERTERS),
ManifestExtension.from_uri("asdf://astropy.org/astropy/manifests/units-1.0.0", converters=UNIT_CONVETERS),
],
)
for u in CORE_MANIFEST_URIS
]
CORE_EXTENSIONS = [ManifestExtension.from_uri(u, converters=CORE_CONVERTERS) for u in CORE_MANIFEST_URIS]
3 changes: 2 additions & 1 deletion asdf_astropy/integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ def get_extensions():

return [
*extensions.ASTROPY_EXTENSIONS,
extensions.COORDINATES_EXTENSION,
*extensions.COORDINATES_EXTENSIONS,
*extensions.TRANSFORM_EXTENSIONS,
*extensions.UNIT_EXTENSIONS,
*extensions.CORE_EXTENSIONS,
]
Loading
Loading