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