From a57a15af15b27c144bff1cc8be881016cdca8d4e Mon Sep 17 00:00:00 2001 From: Brett Date: Wed, 7 Feb 2024 16:54:16 -0500 Subject: [PATCH] switch default asdf-standard to 1.6.0 --- asdf/_tests/core/_converters/test_tree.py | 3 +- asdf/_tests/tags/core/tests/test_ndarray.py | 56 ++++++++++----------- asdf/_tests/test_history.py | 2 +- asdf/_tests/test_info.py | 9 +++- asdf/_tests/test_schema.py | 20 ++++---- asdf/_tests/test_types.py | 4 +- asdf/_tests/test_yaml.py | 2 +- asdf/versioning.py | 4 +- docs/asdf/config.rst | 6 +-- 9 files changed, 58 insertions(+), 48 deletions(-) diff --git a/asdf/_tests/core/_converters/test_tree.py b/asdf/_tests/core/_converters/test_tree.py index 4c40b36e5..ddad4aa4c 100644 --- a/asdf/_tests/core/_converters/test_tree.py +++ b/asdf/_tests/core/_converters/test_tree.py @@ -77,6 +77,7 @@ def test_history_entry(tmp_path): def test_subclass_metadata(): subclass_metadata = SubclassMetadata(name="SomeCoolSubclass") - result = helpers.roundtrip_object(subclass_metadata) + # support for this was dropped in 1.6.0 + result = helpers.roundtrip_object(subclass_metadata, version="1.5.0") assert result == subclass_metadata diff --git a/asdf/_tests/tags/core/tests/test_ndarray.py b/asdf/_tests/tags/core/tests/test_ndarray.py index d0f4b80ab..b614099b8 100644 --- a/asdf/_tests/tags/core/tests/test_ndarray.py +++ b/asdf/_tests/tags/core/tests/test_ndarray.py @@ -282,7 +282,7 @@ class NDArrayContainerExtension: def test_copy_inline(): yaml = """ -x0: !core/ndarray-1.0.0 +x0: !core/ndarray-1.1.0 data: [-1.0, 1.0] """ @@ -371,7 +371,7 @@ def test_inline(): def test_inline_bare(): - content = "arr: !core/ndarray-1.0.0 [[1, 2, 3, 4], [5, 6, 7, 8]]" + content = "arr: !core/ndarray-1.1.0 [[1, 2, 3, 4], [5, 6, 7, 8]]" buff = helpers.yaml_to_asdf(content) with asdf.open(buff) as ff: @@ -413,7 +413,7 @@ def test_len_roundtrip(tmp_path): def test_mask_arbitrary(): content = """ -arr: !core/ndarray-1.0.0 +arr: !core/ndarray-1.1.0 data: [[1, 2, 3, 1234], [5, 6, 7, 8]] mask: 1234 """ @@ -425,7 +425,7 @@ def test_mask_arbitrary(): def test_mask_nan(): content = """ -arr: !core/ndarray-1.0.0 +arr: !core/ndarray-1.1.0 data: [[1, 2, 3, .NaN], [5, 6, 7, 8]] mask: .NaN """ @@ -455,7 +455,7 @@ def test_string_table(tmp_path): def test_inline_string(): - content = "arr: !core/ndarray-1.0.0 ['a', 'b', 'c']" + content = "arr: !core/ndarray-1.1.0 ['a', 'b', 'c']" buff = helpers.yaml_to_asdf(content) with asdf.open(buff) as ff: @@ -464,7 +464,7 @@ def test_inline_string(): def test_inline_structured(): content = """ -arr: !core/ndarray-1.0.0 +arr: !core/ndarray-1.1.0 datatype: [['ascii', 4], uint16, uint16, ['ascii', 4]] data: [[M110, 110, 205, And], [ M31, 31, 224, And], @@ -622,10 +622,10 @@ def test_operations_on_ndarray_proxies(tmp_path): def test_mask_datatype(tmp_path): content = """ -arr: !core/ndarray-1.0.0 +arr: !core/ndarray-1.1.0 data: [1, 2, 3] dtype: int32 - mask: !core/ndarray-1.0.0 + mask: !core/ndarray-1.1.0 data: [true, true, false] """ buff = helpers.yaml_to_asdf(content) @@ -636,10 +636,10 @@ def test_mask_datatype(tmp_path): def test_invalid_mask_datatype(tmp_path): content = """ -arr: !core/ndarray-1.0.0 +arr: !core/ndarray-1.1.0 data: [1, 2, 3] dtype: int32 - mask: !core/ndarray-1.0.0 + mask: !core/ndarray-1.1.0 data: ['a', 'b', 'c'] """ buff = helpers.yaml_to_asdf(content) @@ -657,7 +657,7 @@ def test_invalid_mask_datatype(tmp_path): def test_ndim_validation(tmp_path): content = """ obj: ! - a: !core/ndarray-1.0.0 + a: !core/ndarray-1.1.0 data: [1, 2, 3] """ buff = helpers.yaml_to_asdf(content) @@ -672,7 +672,7 @@ def test_ndim_validation(tmp_path): content = """ obj: ! - a: !core/ndarray-1.0.0 + a: !core/ndarray-1.1.0 data: [[1, 2, 3]] """ buff = helpers.yaml_to_asdf(content) @@ -682,7 +682,7 @@ def test_ndim_validation(tmp_path): content = """ obj: ! - a: !core/ndarray-1.0.0 + a: !core/ndarray-1.1.0 shape: [1, 3] data: [[1, 2, 3]] """ @@ -693,7 +693,7 @@ def test_ndim_validation(tmp_path): content = """ obj: ! - b: !core/ndarray-1.0.0 + b: !core/ndarray-1.1.0 data: [1, 2, 3] """ buff = helpers.yaml_to_asdf(content) @@ -703,7 +703,7 @@ def test_ndim_validation(tmp_path): content = """ obj: ! - b: !core/ndarray-1.0.0 + b: !core/ndarray-1.1.0 data: [[1, 2, 3]] """ buff = helpers.yaml_to_asdf(content) @@ -713,7 +713,7 @@ def test_ndim_validation(tmp_path): content = """ obj: ! - b: !core/ndarray-1.0.0 + b: !core/ndarray-1.1.0 data: [[[1, 2, 3]]] """ buff = helpers.yaml_to_asdf(content) @@ -731,7 +731,7 @@ def test_ndim_validation(tmp_path): def test_datatype_validation(tmp_path): content = """ obj: ! - a: !core/ndarray-1.0.0 + a: !core/ndarray-1.1.0 data: [1, 2, 3] datatype: float32 """ @@ -742,7 +742,7 @@ def test_datatype_validation(tmp_path): content = """ obj: ! - a: !core/ndarray-1.0.0 + a: !core/ndarray-1.1.0 data: [1, 2, 3] datatype: float64 """ @@ -758,7 +758,7 @@ def test_datatype_validation(tmp_path): content = """ obj: ! - a: !core/ndarray-1.0.0 + a: !core/ndarray-1.1.0 data: [1, 2, 3] datatype: int16 """ @@ -769,7 +769,7 @@ def test_datatype_validation(tmp_path): content = """ obj: ! - b: !core/ndarray-1.0.0 + b: !core/ndarray-1.1.0 data: [1, 2, 3] datatype: int16 """ @@ -785,7 +785,7 @@ def test_datatype_validation(tmp_path): content = """ obj: ! - a: !core/ndarray-1.0.0 + a: !core/ndarray-1.1.0 data: [[1, 'a'], [2, 'b'], [3, 'c']] datatype: - name: a @@ -808,7 +808,7 @@ def test_datatype_validation(tmp_path): def test_structured_datatype_validation(tmp_path): content = """ obj: ! - c: !core/ndarray-1.0.0 + c: !core/ndarray-1.1.0 data: [[1, 'a'], [2, 'b'], [3, 'c']] datatype: - name: a @@ -823,7 +823,7 @@ def test_structured_datatype_validation(tmp_path): content = """ obj: ! - c: !core/ndarray-1.0.0 + c: !core/ndarray-1.1.0 data: [[1, 'a'], [2, 'b'], [3, 'c']] datatype: - name: a @@ -843,7 +843,7 @@ def test_structured_datatype_validation(tmp_path): content = """ obj: ! - c: !core/ndarray-1.0.0 + c: !core/ndarray-1.1.0 data: [[1, 'a', 0], [2, 'b', 1], [3, 'c', 2]] datatype: - name: a @@ -865,7 +865,7 @@ def test_structured_datatype_validation(tmp_path): content = """ obj: ! - c: !core/ndarray-1.0.0 + c: !core/ndarray-1.1.0 data: [1, 2, 3] """ buff = helpers.yaml_to_asdf(content) @@ -880,7 +880,7 @@ def test_structured_datatype_validation(tmp_path): content = """ obj: ! - d: !core/ndarray-1.0.0 + d: !core/ndarray-1.1.0 data: [[1, 'a'], [2, 'b'], [3, 'c']] datatype: - name: a @@ -900,7 +900,7 @@ def test_structured_datatype_validation(tmp_path): content = """ obj: ! - d: !core/ndarray-1.0.0 + d: !core/ndarray-1.1.0 data: [[1, 'a'], [2, 'b'], [3, 'c']] datatype: - name: a @@ -924,7 +924,7 @@ def test_string_inline(): def test_inline_shape_mismatch(): content = """ -arr: !core/ndarray-1.0.0 +arr: !core/ndarray-1.1.0 data: [1, 2, 3] shape: [2] """ diff --git a/asdf/_tests/test_history.py b/asdf/_tests/test_history.py index 8da69a354..4c36756a9 100644 --- a/asdf/_tests/test_history.py +++ b/asdf/_tests/test_history.py @@ -108,7 +108,7 @@ def test_extension_metadata(tmp_path): with asdf.open(file_path) as af: assert len(af.tree["history"]["extensions"]) == 1 metadata = af.tree["history"]["extensions"][0] - assert metadata.extension_uri == "asdf://asdf-format.org/core/extensions/core-1.5.0" + assert metadata.extension_uri == "asdf://asdf-format.org/core/extensions/core-1.6.0" assert metadata.extension_class == "asdf.extension._manifest.ManifestExtension" assert metadata.software["name"] == "asdf" assert metadata.software["version"] == asdf.__version__ diff --git a/asdf/_tests/test_info.py b/asdf/_tests/test_info.py index fe4e114f4..210786af6 100644 --- a/asdf/_tests/test_info.py +++ b/asdf/_tests/test_info.py @@ -647,7 +647,14 @@ def test_recursive_info_object_support(capsys, tmp_path): recursive_obj = RecursiveObjectWithInfoSupport() recursive_obj.recursive = recursive_obj tree = {"random": 3.14159, "rtest": recursive_obj} - af = asdf.AsdfFile(tree) + af = asdf.AsdfFile() + # we need to do this to avoid validation against the + # manifest (generated in manifest_extension) which is + # now supported with the default asdf standard 1.6.0 + # I'm not sure why the manifest has this restriction + # and prior to switching to the default 1.6.0 was ignored + # which allowed this test to pass. + af._tree = tree af.info(refresh_extension_manager=True) captured = capsys.readouterr() assert "recursive reference" in captured.out diff --git a/asdf/_tests/test_schema.py b/asdf/_tests/test_schema.py index b8b8bef61..f6094263d 100644 --- a/asdf/_tests/test_schema.py +++ b/asdf/_tests/test_schema.py @@ -51,7 +51,7 @@ class TagReferenceExtension: name: type: string things: - $ref: "http://stsci.edu/schemas/asdf/core/ndarray-1.0.0" + $ref: "http://stsci.edu/schemas/asdf/core/ndarray-1.1.0" required: [name, things] ... """ @@ -124,7 +124,7 @@ def test_load_schema(tmp_path): type: object properties: foobar: - $ref: "../core/ndarray-1.0.0" + $ref: "../core/ndarray-1.1.0" required: [foobar] ... @@ -148,7 +148,7 @@ def test_load_schema_with_file_url(tmp_path): type: object properties: foobar: - $ref: "http://stsci.edu/schemas/asdf/core/ndarray-1.0.0" + $ref: "http://stsci.edu/schemas/asdf/core/ndarray-1.1.0" required: [foobar] ... @@ -377,7 +377,7 @@ def test_property_order(): ff = asdf.AsdfFile(tree) ff.write_to(buff) - ndarray_schema = schema.load_schema("http://stsci.edu/schemas/asdf/core/ndarray-1.0.0") + ndarray_schema = schema.load_schema("http://stsci.edu/schemas/asdf/core/ndarray-1.1.0") property_order = ndarray_schema["anyOf"][1]["propertyOrder"] last_index = 0 @@ -448,7 +448,7 @@ class CustomExtension: # Make sure tags get validated inside of other tags that know # nothing about them. yaml = f""" -array: !core/ndarray-1.0.0 +array: !core/ndarray-1.1.0 data: [0, 1, 2] custom: !<{tag_uri}> foo @@ -511,7 +511,7 @@ def test_check_complex_default(): schema.check_schema(s) - s["properties"]["a"]["tag"] = "tag:stsci.edu/asdf/core/ndarray-1.0.0" + s["properties"]["a"]["tag"] = "tag:stsci.edu/asdf/core/ndarray-1.1.0" with pytest.raises(ValidationError, match=r"mismatched tags, wanted .*, got .*"): schema.check_schema(s) @@ -598,6 +598,8 @@ class DefaultExtension: extension_uri = "http://nowhere.org/extensions/custom/default-1.0.0" with config_context() as cfg: + # later versions do not fill defaults + cfg.default_version = "1.5.0" cfg.add_extension(DefaultExtension()) cfg.add_resource_mapping({schema_uri: tag_schema}) yaml = """ @@ -608,7 +610,7 @@ class DefaultExtension: j: l: 362 """ - buff = yaml_to_asdf(yaml) + buff = yaml_to_asdf(yaml, standard_version="1.5.0") with asdf.open(buff) as ff: assert "a" in ff.tree["custom"] assert ff.tree["custom"]["a"] == 42 @@ -730,7 +732,7 @@ def test_tag_reference_validation(): custom: ! name: "Something" - things: !core/ndarray-1.0.0 + things: !core/ndarray-1.1.0 data: [1, 2, 3] """ @@ -787,7 +789,7 @@ class ForeignTagReferenceExtension: a: ! name: "Something" - things: !core/ndarray-1.0.0 + things: !core/ndarray-1.1.0 data: [1, 2, 3] """ diff --git a/asdf/_tests/test_types.py b/asdf/_tests/test_types.py index 825c5d718..213b710c1 100644 --- a/asdf/_tests/test_types.py +++ b/asdf/_tests/test_types.py @@ -16,10 +16,10 @@ def test_undefined_tag(with_lazy_tree): ! - 5 - {'message': 'there is no tag'} - - !core/ndarray-1.0.0 + - !core/ndarray-1.1.0 [[1, 2, 3], [4, 5, 6]] - ! - - !core/ndarray-1.0.0 [[7],[8],[9],[10]] + - !core/ndarray-1.1.0 [[7],[8],[9],[10]] - !core/complex-1.0.0 3.14j """ buff = yaml_to_asdf(yaml) diff --git a/asdf/_tests/test_yaml.py b/asdf/_tests/test_yaml.py index 0e6eae02d..96dd84908 100644 --- a/asdf/_tests/test_yaml.py +++ b/asdf/_tests/test_yaml.py @@ -167,7 +167,7 @@ def test_explicit_tags(): #ASDF_STANDARD 1.5.0 %YAML 1.1 --- ! -foo: ! [1, 2, 3] +foo: ! [1, 2, 3] ...""" # Check that fully qualified explicit tags work diff --git a/asdf/versioning.py b/asdf/versioning.py index 160c0f62d..bfbce131e 100644 --- a/asdf/versioning.py +++ b/asdf/versioning.py @@ -94,11 +94,11 @@ def __init__(self, version): ] -default_version = AsdfVersion("1.5.0") +default_version = AsdfVersion("1.6.0") # This is the ASDF Standard version that is currently in development # it is possible that breaking changes will be made to this version. -asdf_standard_development_version = AsdfVersion("1.6.0") +asdf_standard_development_version = AsdfVersion("1.7.0") # This is the ASDF Standard version at which the format of the history diff --git a/docs/asdf/config.rst b/docs/asdf/config.rst index 38e62e128..13327c01b 100644 --- a/docs/asdf/config.rst +++ b/docs/asdf/config.rst @@ -41,7 +41,7 @@ the currently active config: all_array_compression_kwargs: None default_array_save_base: True convert_unknown_ndarray_subclasses: False - default_version: 1.5.0 + default_version: 1.6.0 io_block_size: -1 legacy_fill_schema_defaults: True validate_on_read: True @@ -67,7 +67,7 @@ This allows for short-lived configuration changes that do not impact other code: all_array_compression_kwargs: None default_array_save_base: True convert_unknown_ndarray_subclasses: False - default_version: 1.5.0 + default_version: 1.6.0 io_block_size: -1 legacy_fill_schema_defaults: True validate_on_read: False @@ -81,7 +81,7 @@ This allows for short-lived configuration changes that do not impact other code: all_array_compression_kwargs: None default_array_save_base: True convert_unknown_ndarray_subclasses: False - default_version: 1.5.0 + default_version: 1.6.0 io_block_size: -1 legacy_fill_schema_defaults: True validate_on_read: True