| import logging |
| import sys |
| from types import ModuleType |
| from typing import Set |
| |
| # log level (levels print what it says + all levels listed below it) |
| # DEBUG print full traces <-- lowest level + print tracing of every instruction |
| # INFO print compiler functions + distributed graphs |
| # WARN print warnings |
| # ERROR print exceptions |
| log_level: int = logging.DEBUG |
| # Verbose will print full stack traces on warnings and errors |
| verbose = False |
| |
| # the name of a file to write the logs to |
| log_file_name: None = None |
| |
| |
| class _AccessLimitingConfig(ModuleType): |
| def __setattr__(self, name, value) -> None: |
| if name not in _allowed_config_names: |
| raise AttributeError(f"{__name__}.{name} does not exist") |
| return object.__setattr__(self, name, value) |
| |
| |
| _allowed_config_names: Set[str] = {*globals().keys()} |
| sys.modules[__name__].__class__ = _AccessLimitingConfig |