Source code for orm.orm_base

from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.inspection import inspect
from sqlalchemy import LargeBinary


[docs] class OrmBase(DeclarativeBase): @classmethod
[docs] def filter_keys(Self, data: dict): return {k: v for k, v in data.items() if hasattr(Self, k)}
[docs] def update(self, **kwargs): for key, value in kwargs.items(): if hasattr(self, key): setattr(self, key, value)
[docs] def _asdict(self): return { c.name: "<BLOB>" if isinstance(c.type, LargeBinary) else getattr(self, c.name) for c in inspect(type(self)).c }
[docs] def __str__(self): parts = [] if hasattr(self, 'id'): parts.append(f"id={self.id}") if hasattr(self, 'publicId'): parts.append(f"publicId={self.publicId}") return f"<{type(self).__name__} {', '.join(parts)}>"
[docs] def __repr__(self): return f"{type(self).__name__}({', '.join([f'{k}={repr(v)}' for k, v in self._asdict().items()])}>"
[docs] def _validate_inclusion(self, key, value, valid_values): if value not in valid_values: raise ValueError(f"Invalid value for {key}: {repr(value)}, must be one of {repr(valid_values)}") return value