44 lines
768 B
Python
44 lines
768 B
Python
from __future__ import annotations
|
|
|
|
from typing import Any, Dict
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class Object(BaseModel):
|
|
id: str
|
|
name: str
|
|
description: str | None = None
|
|
fields: Dict[str, Any] = {}
|
|
|
|
|
|
class Morphism(BaseModel):
|
|
id: str
|
|
name: str
|
|
source_object_id: str
|
|
target_object_id: str
|
|
schema: Dict[str, Any] = {}
|
|
|
|
|
|
class Functor(BaseModel):
|
|
id: str
|
|
name: str
|
|
map_function: str # serialized function body or reference
|
|
|
|
|
|
class Limit(BaseModel):
|
|
id: str
|
|
name: str
|
|
constraints: Dict[str, Any] = {}
|
|
|
|
|
|
class Colimit(BaseModel):
|
|
id: str
|
|
name: str
|
|
constraints: Dict[str, Any] = {}
|
|
|
|
|
|
class TimeMonoid(BaseModel):
|
|
id: str
|
|
rounds: int = 1
|
|
mode: str = "sync" # or async, delta-sync, etc.
|