Source code for mljet.utils.utils
"""Utils module."""
import inspect
import re
from typing import Callable
CLS_REGEX = re.compile(
r"<class\s'(.*?)'>", re.IGNORECASE | re.MULTILINE | re.DOTALL
)
[docs]def drop_unnecessary_kwargs(func: Callable, kwargs: dict) -> dict:
"""Drop unnecessary kwargs."""
spec = inspect.getfullargspec(func).args
return {
param: param_value
for param, param_value in kwargs.items()
if param in spec
}
[docs]def is_package_installed(name: str) -> bool:
"""Check if package is installed and valid."""
try:
__import__(name)
return True
except Exception:
return False
[docs]def parse_cls_name(obj) -> str:
"""Parse class name."""
match_obj = CLS_REGEX.match(str(type(obj)))
if match_obj:
return match_obj.group(1)
return str(type(obj))