Best Flask open-source libraries and packages

Updated 3 months ago

Flask-Fullstack

Flask-Fullstack is an utils package for projects using a fleet of libs:

It is currently in deep development. Package is maintained by one programmer (hey that me!). In this readme you can find:

Install

Add the library to your project

pip install flask-fullstack  # via pip
poetry add flask-fullstack  # via poetry

Working with this repository

pip install poetry==1.5.1
poetry install

Quick Start

TBD

Features

Interfaces & Mixins

  • Database Interfaces: Implement these to later automate searching & authorization (see below)
  • Mixins with Decorators: Classes full of useful decorators to be used in less abstract context (see below)

RESTX improvements

  • New Marshals: form SQLAlchemy to Pydantic and then to the Response Marshaling
  • Upgraded Parsers: just a couple of commonly used parsers to .copy()
  • Resource Controller: RESTX's Namespace, but with access to useful decorators from mixins

New Marshals

New models, created in flask_fullstack.restx.marshals, are a translation layer between Pydantic & RESTX's own Models. These models also support being created from SQLAlchemy tables via Column reflection

For Pydantic, it only supports as fields: the keys of flask_fullstack.restx.marshals.type_to_field, lists and nesting other Pydantic models

For SQLAlchemy, it only supports converting columns of types in the keys of flask_fullstack.restx.marshals.column_to_field

SocketIO eXtensions

  • Understandable Events: Makes possible automatic documentation, data validation (with New Marshals or pure Pydantic) & emits not just by the event's name
  • Event Controller: Used to group events & provide access to useful decorators from mixins
  • Upgraded Structures: Propagating new events & other utils to Flask-SocketIO's Namespaces & the SocketIO class itself

Other Utils

  • SQLAlchemy Simplified: creating objects, parsing query results, deleting objects
  • New Columns: JSON with Schema or a RESTX Model to use in New Marshals
  • Named: If some class attribute needs to know the attribute name
  • Other: Utils for dicts, pydantic, pytest, unpacking RESTX responses, TypeEnum, etc
  • Core: For simplifying the common project setup steps

Future

TBA

Contributing

You are welcome to create issues and PRs in this repository. I'll get to them as soon as I have time!