Library to manage plugins/extensions in your applications.
Project description
VERSION | DOWNLOADS | TESTS | COVERAGE |
---|---|---|---|
Goal and Philosophy
Pluginloader is a library to allow an easy way to load plugins. They can be managed by interfaces or just method validators.
Features
- Each plugin can be instanciated several times.
- Customizable filter to select if a class should be loaded as a plugin.
- Sandboxed: plugins cannot access the main program or other plugins by default, because they are loaded in isolated environments.
- Parameterizable context: Sometimes you need to pass some classes, functions or variables preloaded to the plugins. It is possible and easy.
Documentation
Installation
Two options: to install it in your system/project:
pip install pluginloader
Usage
You can load all plugins in a file, just doing:
loader = PluginLoader() plugins = loader.load_file('plugins.py')
With those simple lines you will have in the variable plugins
a dictionary with each class inside the plugins.py file as key and a factory as value.
Let’s see an example. Using the plugins.py file:
class Foo(object): pass
We can have an object of that class just with:
loader = PluginLoader() plugins = loader.load_file('plugins.py') instance1 = plugins['Foo']() instance2 = plugins['Foo']()
Simple and easy.
API
This is a simple module with a simple API. It just contains one class, PluginLoader
, with these public methods:
load_file(filename, onlyif=None, context=None)
Loads all plugins in a file.
Parameters:
- filename: File name to be loaded.
- onlyif: Value or function that will be called with each class found. It will skip the plugin if this function returns
False
. - context: Dict with the context where the method should be loaded in. It usually will map a class, function or variable name to the class, function or value in the main program, so it can be used within the plugin.
load_directory(path, onlyif=None, recursive=False))
Loads all plugins in a directory.
Parameters:
- path: Path where plugins are in.
- onlyif: Value or function that will be called with each class found. It will skip the plugin if this function returns
False
. - recursive: Boolean value to allow recursive read of directories.
- context: Dict with the context where the method should be loaded in.
Links will always be ignored.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size pluginloader-0.1.3.tar.gz (3.4 kB) | File type Source | Python version None | Upload date | Hashes View |