Attach generic references to normalized objects

This commit is contained in:
Lyncoln
2026-09-19 19:57:03 -04:00
parent 4b1326e150
commit d5caee8b8b
3 changed files with 111 additions and 0 deletions
+32
View File
@@ -110,11 +110,35 @@ class ObjectReference:
object.__setattr__(self, "logical_key", logical_key)
def _normalized_references(
references,
) -> tuple[ObjectReference, ...]:
normalized = tuple(references)
if any(
not isinstance(reference, ObjectReference)
for reference in normalized
):
raise ValueError(
"Object references must be ObjectReference instances"
)
if len(set(normalized)) != len(normalized):
raise ValueError("Object references cannot contain duplicates")
return normalized
@dataclass(frozen=True)
class DiscoveredObject:
object_type: str
local_key: str
payload: Mapping[str, Any]
references: tuple[ObjectReference, ...] = ()
def __post_init__(self) -> None:
object.__setattr__(
self,
"references",
_normalized_references(self.references),
)
@dataclass(frozen=True)
@@ -123,6 +147,14 @@ class NormalizedObject:
logical_key: str
payload: Mapping[str, Any]
local_key: str | None = None
references: tuple[ObjectReference, ...] = ()
def __post_init__(self) -> None:
object.__setattr__(
self,
"references",
_normalized_references(self.references),
)
@dataclass(frozen=True)