|
|
|
""" Utilities for developers only.
|
|
These are not visible to users (not automatically imported). And should not
|
|
appeared in docs."""
|
|
|
|
|
|
|
|
def create_dummy_class(klass, dependency, message=""):
|
|
"""
|
|
When a dependency of a class is not available, create a dummy class which throws ImportError
|
|
when used.
|
|
|
|
Args:
|
|
klass (str): name of the class.
|
|
dependency (str): name of the dependency.
|
|
message: extra message to print
|
|
Returns:
|
|
class: a class object
|
|
"""
|
|
err = "Cannot import '{}', therefore '{}' is not available.".format(dependency, klass)
|
|
if message:
|
|
err = err + " " + message
|
|
|
|
class _DummyMetaClass(type):
|
|
|
|
def __getattr__(_, __):
|
|
raise ImportError(err)
|
|
|
|
class _Dummy(object, metaclass=_DummyMetaClass):
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
raise ImportError(err)
|
|
|
|
return _Dummy
|
|
|
|
|
|
def create_dummy_func(func, dependency, message=""):
|
|
"""
|
|
When a dependency of a function is not available, create a dummy function which throws
|
|
ImportError when used.
|
|
|
|
Args:
|
|
func (str): name of the function.
|
|
dependency (str or list[str]): name(s) of the dependency.
|
|
message: extra message to print
|
|
Returns:
|
|
function: a function object
|
|
"""
|
|
err = "Cannot import '{}', therefore '{}' is not available.".format(dependency, func)
|
|
if message:
|
|
err = err + " " + message
|
|
|
|
if isinstance(dependency, (list, tuple)):
|
|
dependency = ",".join(dependency)
|
|
|
|
def _dummy(*args, **kwargs):
|
|
raise ImportError(err)
|
|
|
|
return _dummy
|
|
|