Skip to content
/ pluginmgr Public

lightweight python plugin system supporting config inheritance

License

Notifications You must be signed in to change notification settings

20c/pluginmgr

Folders and files

NameName
Last commit message
Last commit date
Nov 18, 2024
Oct 25, 2024
Oct 25, 2024
Oct 25, 2024
Nov 1, 2020
Mar 19, 2017
Oct 25, 2024
Mar 19, 2017
Oct 25, 2024
Oct 25, 2024
Jun 24, 2016
Jun 24, 2016
Mar 21, 2022
Oct 25, 2024
Oct 25, 2024
Oct 25, 2024

Repository files navigation

pluginmgr

PyPI PyPI Tests Codecov Language grade: Python

lightweight python plugin system supporting config inheritance

To use

There is a full example at https://github.com/20c/pluginmgr/tree/master/tests/pluginmgr_test

Create the manager, for example in a module __init__.py file

import pluginmgr

# this is the namespace string that import uses
namespace = 'pluginmgr_test.plugins'

# directories to look in, string or list of strings
searchpath = 'path/to/search/in'

# determines if this should create a blank loader to import through. This
# should be enabled if there isn't a real module path for the namespace and
# disabled for sharing the namespace with static modules
# default is False
create_loader = False

plugin = pluginmgr.PluginManager(namespace, searchpath, create_loader)

Create and register a plugin, note the filename needs to be the same as registered name

from pluginmgr_test import plugin


# register a plugin named mod0
@plugin.register('mod0')
class Mod0(pluginmgr.PluginBase):
    pass

See the dict containing all registered plugins

from pluginmgr_test import plugin

# dict of all registered plugins
print(plugin.registry)

About

lightweight python plugin system supporting config inheritance

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages