SIRIN / sirin /utils /classes.py
parchiev's picture
Convert static replay to Streamlit app (hosted profile)
6c98539 verified
Raw
History Blame Contribute Delete
1.13 kB
from typing import Tuple, Type, Union
from loguru import logger as lg
from hydra._internal.instantiate._instantiate2 import _resolve_target
def check_hydra_target_issubclass(
class_name: str,
instance_of: Union[Type, Tuple[Type, ...]],
check_if_meta: bool = False,
) -> bool:
target = _resolve_target(class_name, '')
check_result = issubclass(target, instance_of)
if check_if_meta:
msg_type = "metaclass"
else:
msg_type = "subclass"
if not check_result:
raise TypeError(
f"The class `{class_name}` is not a {msg_type} of `{instance_of.__name__}`."
)
return check_result
def check_nonexisting_args(
kwargs: dict,
raise_excepion: bool = False,
raise_warning: bool = True,
) -> None:
"""
Helper function in case when arguments are passed as dictionary
and we want to check if there are any unknown arguments.
"""
if kwargs:
if raise_excepion:
raise TypeError(f"Unknown arguments: {kwargs.keys()}")
elif raise_warning:
lg.warning(f"Unknown arguments: {kwargs.keys()}")