Classgen: make type order predictable

This commit is contained in:
Johannes Kirschbauer
2024-07-19 18:49:16 +02:00
parent 5c18f67fed
commit 6d441a1494
2 changed files with 11 additions and 11 deletions

View File

@@ -10,24 +10,24 @@ from typing import Any
@dataclass @dataclass
class MachineDeploy: class MachineDeploy:
targetHost: str | None = field(default = None) targetHost: None | str = field(default = None)
@dataclass @dataclass
class Machine: class Machine:
deploy: MachineDeploy deploy: MachineDeploy
name: str name: str
description: str | None = field(default = None) description: None | str = field(default = None)
icon: str | None = field(default = None) icon: None | str = field(default = None)
system: str | None = field(default = None) system: None | str = field(default = None)
tags: list[str] = field(default_factory = list) tags: list[str] = field(default_factory = list)
@dataclass @dataclass
class Meta: class Meta:
name: str name: str
description: str | None = field(default = None) description: None | str = field(default = None)
icon: str | None = field(default = None) icon: None | str = field(default = None)
@dataclass @dataclass
@@ -50,8 +50,8 @@ class ServiceBorgbackupMachine:
@dataclass @dataclass
class ServiceMeta: class ServiceMeta:
name: str name: str
description: str | None = field(default = None) description: None | str = field(default = None)
icon: str | None = field(default = None) icon: None | str = field(default = None)
@dataclass @dataclass
@@ -118,7 +118,7 @@ class ServicePackage:
@dataclass @dataclass
class SingleDiskConfig: class SingleDiskConfig:
device: str | None = field(default = None) device: None | str = field(default = None)
@dataclass @dataclass

View File

@@ -160,7 +160,8 @@ def get_field_def(
default_factory: str | None = None, default_factory: str | None = None,
type_apendix: str = "", type_apendix: str = "",
) -> str: ) -> str:
serialised_types = " | ".join(field_types) + type_apendix sorted_field_types = sorted(field_types)
serialised_types = " | ".join(sorted_field_types) + type_apendix
if not default and not default_factory and not field_meta: if not default and not default_factory and not field_meta:
return f"{field_name}: {serialised_types}" return f"{field_name}: {serialised_types}"
field_init = "field(" field_init = "field("
@@ -242,7 +243,6 @@ def generate_dataclass(schema: dict[str, Any], class_name: str = root_class) ->
assert field_types, f"Python type not found for {prop} {prop_info}" assert field_types, f"Python type not found for {prop} {prop_info}"
# serialised_types = " | ".join(field_types)
field_meta = None field_meta = None
if field_name != prop: if field_name != prop:
field_meta = f"""{{"original_name": "{prop}"}}""" field_meta = f"""{{"original_name": "{prop}"}}"""