Easier way to manage your project addons
Project description
Relative Addons System
This is a special system that allows you to manage your addons in runtime.
The library has caching that allows it to work faster
Definitions
Addon - directory that contains addon.json
and __init__.py
addon.json is a json
file that describes addon and must contain name
, author
,
description
and version
(strings)
Usage examples
from pathlib import Path
from RelativeAddonsSystem import RelativeAddonsSystem, Addon, AddonMeta
# Init addons system
system = RelativeAddonsSystem(Path(__file__).parent / "addons", auto_install_requirements=True)
# return list of Addon objects
addons: list[Addon] = system.get_all_addons()
if len(addons) < 1:
print("No addons found")
else:
for addon in addons:
# loaded meta(AddonMeta) from ADDON_DIR/addon.json
meta: AddonMeta = addon.meta
print("Working with", meta.name, "at", addon.path.absolute())
# Check dependencies
if not addon.check_requirements(alert=False):
print("Installing addon dependencies")
# Install dependencies
installed: list[str] = addon.install_requirements()
print("Successfully installed addon dependencies (", ", ".join(installed), ")")
else:
print("Addon dependencies already satisfied")
# Get addon module
module = addon.module # ADDON_DIR / __init__.py module
...
In this example, we have listed all addons and installed their dependencies if they were not already installed.
We can also disable or enable addons:
from pathlib import Path
from RelativeAddonsSystem import RelativeAddonsSystem, Addon
# Init addons system
system = RelativeAddonsSystem(Path(__file__).parent / "addons", auto_install_requirements=True)
addons: list[Addon] = system.get_enabled_addons() # get all enabled addons
if len(addons) > 0:
addon: Addon = addons[0] # first addon from list
addon.disable() # disable addon
...
addon.enable() # enable addon
Or import and re-import the module (useful when we have updated your addon):
from pathlib import Path
from RelativeAddonsSystem import RelativeAddonsSystem, Addon
# Init addons system
system = RelativeAddonsSystem(Path(__file__).parent / "addons", auto_install_requirements=True)
addons: list[Addon] = system.get_enabled_addons() # get all enabled addons
if len(addons) > 0:
addon: Addon = addons[0] # first addon from list
module = addon.module
... # Work with module
# Reimport module
module = addon.reload_module()
... # Work with module
We can also change the metadata in your code:
from pathlib import Path
from RelativeAddonsSystem import RelativeAddonsSystem, Addon, AddonMeta
# Init addons system
system = RelativeAddonsSystem(Path(__file__).parent / "addons", auto_install_requirements=True)
addons: list[Addon] = system.get_enabled_addons() # get all enabled addons
if len(addons) > 0:
addon: Addon = addons[0] # first addon from list
meta: AddonMeta = addon.meta
meta.set("version", "1.2")
meta.save()
Or set specific data into the addon's storage:
from pathlib import Path
from RelativeAddonsSystem import RelativeAddonsSystem, Addon
from RelativeAddonsSystem.utils import Storage
# Init addons system
system = RelativeAddonsSystem(Path(__file__).parent / "addons", auto_install_requirements=True)
addons: list[Addon] = system.get_enabled_addons() # get all enabled addons
if len(addons) > 0:
addon: Addon = addons[0] # first addon from list
# Loaded the ADDON_DIR/ADDON_NAME-storage.json file
storage: Storage = addon.get_storage()
storage.set("api_version", "1.2")
storage.save()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file relative-addons-system-2.5.0.tar.gz
.
File metadata
- Download URL: relative-addons-system-2.5.0.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dbc48577bed37657aa1853ca19bb95ee56ca1b23dea3c5bee0d87cdc17e85717 |
|
MD5 | 56b8ea33f2df4f36b00fbaf4fbdac9d7 |
|
BLAKE2b-256 | b0591fe651918d2e1a8f78e33376da5b9d840030b60613c74e7e1b253649c4aa |
Provenance
File details
Details for the file relative_addons_system-2.5.0-py3-none-any.whl
.
File metadata
- Download URL: relative_addons_system-2.5.0-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f22f572e7ebecacdf289b0ded570bc55dff64ee4064005775f16862bc93f17e |
|
MD5 | aaa098669bbf5bffd7ca129d37de6eb3 |
|
BLAKE2b-256 | 7fcbb97a0f0541260b7da4299336f90b042edf7277aaa14b51d2a2a73e5a368f |