schemas: filter 'extraModules' from python classes and derived schemas

This commit is contained in:
Johannes Kirschbauer
2025-10-24 16:53:36 +02:00
parent 6ee4657da3
commit 1aba0577dc
3 changed files with 10 additions and 3 deletions

View File

@@ -243,7 +243,11 @@ API.register(get_system_file)
if "oneOf" not in return_type: if "oneOf" not in return_type:
msg = ( msg = (
f"Return type of function '{name}' is not a union type. Expected a union of Success and Error types." f"Return type of function '{name}' is not a union type. Expected a union of Success and Error types."
# @DavHau: no idea wy exactly this leads to the "oneOf" ot being present, but this should help # If the SuccessData type is unsupported it was dropped by Union narrowing.
# This is probably an antifeature
# Introduced because run_generator wanted to use:
# Callable[[Generator], dict[str, str]]
# In its function signature.
"Hint: When using dataclasses as return types, ensure they don't contain public fields with non-serializable types" "Hint: When using dataclasses as return types, ensure they don't contain public fields with non-serializable types"
) )
raise JSchemaTypeError(msg) raise JSchemaTypeError(msg)

View File

@@ -28,13 +28,11 @@ class InventoryInstanceRoleMachine(TypedDict):
InventoryInstanceRoleExtramodulesType = list[dict[str, Any] | list[Any] | bool | float | int | str | None]
InventoryInstanceRoleMachinesType = dict[str, InventoryInstanceRoleMachine] InventoryInstanceRoleMachinesType = dict[str, InventoryInstanceRoleMachine]
InventoryInstanceRoleSettingsType = Unknown InventoryInstanceRoleSettingsType = Unknown
InventoryInstanceRoleTagsType = dict[str, Any] | list[str] InventoryInstanceRoleTagsType = dict[str, Any] | list[str]
class InventoryInstanceRole(TypedDict): class InventoryInstanceRole(TypedDict):
extraModules: NotRequired[InventoryInstanceRoleExtramodulesType]
machines: NotRequired[InventoryInstanceRoleMachinesType] machines: NotRequired[InventoryInstanceRoleMachinesType]
settings: NotRequired[InventoryInstanceRoleSettingsType] settings: NotRequired[InventoryInstanceRoleSettingsType]
tags: NotRequired[InventoryInstanceRoleTagsType] tags: NotRequired[InventoryInstanceRoleTagsType]

View File

@@ -241,6 +241,11 @@ def generate_dataclass(
# If we are at the top level, and the attribute name is not explicitly included we only do shallow # If we are at the top level, and the attribute name is not explicitly included we only do shallow
field_name = prop.replace("-", "_") field_name = prop.replace("-", "_")
# Skip "extraModules"
# TODO: Introduce seperate model that is tied to the serialization format
if "extraModules" in field_name:
continue
# if len(attr_path) == 0 and prop in shallow_attrs: # if len(attr_path) == 0 and prop in shallow_attrs:
# field_def = field_name, "dict[str, Any]" # field_def = field_name, "dict[str, Any]"
# fields_with_default.append(field_def) # fields_with_default.append(field_def)