Skip to content

gmjosack/annex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

annex

Summary

Annex provides assistance with developing plugin-based tools.

With Annex you can load and reload plugins from various python modules without the requirement that they exist on the PYTHONPATH.

Example Usage

In your project you would define a base class from which all plugins for project would subclass.

base_plugin.py
class BaseTestPlugin(object):
    def run(self, *args, **kwargs):
        raise NotImplementedError()
example_plugin.py
from base_plugin import BaseTestPlugin

class PrinterPlugin(BaseTestPlugin):
    def run(self, *args, **kwargs):
        print args, kwargs
foo.py
from base_plugin import BaseTestPlugin
from annex import Annex

plugins = Annex(BaseTestPlugin, ["/path/to/plugins"])

for plugin in plugins:
    plugin.run("foo", bar="baz")

About

Simple Plugin System for Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages