Source code for cosapp.drivers.validitycheck

import logging

from typing import Optional
from cosapp.utils.validate import validate
from cosapp.drivers.optionaldriver import OptionalDriver

logger = logging.getLogger(__name__)


# TODO
# [ ] Quid for vector variables
[docs]class ValidityCheck(OptionalDriver): """ When executed, this driver reports in the log the validity status for all variables of the driver `System` owner (and its children). Parameters ---------- name : str Name of the driver owner : System :py:class:`~cosapp.systems.system.System` to which this driver belong **kwargs : Any Keyword arguments will be used to set driver options """ __slots__ = tuple() def __init__(self, name: str, owner: Optional["cosapp.systems.System"] = None, **kwargs) -> None: """Initialize a driver Parameters ---------- name: str Name of the `Driver` owner : System, optional :py:class:`~cosapp.systems.system.System` to which this driver belongs; default None **kwargs : Dict[str, Any] Optional keywords arguments """ super().__init__(name, owner, **kwargs)
[docs] def compute(self) -> None: """Report in the log the validity status for all variables recursively collected in owner `System` and its children. """ warnings, errors = validate(self.owner) def message(log_dict): return "\n" + "\n\t".join(f"{key}{msg}" for key, msg in log_dict.items()) if warnings: logger.warning(message(warnings)) if errors: logger.error(message(errors))