From 9c0f0ba057c34c9cb8ce4d09f4688ef6eed80932 Mon Sep 17 00:00:00 2001 From: amstee Date: Fri, 2 Aug 2024 15:50:52 +0100 Subject: [PATCH] feat: define proper types for SchemaMetadata & SchemaRuleSet to facilitate future impl --- karapace/typing.py | 4 +++- tests/integration/schema_registry/test_jsonschema.py | 6 +++--- tests/integration/test_schema_protobuf.py | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/karapace/typing.py b/karapace/typing.py index 4daf4739e..77058cce2 100644 --- a/karapace/typing.py +++ b/karapace/typing.py @@ -6,7 +6,7 @@ from enum import Enum, unique from karapace.errors import InvalidVersion -from typing import ClassVar, Dict, List, Mapping, NewType, Sequence, Union +from typing import Any, ClassVar, Dict, List, Mapping, NewType, Sequence, Union from typing_extensions import TypeAlias import functools @@ -23,6 +23,8 @@ Subject = NewType("Subject", str) VersionTag = Union[str, int] +SchemaMetadata = NewType("SchemaMetadata", Dict[str, Any]) +SchemaRuleSet = NewType("SchemaRuleSet", Dict[str, Any]) # note: the SchemaID is a unique id among all the schemas (and each version should be assigned to a different id) # basically the same SchemaID refer always to the same TypedSchema. diff --git a/tests/integration/schema_registry/test_jsonschema.py b/tests/integration/schema_registry/test_jsonschema.py index 4b6440bb3..d765cb585 100644 --- a/tests/integration/schema_registry/test_jsonschema.py +++ b/tests/integration/schema_registry/test_jsonschema.py @@ -6,6 +6,7 @@ from karapace.client import Client from karapace.compatibility import CompatibilityModes from karapace.schema_reader import SchemaType +from karapace.typing import SchemaMetadata, SchemaRuleSet from tests.schemas.json_schemas import ( A_DINT_B_DINT_OBJECT_SCHEMA, A_DINT_B_INT_OBJECT_SCHEMA, @@ -97,7 +98,6 @@ TYPES_STRING_SCHEMA, ) from tests.utils import new_random_name -from typing import Any, Dict import json import pytest @@ -241,8 +241,8 @@ async def test_same_jsonschema_must_have_same_id( registry_async_client: Client, compatibility: CompatibilityModes, trail: str, - metadata: Dict[str, Any], - rule_set: Dict[str, Any], + metadata: SchemaMetadata, + rule_set: SchemaRuleSet, ) -> None: for schema in ALL_SCHEMAS: subject = new_random_name("subject") diff --git a/tests/integration/test_schema_protobuf.py b/tests/integration/test_schema_protobuf.py index c14650a2d..716a03e12 100644 --- a/tests/integration/test_schema_protobuf.py +++ b/tests/integration/test_schema_protobuf.py @@ -9,10 +9,10 @@ from karapace.errors import InvalidTest from karapace.protobuf.kotlin_wrapper import trim_margin from karapace.schema_type import SchemaType -from karapace.typing import JsonData +from karapace.typing import JsonData, SchemaMetadata, SchemaRuleSet from tests.base_testcase import BaseTestCase from tests.utils import create_subject_name_factory -from typing import Any, Dict, List, Optional, Union +from typing import List, Optional, Union import logging import pytest @@ -966,7 +966,7 @@ class ReferenceTestCase(BaseTestCase): @pytest.mark.parametrize("metadata", [None, {}]) @pytest.mark.parametrize("rule_set", [None, {}]) async def test_references( - testcase: ReferenceTestCase, registry_async_client: Client, metadata: Dict[str, Any], rule_set: Dict[str, Any] + testcase: ReferenceTestCase, registry_async_client: Client, metadata: SchemaMetadata, rule_set: SchemaRuleSet ): for testdata in testcase.schemas: if isinstance(testdata, TestCaseSchema):