Skip to main content

Create modular and extensible Flask applications

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask-modular-1.0.0.linux-x86_64.tar.gz (2.3 kB view details)

Uploaded Source

File details

Details for the file flask-modular-1.0.0.linux-x86_64.tar.gz.

File metadata

  • Download URL: flask-modular-1.0.0.linux-x86_64.tar.gz
  • Upload date:
  • Size: 2.3 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for flask-modular-1.0.0.linux-x86_64.tar.gz
Algorithm Hash digest
SHA256 6b0105c1e7ff683ea6fb3bcf503b6f2a01dc430c1ecb3b7f4e3f87d0e0ca2923
MD5 91a8017c0ed3d66ac970e2615b15bb35
BLAKE2b-256 8a55370479c688a3e2c9fed26a39db83c4364866f3c61c2fb6c2519a2d8891dd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page