Source code for openalea.phenomenal.optional_deps
import importlib
from importlib.metadata import metadata
this_package = 'openalea.phenomenal'
[docs]
class OptionalDependencyError(ImportError):
def __init__(self, package_name: str):
extras = extra_map(this_package)
extra_name = extras.get(package_name.split('.')[0], 'not_defined_as_extra')
message = (
f"The '{extra_name}' extra feature is required for the optional dependency '{package_name}'.\n"
f"Install it with: pip install {this_package}[{extra_name}]"
)
super().__init__(message)
[docs]
def require_dependency(package_name: str):
"""
User-friendly import of extra deps
Args:
package_name: the name of the extra package required
"""
try:
mod = importlib.import_module(package_name)
except ImportError:
raise OptionalDependencyError(package_name)
return mod