flask-modular
A simple way to create modular and extensible apps based on the Flask framework with full access the ecosystem of Flask extensions.
Why not just use a blueprint?
Modules are more extensible than the existing Flask blueprints, and allow modules to be hot-loaded, load from a configuration file and for code to be executed on load, for instance, to initialize another Flask extension. And it's all wrapped in a nice simple system with helpers and dependencies.
Getting Started
It's as simple as:
from flask import Flask
from flask_modular import ModuleManager
app = Flask(__name__)
manager = ModuleManager(app)
manager.load_modules()
Alternatively, you can initialize the manager on one or more applications
using the init_app method:
manager = ModuleManager()
manager.init_app(app)
Entrypoint
In your <module>/__init__.py or <module>.py there should be a function
called init_app which takes a the app as it's sole parameter, that
then will do all the work of initializing your module:
from flask_sqlalchemy import SQLAlchemy
from .controllers import model_controller
from .models import User
db = SQLAlchemy()
def init_app(app):
db.init_app(app)
db.create_all([User])
app.register_blueprint(model_controller)
This gives you all sorts of flexibility on what your module can do to your application once loaded without adding too many hard to remember custom hooks, methods and classes that do the same thing.
Dependencies
Modules can have dependencies, they will be automatically loaded before the module is loaded (and will be loaded if not specified). Useful for having a generic module that initializes some extension and some that then use that extension, or to extend an existing module:
__depends__ = ['core', 'db']
Configuration
Configuration is rather simple:
| Key | Description |
|---|---|
MODULES_PATH |
The path to load custom modules from |
MODULES_TO_LOAD |
A list of modules to load when calling load_modules |
License
Licensed under the MIT License.
Metadata
Release files for flask-modular 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| flask-modular-1.0.0.linux-x86_64.tar.gz | 2.3 kB | Details |
Release files / flask-modular-1.0.0.linux-x86_64.tar.gz
| Download URL | flask-modular-1.0.0.linux-x86_64.tar.gz |
|---|---|
| Size | 2.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6b0105c1e7ff683ea6fb3bcf503b6f2a01dc430c1ecb3b7f4e3f87d0e0ca2923
|
|
BLAKE2b-256 checksum How to use checksums |
8a55370479c688a3e2c9fed26a39db83c4364866f3c61c2fb6c2519a2d8891dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.7.0 requests/2.22.0 setuptools/54.2.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5
|