pip3 install modulehandler
Considering this folder tree
tests_import_handler
├── addons
│ └── m1
│ ├── __init__.py
│ ├── manifest.json
│ └── README.md
├── m2
│ ├── __init__.py
│ └── manifest.json
└── m3.py
import ModuleHandler
from pathlib import Path
registry = ModuleHandler.ModuleRegistry()
tests_import_handler = Path("tests_import_handler").resolve()
addons = tests_import_handler.joinpath("addons")
m2 = tests_import_handler.joinpath("m2")
m3 = tests_import_handler.joinpath("m3.py")
# Register won't load
registry.register_search_dir(addons)
registry.register_module(m2)
registry.register_module(m3)
# load modules individually
m3 = registry.load("m3") # ignore if already loader with noreload=True
# load all modules
registry.load_all() # ignore if already loader with noreload=True
# access loaded module
m1 = registry["m1"]
m4 = registry.get("m4") # return None
# register + load
m2 = registry.import_module(m2)
# import from search paths if not already loaded
m1 = registry.imports("m1")
# get readme as html
registry.description("m1")
# get module absolute path
registry.path("m1")
Nb:
- This won't change sys search paths nor add modules to sys.modules:
"m1" in sys.modules # False
- loading only replace module in registry but this won't propagate to copy of old module.
- Currently, the configuration filename is not easily editable, same for configuration validation. It may be editable but still with current behaviour kept as default.