in azure/Kqlmagic/dependencies.py [0:0]
def get_module(cls, module_name:str, package_name:str=None, version_location:str=None, dont_throw:bool=False, message:str=None):
try:
module = cls.installed_modules.get(module_name)
if module:
return module
elif module is False:
raise Exception("not_installed")
if cls.debug_disabled_packages and (package_name.replace("_", "-") in cls.debug_disabled_packages or package_name.replace("-", "_") in cls.debug_disabled_packages):
raise Exception("debug_disabled_package")
if cls.is_only_installed_packages and package_name.replace("_", "-") not in cls.install_package_names and package_name.replace("-", "_") not in cls.install_package_names:
debug_print(f">>> package {package_name} disabled by due to only install packages set to True")
raise Exception(f"package {package_name} disabled by due to only install packages set to True")
import importlib
module = importlib.import_module(module_name)
cls.installed_modules[module_name] = module
if package_name is not None and cls.installed_versions.get(package_name) is None:
version = None
if version_location is not None:
try:
if version_location == cls.VERSION_IN_MODULE:
version_module = module
else:
# version_location should refer to a module
version_module = cls.installed_modules.get(version_location)
if version_module is None:
version_module = importlib.import_module(version_location)
cls.installed_modules[version_location] = version_module
version = version_module.__version__
except:
try:
import pkg_resources # part of setuptools
version = pkg_resources.require(package_name)[0].version
except:
pass
cls.installed_versions[package_name] = version or "?.?.?"
return module
except Exception as error:
cls.installed_modules[module_name] = False
if f"{error}" == "debug_disabled_package":
debug_disabled_package_message = f"package '{package_name}' was disabled, because specified in enironment variable {Constants.MAGIC_CLASS_NAME_UPPER}__DEBUG_DISABLE_PACKAGES"
print(f"!!! Note: {debug_disabled_package_message} !!!")
message = f", {message}" if message else ""
message = f"{debug_disabled_package_message}{message}"
if dont_throw:
return None
item = cls.dependencies_dict.get(module_name)
message = f", {message}" if message else ""
import_error_message = cls._import_error_message(*item) if item else f"due to '{module_name}' module/package not installed"
import_error_message = f"{import_error_message}{message}"
raise NotImplementedError(import_error_message)