from __future__ import annotations from collections.abc import Iterable from typing import Any from wandb.sdk.wandb_settings import Settings class SettingsStatic(Settings): """A readonly object that wraps a protobuf Settings message. Implements the mapping protocol, so you can access settings as attributes or items. """ def __init__(self, data: dict[str, Any]) -> None: super().__init__(**data) def __setattr__(self, name: str, value: object) -> None: raise AttributeError("Error: SettingsStatic is a readonly object") def __setitem__(self, key: str, val: object) -> None: raise AttributeError("Error: SettingsStatic is a readonly object") def keys(self) -> Iterable[str]: return self.__dict__.keys() def __getitem__(self, key: str) -> Any: return self.__dict__[key] def __getattr__(self, name: str) -> Any: try: return self.__dict__[name] except KeyError: raise AttributeError(f"SettingsStatic has no attribute {name}") def __str__(self) -> str: return str(self.__dict__) def __contains__(self, key: str) -> bool: return key in self.__dict__