Skip to main content
       _
      (_)___  __  ___________  ___  __  __
     / / __ \/ / / / ___/ __ \/ _ \/ / / /
    / / /_/ / /_/ / /  / / / /  __/ /_/ /
 __/ /\____/\__,_/_/  /_/ /_/\___/\__, /
/___/ Flask blueprint management /____/
https://coveralls.io/repos/github/rbw0/flask-journey/badge.svg?branch=master https://travis-ci.org/rbw0/flask-journey.svg?branch=master https://badge.fury.io/py/flask-journey.svg https://img.shields.io/badge/License-MIT-green.svg

Description

Provides a clean, declarative way of importing and managing blueprints and creating routes. In addition to this, it also enables simple and consistent methods of (de)serialization and validation in blueprint enabled views.

It uses the standard Flask blueprint system, is modular and doesn’t depend on anything special.

This along with an auth component is pretty much all you need for a solid REST API foundation.

Highlights

  • Dead simple blueprint and route management that works with vanilla blueprints in Flask

  • Drop-in replacement for flask.Blueprint.route with support for Marshmallow

Installing

$ pip install flask-journey

Basic usage

This shows some super basic usage to give you an idea of how the extension works.

Check out the examples directory for actually usable examples.

The route decorator

api/users/schemas.py

These are regular marshmallow type schemas

from marshmallow import Schema, fields, validate

class QuerySchema(Schema):
    first_name = fields.String(required=False)
    last_name = fields.String(required=False)


class UserSchema(Schema):
    id = fields.Integer(required=True)
    first_name = fields.String(required=True)
    last_name = fields.String(required=True)
    user_name = fields.String(required=True)

api/users/views.py

The flask_journey.route decorator is used with standard Flask blueprints and enables easy (de)serialization and validation with the help of the Marshmallow library.

from flask import Blueprint
from flask_journey import route
from db import create_user, get_user

from .schema import UserSchema

bp = Blueprint('users', __name__)

@route(bp, '/', methods=['GET'], query_schema=QuerySchema(strict=True), marshal_with=UserSchema(many=True))
def get_many(__query=None):
    return get_users(**__query['data'])


@route(bp, '/', methods=['POST'], body_schema=UserSchema(strict=True), marshal_with=UserSchema())
def create(__body=None):
    return create_user(**__body['data'])

Blueprint / Route management

This component of Flask-Journey is primarily for larger applications using factories, but works in any type of Flask application.

api/bundles.py

from flask_journey import BlueprintBundle
from .users import bp as users_bp
from .groups import bp as groups_bp

v1 = BlueprintBundle(path='/api/v1')
v1.attach_bp(users_bp, description='Users API')
v1.attach_bp(groups_bp)

api/__init__.py

from flask import Flask
from flask_journey import Journey

from .bundles import v1

app = Flask(__name__)

journey = Journey()
journey.attach_bundle(v1)

journey.init_app(app)

print(journey.routes_simple)

Compatibility

  • Python 2 and 3

  • Flask > 0.7

Author

Created by Robert Wikman <rbw@vault13.org> in 2018

JetBrains

Thank you Jetbrains for creating pycharm and for providing me with free licenses

Download files

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

Source Distribution

flask-journey-0.1.1.tar.gz (6.2 kB view details)

Uploaded Source

File details

Details for the file flask-journey-0.1.1.tar.gz.

File metadata

  • Download URL: flask-journey-0.1.1.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for flask-journey-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b83e158f633eebaa16d322b4e7c0d53cc0c591e0dc86331987f14ded46e9a275
MD5 2238cbcffa7908d9b77dc886aa2f0626
BLAKE2b-256 7f2a51e2554115f9a29c0808260dd4ff99cd73d6b7b860b0b711c0e832f5986c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.4

1 file

0.1.3

1 file

0.1.2

1 file

This release

0.1.1 This release

1 file

0.1.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page