Entidades y estructuras de datos
Consulta las referencias de DotDict, StdClass, Sentinel y FreezeThaw para conocer todos sus métodos y límites. Esta página conserva los ejemplos de integración con entidades.
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