-
-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #146 from WilliamJamieson/feature/magunit
- Loading branch information
Showing
8 changed files
with
101 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
from asdf.extension import Converter | ||
|
||
|
||
class MagUnitConverter(Converter): | ||
tags = ["tag:astropy.org:astropy/units/magunit-*"] | ||
|
||
types = [ | ||
"astropy.units.function.logarithmic.MagUnit", | ||
] | ||
|
||
def to_yaml_tree(self, obj, tag, ctx): | ||
return {"unit": obj.physical_unit} | ||
|
||
def from_yaml_tree(self, node, tag, ctx): | ||
from astropy.units import mag | ||
|
||
return mag(node["unit"]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
import asdf | ||
import pytest | ||
from astropy import units | ||
|
||
|
||
def create_builtin_units(): | ||
return [u for u in list(units.__dict__.values()) if isinstance(u, units.MagUnit)] | ||
|
||
|
||
@pytest.mark.parametrize("unit", create_builtin_units()) | ||
@pytest.mark.filterwarnings("ignore::astropy.units.core.UnitsWarning") | ||
def test_builtin_serialization(unit, tmp_path): | ||
file_path = tmp_path / "test.asdf" | ||
with asdf.AsdfFile() as af: | ||
af["unit"] = unit | ||
af.write_to(file_path) | ||
|
||
with asdf.open(file_path) as af: | ||
assert af["unit"].is_equivalent(unit) | ||
|
||
with asdf.open(file_path, _force_raw_types=True) as af: | ||
assert isinstance(af["unit"], asdf.tagged.TaggedDict) | ||
assert af["unit"]._tag.startswith("tag:astropy.org:astropy/units/magunit-") | ||
|
||
|
||
def create_magunits(): | ||
magunits = [] | ||
for u in units.__dict__.values(): | ||
if isinstance(u, units.UnitBase) and not isinstance(u, units.MagUnit): | ||
try: | ||
magunit = units.mag(u) | ||
except units.UnitConversionError: | ||
pass | ||
else: | ||
magunits.append(magunit) | ||
|
||
return magunits | ||
|
||
|
||
@pytest.mark.parametrize("unit", create_magunits()) | ||
@pytest.mark.filterwarnings("ignore::astropy.units.core.UnitsWarning") | ||
def test_magunit_serialization(unit, tmp_path): | ||
file_path = tmp_path / "test.asdf" | ||
with asdf.AsdfFile() as af: | ||
af["unit"] = unit | ||
af.write_to(file_path) | ||
|
||
with asdf.open(file_path) as af: | ||
assert af["unit"].is_equivalent(unit) | ||
|
||
with asdf.open(file_path, _force_raw_types=True) as af: | ||
assert isinstance(af["unit"], asdf.tagged.TaggedDict) | ||
assert af["unit"]._tag.startswith("tag:astropy.org:astropy/units/magunit-") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
%YAML 1.1 | ||
--- | ||
$schema: "http://stsci.edu/schemas/yaml-schema/draft-01" | ||
id: "http://astropy.org/schemas/astropy/units/magunit-1.0.0" | ||
|
||
title: | | ||
Represents a Magnitude Unit | ||
description: | | ||
Represents the serialization of the MagUnit units built into | ||
astropy. | ||
type: object | ||
properties: | ||
unit: | ||
oneOf: | ||
- tag: "tag:stsci.edu:asdf/unit/unit-1.0.0" | ||
- tag: "tag:astropy.org:astropy/units/unit-1.0.0" |