Source code for ace.centralize.models.base

"""
    Base model class for Centralize models

    Provides common serialization functionality for all models.
"""
from ace.utils import convert_to_dict
from pydantic import BaseModel
import re


[docs] class ModelBase: """Base class providing dictionary serialization for all centralize models."""
[docs] def as_dict(self): return convert_to_dict(self)
[docs] @classmethod def from_dict(cls, data: dict, exclude_none: bool = True): # filtered_data = {k: v for k, v in data.items() if v is not None} if exclude_none else data try: return cls(**data) except TypeError: # If validation fails, attempt to convert keys to snake_case and try again snake_case_data = {cls._to_snake_case(k): v for k, v in data.items()} return cls(**snake_case_data)
@staticmethod def _to_snake_case(name: str) -> str: return re.sub(r'(?<!^)(?=[A-Z])', '_', name).lower()