Skip to content
/ miniflask Public

Replacing ”ifs“, but fancy. — Miniflask is a small research-oriented hook-based plugin engine.

License

Notifications You must be signed in to change notification settings

da-h/miniflask

Repository files navigation

MiniFlask

python-3 badge python-3 badge CI build status

Miniflask is a small research-oriented plugin-engine for python.

A long time ago in a galaxy full of plugin-engines ...

Quick Start

For a quick look into miniflask, just install it using

pip install miniflask

Short Example

Module Definition
Let's start a new project first by creating a new directory:

> ls
main.py
modules/
    module1/__init__.py
    module2/__init__.py
    module1/__init__.py

Let's define a simple module, modules/module1/__init__.py:

def main(state, event):
    print("main event called by module1")

def register(mf):
    mf.register_event('main', main, unique=False)

Let's define another module, modules/module2/__init__.py:

def main(state, event):
    print("main event called by module2")
    print("it uses a variable var:", state["var"])

def register(mf):
    mf.register_defaults({
        "var": 42
    })
    mf.register_event('main', main, unique=False)

Our main.py looks like this:

import miniflask

# initialize miniflask
mf = miniflask.init(".modules")
mf.run()

Usage:
Now, we can use our program in the following ways:

> python main.py
There is nothing to do.
> python main.py module1
main event called by module1
> python main.py module2,module1
main event called by module2
it uses a variable var: 42
main event called by module1
> python main.py module2,module1 --module2.var 9001
main event called by module2
it uses a variable var: 9001
main event called by module1

Contributing

  1. Fork it!
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request

License

License: MIT - See LICENSE for details.

About

Replacing ”ifs“, but fancy. — Miniflask is a small research-oriented hook-based plugin engine.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages