From e5eb795f606a1a851bdbb776873770f846b96c65 Mon Sep 17 00:00:00 2001 From: "Keto D. Zhang" Date: Sun, 25 Aug 2024 17:25:34 -0700 Subject: [PATCH] fix: generated schema id should not be same as tag id follows "${schema.tag}/schema" --- asdf_pydantic/schema.py | 2 +- tests/test_model.py | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/asdf_pydantic/schema.py b/asdf_pydantic/schema.py index c8ad21f..952a695 100644 --- a/asdf_pydantic/schema.py +++ b/asdf_pydantic/schema.py @@ -32,7 +32,7 @@ def generate(self, schema, mode="validation"): if self.tag_uri: json_schema["$schema"] = self.schema_dialect - json_schema["id"] = self.tag_uri + json_schema["id"] = f"{self.tag_uri}/schema" json_schema["tag"] = f"tag:{self.tag_uri.split('://', maxsplit=2)[-1]}" # TODO: Convert jsonschema 2020-12 to ASDF schema diff --git a/tests/test_model.py b/tests/test_model.py index 0566ab5..29bb5fe 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -1,13 +1,13 @@ import pytest +import yaml from asdf.extension import TagDefinition from asdf_pydantic import AsdfPydanticModel -def tag(request): - return request.param - - +######################################################################################## +# TAGS +######################################################################################## @pytest.mark.parametrize( "tag", ( @@ -49,3 +49,16 @@ class TestModel(AsdfPydanticModel): _tag = tag assert TestModel.get_tag_uri() + + +######################################################################################## +# SCHEMA +######################################################################################## +def test_generated_schema_id_uses_tag_in_pattern(): + class TestModel(AsdfPydanticModel): + _tag = "asdf://asdf-pydantic/tags/test-0.0.1" + + assert ( + yaml.safe_load(TestModel.model_asdf_schema())["id"] + == "asdf://asdf-pydantic/tags/test-0.0.1/schema" + )