mirror of
https://gitflic.ru/project/maks1ms/ocab.git
synced 2025-11-28 10:21:55 +03:00
26 lines
815 B
Python
26 lines
815 B
Python
import importlib
|
|
import os
|
|
|
|
from ocab_core.modules_system.loaders.fs_loader import FSLoader
|
|
from ocab_core.modules_system.loaders.unsafe_fs_loader import UnsafeFSLoader
|
|
|
|
|
|
def get_module_directory(module_name):
|
|
spec = importlib.util.find_spec(module_name)
|
|
if spec is None:
|
|
raise ImportError(f"Module {module_name} not found")
|
|
module_path = spec.origin
|
|
if module_path is None:
|
|
raise ImportError(f"Module {module_name} has no origin path")
|
|
return os.path.dirname(module_path)
|
|
|
|
|
|
ocab_modules_path = get_module_directory("ocab_modules")
|
|
|
|
|
|
def module_loader(namespace: str, module_name: str, safe=True):
|
|
if not safe:
|
|
return UnsafeFSLoader(f"{ocab_modules_path}/{namespace}/{module_name}")
|
|
else:
|
|
return FSLoader(f"{ocab_modules_path}/{namespace}/{module_name}")
|