velai / dataflow /types.py
cansik's picture
Upload folder via script
691f45a verified
from __future__ import annotations
from dataclasses import dataclass
from typing import Generic, TypeVar, Type, Callable, Any
from .enums import DataTypeId
T = TypeVar("T")
@dataclass(frozen=True, slots=True)
class DataType(Generic[T]):
"""Logical datatype used on ports.
:param id: stable enum id
:param name: human readable name
:param py_type: Python runtime type
:param encode: optional encoder to JSON safe data
:param decode: optional decoder from JSON safe data
"""
id: DataTypeId
name: str
py_type: Type[T]
encode: Callable[[T], Any] | None = None
decode: Callable[[Any], T] | None = None
color: str = "#888888"