Skip to content

Commit cb9fe15

Browse files
authored
Merge pull request #160 from opsmill/dga-20241201-cleanup-schema
Cleanup and restructure Pydantic models to manage the Schema
2 parents 0dac001 + 0238097 commit cb9fe15

27 files changed

+751
-608
lines changed

infrahub_sdk/checks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from pathlib import Path
1818

1919
from . import InfrahubClient
20-
from .schema import InfrahubCheckDefinitionConfig
20+
from .schema.repository import InfrahubCheckDefinitionConfig
2121

2222
INFRAHUB_CHECK_VARIABLE_TO_IMPORT = "INFRAHUB_CHECKS"
2323

infrahub_sdk/client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
from .protocols_base import CoreNode, CoreNodeSync
5151
from .queries import get_commit_update_mutation
5252
from .query_groups import InfrahubGroupContext, InfrahubGroupContextSync
53-
from .schema import InfrahubSchema, InfrahubSchemaSync, NodeSchema
53+
from .schema import InfrahubSchema, InfrahubSchemaSync, NodeSchemaAPI
5454
from .store import NodeStore, NodeStoreSync
5555
from .timestamp import Timestamp
5656
from .types import AsyncRequester, HTTPMethod, SyncRequester
@@ -448,12 +448,12 @@ async def get(
448448
filters: MutableMapping[str, Any] = {}
449449

450450
if id:
451-
if not is_valid_uuid(id) and isinstance(schema, NodeSchema) and schema.default_filter:
451+
if not is_valid_uuid(id) and isinstance(schema, NodeSchemaAPI) and schema.default_filter:
452452
filters[schema.default_filter] = id
453453
else:
454454
filters["ids"] = [id]
455455
if hfid:
456-
if isinstance(schema, NodeSchema) and schema.human_friendly_id:
456+
if isinstance(schema, NodeSchemaAPI) and schema.human_friendly_id:
457457
filters["hfid"] = hfid
458458
else:
459459
raise ValueError("Cannot filter by HFID if the node doesn't have an HFID defined")
@@ -1916,12 +1916,12 @@ def get(
19161916
filters: MutableMapping[str, Any] = {}
19171917

19181918
if id:
1919-
if not is_valid_uuid(id) and isinstance(schema, NodeSchema) and schema.default_filter:
1919+
if not is_valid_uuid(id) and isinstance(schema, NodeSchemaAPI) and schema.default_filter:
19201920
filters[schema.default_filter] = id
19211921
else:
19221922
filters["ids"] = [id]
19231923
if hfid:
1924-
if isinstance(schema, NodeSchema) and schema.human_friendly_id:
1924+
if isinstance(schema, NodeSchemaAPI) and schema.human_friendly_id:
19251925
filters["hfid"] = hfid
19261926
else:
19271927
raise ValueError("Cannot filter by HFID if the node doesn't have an HFID defined")

infrahub_sdk/code_generator.py

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
from collections.abc import Mapping
2-
from typing import Any, Optional
2+
from typing import Any, Optional, Union
33

44
import jinja2
55

66
from . import protocols as sdk_protocols
77
from .ctl.constants import PROTOCOLS_TEMPLATE
88
from .schema import (
9-
AttributeSchema,
9+
AttributeSchemaAPI,
1010
GenericSchema,
11-
MainSchemaTypes,
11+
GenericSchemaAPI,
12+
MainSchemaTypesAll,
1213
NodeSchema,
13-
ProfileSchema,
14-
RelationshipSchema,
14+
NodeSchemaAPI,
15+
ProfileSchemaAPI,
16+
RelationshipSchemaAPI,
1517
)
1618

1719
ATTRIBUTE_KIND_MAP = {
@@ -40,17 +42,17 @@
4042

4143

4244
class CodeGenerator:
43-
def __init__(self, schema: dict[str, MainSchemaTypes]):
44-
self.generics: dict[str, GenericSchema] = {}
45-
self.nodes: dict[str, NodeSchema] = {}
46-
self.profiles: dict[str, ProfileSchema] = {}
45+
def __init__(self, schema: dict[str, MainSchemaTypesAll]):
46+
self.generics: dict[str, Union[GenericSchemaAPI, GenericSchema]] = {}
47+
self.nodes: dict[str, Union[NodeSchemaAPI, NodeSchema]] = {}
48+
self.profiles: dict[str, ProfileSchemaAPI] = {}
4749

4850
for name, schema_type in schema.items():
49-
if isinstance(schema_type, GenericSchema):
51+
if isinstance(schema_type, (GenericSchemaAPI, GenericSchema)):
5052
self.generics[name] = schema_type
51-
if isinstance(schema_type, NodeSchema):
53+
if isinstance(schema_type, (NodeSchemaAPI, NodeSchema)):
5254
self.nodes[name] = schema_type
53-
if isinstance(schema_type, ProfileSchema):
55+
if isinstance(schema_type, ProfileSchemaAPI):
5456
self.profiles[name] = schema_type
5557

5658
self.base_protocols = [
@@ -92,7 +94,7 @@ def _jinja2_filter_inheritance(value: dict[str, Any]) -> str:
9294
return ", ".join(inherit_from)
9395

9496
@staticmethod
95-
def _jinja2_filter_render_attribute(value: AttributeSchema) -> str:
97+
def _jinja2_filter_render_attribute(value: AttributeSchemaAPI) -> str:
9698
attribute_kind: str = ATTRIBUTE_KIND_MAP[value.kind]
9799

98100
if value.optional:
@@ -101,7 +103,7 @@ def _jinja2_filter_render_attribute(value: AttributeSchema) -> str:
101103
return f"{value.name}: {attribute_kind}"
102104

103105
@staticmethod
104-
def _jinja2_filter_render_relationship(value: RelationshipSchema, sync: bool = False) -> str:
106+
def _jinja2_filter_render_relationship(value: RelationshipSchemaAPI, sync: bool = False) -> str:
105107
name = value.name
106108
cardinality = value.cardinality
107109

@@ -116,12 +118,12 @@ def _jinja2_filter_render_relationship(value: RelationshipSchema, sync: bool = F
116118

117119
@staticmethod
118120
def _sort_and_filter_models(
119-
models: Mapping[str, MainSchemaTypes], filters: Optional[list[str]] = None
120-
) -> list[MainSchemaTypes]:
121+
models: Mapping[str, MainSchemaTypesAll], filters: Optional[list[str]] = None
122+
) -> list[MainSchemaTypesAll]:
121123
if filters is None:
122124
filters = ["CoreNode"]
123125

124-
filtered: list[MainSchemaTypes] = []
126+
filtered: list[MainSchemaTypesAll] = []
125127
for name, model in models.items():
126128
if name in filters:
127129
continue

infrahub_sdk/ctl/check.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from ..ctl.repository import get_repository_config
1818
from ..ctl.utils import catch_exception, execute_graphql_query
1919
from ..exceptions import ModuleImportError
20-
from ..schema import InfrahubCheckDefinitionConfig, InfrahubRepositoryConfig
20+
from ..schema.repository import InfrahubCheckDefinitionConfig, InfrahubRepositoryConfig
2121

2222
app = typer.Typer()
2323
console = Console()

infrahub_sdk/ctl/cli_commands.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,8 @@
3838
from ..ctl.validate import app as validate_app
3939
from ..exceptions import GraphQLError, ModuleImportError
4040
from ..jinja2 import identify_faulty_jinja_code
41-
from ..schema import (
42-
InfrahubRepositoryConfig,
43-
MainSchemaTypes,
44-
SchemaRoot,
45-
)
41+
from ..schema import MainSchemaTypesAll, SchemaRoot
42+
from ..schema.repository import InfrahubRepositoryConfig
4643
from ..utils import get_branch, write_to_file
4744
from ..yaml import SchemaFile
4845
from .exporter import dump
@@ -364,7 +361,7 @@ def protocols(
364361
) -> None:
365362
"""Export Python protocols corresponding to a schema."""
366363

367-
schema: dict[str, MainSchemaTypes] = {}
364+
schema: dict[str, MainSchemaTypesAll] = {}
368365

369366
if schemas:
370367
schemas_data = load_yamlfile_from_disk_and_exit(paths=schemas, file_type=SchemaFile, console=console)

infrahub_sdk/ctl/generator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from ..ctl.utils import execute_graphql_query, parse_cli_vars
1111
from ..exceptions import ModuleImportError
1212
from ..node import InfrahubNode
13-
from ..schema import InfrahubRepositoryConfig
13+
from ..schema.repository import InfrahubRepositoryConfig
1414

1515

1616
async def run(

infrahub_sdk/ctl/render.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from rich.console import Console
22

3-
from ..schema import InfrahubRepositoryConfig
3+
from ..schema.repository import InfrahubRepositoryConfig
44

55

66
def list_jinja2_transforms(config: InfrahubRepositoryConfig) -> None:

infrahub_sdk/ctl/repository.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from ..ctl.exceptions import FileNotValidError
1313
from ..ctl.utils import init_logging
1414
from ..graphql import Mutation
15-
from ..schema import InfrahubRepositoryConfig
15+
from ..schema.repository import InfrahubRepositoryConfig
1616
from ._file import read_file
1717
from .parameters import CONFIG_PARAM
1818

infrahub_sdk/ctl/transform.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from rich.console import Console
22

3-
from ..schema import InfrahubRepositoryConfig
3+
from ..schema.repository import InfrahubRepositoryConfig
44

55

66
def list_transforms(config: InfrahubRepositoryConfig) -> None:

infrahub_sdk/ctl/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
ServerNotReachableError,
2727
ServerNotResponsiveError,
2828
)
29-
from ..schema import InfrahubRepositoryConfig
29+
from ..schema.repository import InfrahubRepositoryConfig
3030
from ..yaml import YamlFile
3131
from .client import initialize_client_sync
3232

0 commit comments

Comments
 (0)