Source code for simstack.models.models

import base64
from typing import Optional, List, TypeVar
from odmantic import Model, Field, EmbeddedModel
from simstack.models.parameters import Parameters
from simstack.models.pickle_models import FunctionPickle
import logging

logger = logging.getLogger("Models")

T = TypeVar("T")


[docs] class ModelMapping(Model): """ name: shorthand - must be unique mapping: full name - path relative to project root in module.module.class/function format """ name: str = Field(unique=True) mapping: str = Field(unique=True) version: Optional[str] = None collection_name: str json_schema: Optional[str] = None ui_schema: Optional[str] = None
[docs] class DataMapping(EmbeddedModel): name: str mapping: str description: Optional[str] = "" version: Optional[str] = None
[docs] class NodeModel(Model): name: str = Field(unique=True) function_mapping: str = Field(unique=True) version: Optional[str] = None input_mappings: List[DataMapping] result_mappings: List[DataMapping] = Field(default_factory=list) called_nodes: List[str] = Field(default_factory=list) description: Optional[str] = "" favorite: bool = False default_parameters: Parameters pickle_function: Optional[ FunctionPickle ] = None # Reference to FunctionPickle if available model_config = { "collection": "node_model", "json_encoders": {bytes: lambda b: base64.b64encode(b).decode("ascii")}, }