| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- from __future__ import annotations
- from typing import Any, Callable
- import wandb
- class PreInitObject:
- def __init__(self, name: str, destination: Any | None = None) -> None:
- self._name = name
- if destination is not None:
- self.__doc__ = destination.__doc__
- def __getitem__(self, key: str) -> None:
- raise wandb.Error(f"You must call wandb.init() before {self._name}[{key!r}]")
- def __setitem__(self, key: str, value: Any) -> Any:
- raise wandb.Error(f"You must call wandb.init() before {self._name}[{key!r}]")
- def __setattr__(self, key: str, value: Any) -> Any:
- if not key.startswith("_"):
- raise wandb.Error(f"You must call wandb.init() before {self._name}.{key}")
- else:
- return object.__setattr__(self, key, value)
- def __getattr__(self, key: str) -> Any:
- if not key.startswith("_"):
- raise wandb.Error(f"You must call wandb.init() before {self._name}.{key}")
- else:
- raise AttributeError
- def PreInitCallable( # noqa: N802
- name: str, destination: Any | None = None
- ) -> Callable:
- def preinit_wrapper(*args: Any, **kwargs: Any) -> Any:
- raise wandb.Error(f"You must call wandb.init() before {name}()")
- preinit_wrapper.__name__ = str(name)
- if destination:
- preinit_wrapper.__wrapped__ = destination # type: ignore
- preinit_wrapper.__doc__ = destination.__doc__
- return preinit_wrapper
|