Source code for mltrace.db.base

from sqlalchemy.ext.declarative import declarative_base


def _todict(obj: object) -> dict:
    """Return the object's dict excluding private attributes,
    sqlalchemy state and relationship attributes.
    """
    excl = ("_sa_adapter", "_sa_instance_state")
    return {
        k: v
        for k, v in vars(obj).items()
        if not k.startswith("_") and not any(hasattr(v, a) for a in excl)
    }


[docs]class BaseWithRepr: def __repr__(self): params = ", ".join(f"{k}={v}" for k, v in _todict(self).items()) return f"{self.__class__.__name__}({params})"
Base = declarative_base(cls=BaseWithRepr)