Entidades y estructuras de datos
Usa una dataclass para representar un resultado de aplicación con campos conocidos; BaseEntity añade serialización recursiva y metadatos. Usa DotDict o StdClass cuando las claves se conocen durante la ejecución. Estas utilidades no validan datos externos como un Schema. Los ejemplos son independientes entre sí.
Flujos de trabajo comunes
Sección titulada «Flujos de trabajo comunes»Definir una entidad serializable
Sección titulada «Definir una entidad serializable»from dataclasses import dataclass, fieldfrom enum import Enum
from orionis.support.entities import BaseEntity
class Status(Enum): ACTIVE = "active"
@dataclassclass Account(BaseEntity): name: str status: Status = Status.ACTIVE tags: list[str] = field(default_factory=list)
account = Account("Ada", tags=["admin"])assert account.toDict() == { "name": "Ada", "status": "active", "tags": ["admin"],}assert [item["name"] for item in account.getFields()] == ["name", "status", "tags"]Usar datos orientados a atributos
Sección titulada «Usar datos orientados a atributos»from orionis.support.types import DotDict, StdClass
settings = DotDict({"mail": {"driver": "smtp"}})assert settings.mail.driver == "smtp"assert settings.unknown is None
user = StdClass(name="Ada", active=True)user.update(role="admin")assert user.toDict()["role"] == "admin"assert settings.export() == {"mail": {"driver": "smtp"}}Congelar instantáneas de configuración
Sección titulada «Congelar instantáneas de configuración»from types import MappingProxyType
from orionis.support.structures.freezer import FreezeThaw
source = {"hosts": ["a.example", "b.example"], "options": {"tls": True}}frozen = FreezeThaw.freeze(source)
assert isinstance(frozen, MappingProxyType)assert frozen["hosts"] == ("a.example", "b.example")assert FreezeThaw.thaw(frozen) == sourceReferencia y próximos pasos
Sección titulada «Referencia y próximos pasos»base.py · dot_dict.py · std.py · freezer.py