def get_module()

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)