Source code for pi_portal.modules.metaclasses.post_init_caller

"""A metaclass that adds a _post_init__ method to initialization."""

import abc
from typing import Any, Dict, cast


[docs]class MetaPostInitCaller(type): """Metaclass that calls __post_init__ after being initialized.""" def __call__( cls, *args: Any, **kwargs: Dict[str, Any], ) -> "MetaPostInitCaller": instance = type.__call__(cls, *args, **kwargs) instance.__post_init__() return cast(MetaPostInitCaller, instance) def __post_init__(cls) -> None: """Perform post initialization tasks."""
[docs]class MetaAbstractPostInitCaller(abc.ABCMeta, MetaPostInitCaller): """Abstract MetaPostInitCaller metaclass."""