32 lines
571 B
Python
32 lines
571 B
Python
from __future__ import annotations
|
|
from dataclasses import dataclass
|
|
from typing import Any, Callable, Optional
|
|
|
|
|
|
@dataclass
|
|
class Object:
|
|
id: str
|
|
model: dict
|
|
|
|
|
|
@dataclass
|
|
class Morphism:
|
|
id: str
|
|
source: str # Object.id
|
|
target: str # Object.id
|
|
contract_name: str
|
|
contract_version: str
|
|
payload: dict
|
|
|
|
|
|
@dataclass
|
|
class Functor:
|
|
id: str
|
|
name: str
|
|
transform: Optional[Callable[[dict], dict]] = None
|
|
|
|
def apply(self, data: dict) -> dict:
|
|
if self.transform:
|
|
return self.transform(data)
|
|
return data
|